#!/usr/bin/perl # # IOMeter results parser, 2005, Paul Venezia # # Simply run this script in the directory containing the CSV output of IOMeter. # Results are organized by filename. # # use File::Glob ':glob'; @files = <*.csv>; my %results; my $parmcount = 1; my $lcount = 0; foreach my $file (@files) { undef @lines; open (LOG, "<$file"); my @lines = ; foreach my $line (@lines) { $lcount++; if ($line =~ /'Access\sspecification\sname.+/) { $line = @lines[$lcount]; $line =~ /(.+),\d/; #%results->{$file}->{test} = "$1"; $thistest = "$1"; } if ($line =~ /ALL,All.+/) { @thisres = (split(",", $line)); # If you need more columns, add them here and increase the COLSPAN below %results->{$file}->{$thistest}{'IO/ps'} = @thisres[6]; %results->{$file}->{$thistest}{'ReadIO/ps'} = @thisres[7]; %results->{$file}->{$thistest}{'WriteIO/ps'} = @thisres[8]; %results->{$file}->{$thistest}{'MB/ps'} = @thisres[9]; %results->{$file}->{$thistest}{'ReadMB/ps'} = @thisres[10]; %results->{$file}->{$thistest}{'WriteMB/ps'} = @thisres[11]; %results->{$file}->{$thistest}{'Transactions/ps'} = @thisres[12]; %results->{$file}->{$thistest}{'Connections/ps'} = @thisres[13]; %results->{$file}->{$thistest}{CPU} = @thisres[45]; } } $parmcount = 0; $lcount = 0; } sub swrite { my $fmt = shift(@_); $^A = ''; formline($fmt,@_); return $^A; } my %output; foreach my $logfile ( sort keys %results ) { #$TXT .= "$logfile: \n"; $header = 1; foreach $test ( sort keys %{$results{$logfile}} ) { foreach $tsize ( sort keys %{$results{$logfile}{$test}} ) { $output{$test}{$logfile}{$tsize} = swrite("@<<<<<<<<<<<<<<<<<<", $results{$logfile}{$test}{$tsize}); } } } # Output $TXT .= " IOMeter Test Results

IOMeter Test Results


"; foreach $testsize ( map { $_->[1] } sort { $a->[0] <=> $b->[0] } map { [ /(\d+)/, $_ ] } keys %output ) { $TXT .= "
\n"; $header = 1; foreach $unit ( sort keys %{$output{$testsize}} ) { if ($header) { $TXT .= ""; foreach $test ( sort keys %{$output{$testsize}{$unit}} ) { $TXT .= ""; } undef $header; } $testunit = $unit; $testunit =~ s/\.csv//; my ($te, $bgcolor); if (!defined $cs) { $bgcolor = "#DDDDDD"; $cs = 1; } else { $bgcolor = "#EEEEEE"; undef $cs; }; $TXT .= ""; foreach $test ( sort keys %{$output{$testsize}{$unit}} ) { $TXT .= "
$testsize
Target$test
$testunit$output{$testsize}{$unit}{$test}"; } $TXT .= "\n"; } $TXT .= "

\n"; } $TXT .= "\n"; print $TXT;