#!/usr/bin/perl -w use Getopt::Std; use File::Basename; # Default values $SET_TERM_TEMPLATE='set term push; set term x11 enhanced; set term wxt enhanced; set term pop'; $DELAY_BOUND="[]"; $MULTIPDF_FILENAME="all.pdf"; # Process command line options my %opt; getopts('bd:enso:pP', \%opt); $PLOT_BOTH_DIRECTIONS=1 if $opt{'b'}; $DELAY_BOUND="[0:".$opt{'d'}."]" if $opt{'d'}; $SET_TERM_TEMPLATE='set term postscript color eps enhanced; set output "${FILE}.eps"' if $opt{'e'}; $SET_TERM_TEMPLATE='set term png enhanced; set output "${FILE}.png"' if $opt{'n'}; $SET_TERM_TEMPLATE='set term svg enhanced; set output "${FILE}.svg"' if $opt{'s'}; $MULTIPDF_FILENAME=$opt{'o'} if $opt{'o'}; if ($opt{'p'}) { $SET_TERM_TEMPLATE='set term postscript color landscape enhanced'; $PDF_OUTPUT=1; } if ($opt{'P'}) { $SET_TERM_TEMPLATE='set term postscript color landscape enhanced'; $MULTIPLE_GRAPHS_IN_PDF=1; $GNUPLOT_CMD_FILE="plot_commands.$$"; unlink ${GNUPLOT_CMD_FILE}; } if ($#ARGV < 0 && -r "delay_stats.dat") {$ARGV[0]="delay_stats.dat";} # Process the data files and plot graph(s) foreach $dat_file (@ARGV) { ($FILE, , ) = fileparse($dat_file, (".dat")); # Get labels from data file $COMMAND=""; $STREAMS=""; open F, $dat_file; while () { if (/wclient.*/) { $_=$&; s/ -o [^ ]*//; $COMMAND="Results of: $_"; #$COMMAND="Results of: grep -o 'wclient.*'|sed -e 's/ -o [^ ]*//' -e 's/ [^ ]* ?$//')" } elsif (/^#[^#] */) { $STREAMS .= "$'"; } } close F; $STREAMS =~ s/\n/\\n/g; if ($MULTIPLE_GRAPHS_IN_PDF) { open CMD, ">>$GNUPLOT_CMD_FILE"; } elsif ($PDF_OUTPUT) { open CMD, "| gnuplot | ps2pdf - ${FILE}.pdf"; } else { open CMD, "| gnuplot -persist"; } # close CMD; # open CMD, ">&STDOUT"; $SET_TERM = $SET_TERM_TEMPLATE; $SET_TERM =~ s/\${FILE}/$FILE/; print CMD qq/ ${SET_TERM} set xlabel "Response-Time [ms]" set ylabel "Cumulative % of packets" set key right bottom nobox set style data linespoints #set logscale x set grid set size 1,0.8 unset label set label "${COMMAND}" noenhanced at graph 0,1.3 set label "${STREAMS}" noenhanced at graph 0,1.2 font "Helvetica,9" set style line 1 lt 1 lc rgb "red" set style line 2 lt 1 lc rgb "green" set style line 3 lt 1 lc rgb "blue" set style line 4 lt 1 lc rgb "magenta" set style line 5 lt 2 lc rgb "red" set style line 6 lt 2 lc rgb "green" set style line 7 lt 2 lc rgb "blue" set style line 8 lt 2 lc rgb "magenta" set style line 9 lt 3 lc rgb "red" set style line 10 lt 3 lc rgb "green" set style line 11 lt 3 lc rgb "blue" set style line 12 lt 3 lc rgb "magenta" /; print CMD qq/plot $DELAY_BOUND [0.01:100]\\ "${FILE}.dat" index 0 with linespoints ls 1 title "AC\\\\_VO",\\ "${FILE}.dat" index 1 with linespoints ls 2 title "AC\\\\_VI",\\ "${FILE}.dat" index 2 with linespoints ls 3 title "AC\\\\_BE",\\ "${FILE}.dat" index 3 with linespoints ls 4 title "AC\\\\_BK"/; if ($PLOT_BOTH_DIRECTIONS) { print CMD qq/,\\ "${FILE}.dat" index 0 using 1:3 with lines ls 5 title "AC\\\\_VO cs",\\ "${FILE}.dat" index 1 using 1:3 with lines ls 6 title "AC\\\\_VI cs",\\ "${FILE}.dat" index 2 using 1:3 with lines ls 7 title "AC\\\\_BE cs",\\ "${FILE}.dat" index 3 using 1:3 with lines ls 8 title "AC\\\\_BK cs",\\ "${FILE}.dat" index 0 using 1:4 with lines ls 9 title "AC\\\\_VO sc",\\ "${FILE}.dat" index 1 using 1:4 with lines ls 10 title "AC\\\\_VI sc",\\ "${FILE}.dat" index 2 using 1:4 with lines ls 11 title "AC\\\\_BE sc",\\ "${FILE}.dat" index 3 using 1:4 with lines ls 12 title "AC\\\\_BK sc" /; } else { print CMD "\n"; } close CMD; } if ($MULTIPLE_GRAPHS_IN_PDF) { system("gnuplot $GNUPLOT_CMD_FILE|ps2pdf - $MULTIPDF_FILENAME"); unlink ${GNUPLOT_CMD_FILE}; }