]> rtime.felk.cvut.cz Git - frescor/fwp.git/blob - wme_test/plot
Merge branch 'martin'
[frescor/fwp.git] / wme_test / plot
1 #!/usr/bin/perl -w
2 use Getopt::Std;
3 use File::Basename;
4
5 # Default values
6 $SET_TERM_TEMPLATE='set term push; set term x11 enhanced; set term wxt enhanced; set term pop';
7 $DELAY_BOUND="[]";
8 $MULTIPDF_FILENAME="all.pdf";
9
10 # Process command line options
11 my %opt;
12 getopts('bd:emnso:pPt:', \%opt);
13 $PLOT_SINGLE_EXPERIMENT = $opt{'m'} ? 0 : 1;
14 $EXPERIMENT_TITLES = $opt{'t'};
15 $PLOT_BOTH_DIRECTIONS=1 if $opt{'b'};
16 $
17 $DELAY_BOUND="[0:".$opt{'d'}."]" if $opt{'d'};
18 $SET_TERM_TEMPLATE='set term postscript color eps enhanced; set output "${FILE}.eps"' if $opt{'e'};
19 $SET_TERM_TEMPLATE='set term png enhanced; set output "${FILE}.png"' if $opt{'n'};
20 $SET_TERM_TEMPLATE='set term svg enhanced; set output "${FILE}.svg"' if $opt{'s'};
21 $MULTIPDF_FILENAME=$opt{'o'} if $opt{'o'};
22 if ($opt{'p'}) {
23     $SET_TERM_TEMPLATE='set term postscript color landscape enhanced';
24     $PDF_OUTPUT=1;
25 }
26 if ($opt{'P'}) {
27     $SET_TERM_TEMPLATE='set term postscript color landscape enhanced';
28     $MULTIPLE_GRAPHS_IN_PDF=1;
29     $GNUPLOT_CMD_FILE="plot_commands.$$";
30     unlink ${GNUPLOT_CMD_FILE};
31 }
32
33 if ($#ARGV < 0 && -r "delay_stats.dat") {$ARGV[0]="delay_stats.dat";}
34
35 # Process the data files and plot graph(s)
36 foreach $dat_file (@ARGV) {
37     ($FILE, , ) = fileparse($dat_file, (".dat"));
38
39     # Get labels from data file
40     $COMMAND="";
41     $STREAMS="";
42     open F, $dat_file;
43     while (<F>) {
44         if (/wclient.*/) {
45             $_=$&;
46             s/ -o [^ ]*//g;
47             $COMMAND="Results of: $_";
48             #$COMMAND="Results of: grep -o 'wclient.*'|sed -e 's/ -o [^ ]*//' -e 's/ [^ ]* ?$//')"
49         } elsif (/^#[^#] */) {
50             $STREAMS .= "$'";
51         }
52         
53         
54     }
55     close F;
56     $STREAMS =~ s/\n/\\n/g;
57
58     if ($MULTIPLE_GRAPHS_IN_PDF) {
59         open CMD, ">>$GNUPLOT_CMD_FILE";
60     } elsif ($PDF_OUTPUT) {
61         open CMD, "| gnuplot | ps2pdf - ${FILE}.pdf";
62     } else {
63         open CMD, "| gnuplot -persist";
64     }
65 #     close CMD;
66 #     open CMD, ">&STDOUT";
67     $SET_TERM = $SET_TERM_TEMPLATE;
68     $SET_TERM =~ s/\${FILE}/$FILE/;
69
70     print CMD qq/
71 ${SET_TERM}
72 set xlabel "Response-Time [ms]"
73 set ylabel "Cumulative % of packets"
74 set key right bottom nobox
75 set style data linespoints
76 #set logscale x
77 set grid
78 set size 1,0.8
79 unset label
80 set label "${COMMAND}" noenhanced at graph 0,1.3
81 set label "${STREAMS}" noenhanced at graph 0,1.2 font "Helvetica,9"
82 /;
83     if ($PLOT_SINGLE_EXPERIMENT) {
84         print CMD qq/
85 set style line 1  lt 1 lc rgb "red"
86 set style line 2  lt 1 lc rgb "green"
87 set style line 3  lt 1 lc rgb "blue"
88 set style line 4  lt 1 lc rgb "magenta"
89 set style line 5  lt 2 lc rgb "red" lw 2
90 set style line 6  lt 2 lc rgb "green" lw 2
91 set style line 7  lt 2 lc rgb "blue" lw 2
92 set style line 8  lt 2 lc rgb "magenta" lw 2
93 set style line 9  lt 3 lc rgb "red" lw 2
94 set style line 10 lt 3 lc rgb "green" lw 2
95 set style line 11 lt 3 lc rgb "blue" lw 2
96 set style line 12 lt 3 lc rgb "magenta" lw 2
97 /;
98         print CMD qq/plot $DELAY_BOUND [0.01:100]\\
99      "${FILE}.dat" index 0 with linespoints ls 1 title "AC\\\\_VO",\\
100      "${FILE}.dat" index 1 with linespoints ls 2 title "AC\\\\_VI",\\
101      "${FILE}.dat" index 2 with linespoints ls 3 title "AC\\\\_BE",\\
102      "${FILE}.dat" index 3 with linespoints ls 4 title "AC\\\\_BK"/;
103
104         if ($PLOT_BOTH_DIRECTIONS) {
105             print CMD qq/,\\
106      "${FILE}.dat" index 0 using 1:3 with lines ls 5  title "AC\\\\_VO cs",\\
107      "${FILE}.dat" index 1 using 1:3 with lines ls 6  title "AC\\\\_VI cs",\\
108      "${FILE}.dat" index 2 using 1:3 with lines ls 7  title "AC\\\\_BE cs",\\
109      "${FILE}.dat" index 3 using 1:3 with lines ls 8  title "AC\\\\_BK cs",\\
110      "${FILE}.dat" index 0 using 1:4 with lines ls 9  title "AC\\\\_VO sc",\\
111      "${FILE}.dat" index 1 using 1:4 with lines ls 10 title "AC\\\\_VI sc",\\
112      "${FILE}.dat" index 2 using 1:4 with lines ls 11 title "AC\\\\_BE sc",\\
113      "${FILE}.dat" index 3 using 1:4 with lines ls 12 title "AC\\\\_BK sc"
114 /;
115         } else {
116             print CMD "\n";
117         }
118     } else {
119         # Multiple experiments in a single plot
120         print CMD qq/
121 set style line 1  lt 1 lc rgb "red" lw 2
122 set style line 2  lt 1 lc rgb "green" lw 2
123 set style line 3  lt 1 lc rgb "blue" lw 2
124 set style line 4  lt 1 lc rgb "magenta" lw 2
125 set style line 5  lt 2 lc rgb "red" lw 2
126 set style line 6  lt 2 lc rgb "green" lw 2
127 set style line 7  lt 2 lc rgb "blue" lw 2
128 set style line 8  lt 2 lc rgb "magenta" lw 2
129 set style line 9  lt 3 lc rgb "red" lw 2
130 set style line 10 lt 3 lc rgb "green" lw 2
131 set style line 11 lt 3 lc rgb "blue" lw 2
132 set style line 12 lt 3 lc rgb "magenta" lw 2
133 /;
134         my ($ls1, $ls2, $ls3, $ls4) = (1,2,3,4);
135         my @titles = split(/;/, $EXPERIMENT_TITLES);
136         my $experiment = 0;
137         my $t=$titles[$experiment];
138         $t = '' unless $t;
139         print CMD qq/plot $DELAY_BOUND [0.01:100]\\
140      "${FILE}.dat" index 0 with lines ls $ls1 title "AC\\\\_VO $t",\\
141      "${FILE}.dat" index 1 with lines ls $ls2 title "AC\\\\_VI $t",\\
142      "${FILE}.dat" index 2 with lines ls $ls3 title "AC\\\\_BE $t",\\
143      "${FILE}.dat" index 3 with lines ls $ls4 title "AC\\\\_BK $t"/;
144         foreach $dat_file (@ARGV[1,2]) {
145             last if (!defined $dat_file);
146             $experiment++;
147             $t=$titles[$experiment];
148             $t = '' unless $t;
149             ($FILE, , ) = fileparse($dat_file, (".dat"));
150             ($ls1, $ls2, $ls3, $ls4) = map($_+4, ($ls1, $ls2, $ls3, $ls4));
151             print CMD qq/,\\
152      "${FILE}.dat" index 0 with lines ls $ls1 title "AC\\\\_VO $t",\\
153      "${FILE}.dat" index 1 with lines ls $ls2 title "AC\\\\_VI $t",\\
154      "${FILE}.dat" index 2 with lines ls $ls3 title "AC\\\\_BE $t",\\
155      "${FILE}.dat" index 3 with lines ls $ls4 title "AC\\\\_BK $t"/;
156         }
157         print CMD "\n";
158         last;
159     }
160
161     close CMD;
162 }
163
164 if ($MULTIPLE_GRAPHS_IN_PDF) {
165     system("gnuplot $GNUPLOT_CMD_FILE|ps2pdf - $MULTIPDF_FILENAME");
166     unlink ${GNUPLOT_CMD_FILE};
167 }