]> rtime.felk.cvut.cz Git - frescor/fwp.git/blob - fwp/tests/timing/fwp-timing.pl
fwp-timing: Final version and a simple gnuplot script
[frescor/fwp.git] / fwp / tests / timing / fwp-timing.pl
1 #!/usr/bin/perl -w
2
3 $omk_rules_dir=qx'
4 old_pwd=""
5 while [ ! -e Makefile.rules ]; do
6        if [ "$old_pwd" = `pwd`  ]; then 
7                echo "Makefile.rules has not been found in this or parent directory" >&2; exit 1; 
8        else
9                old_pwd=`pwd`; 
10                cd -L .. 2>/dev/null; 
11        fi; 
12 done;
13 pwd';
14 chomp $omk_rules_dir;
15
16 sub catch_zap {
17     my $signame = shift;
18     die "Somebody sent me a SIG$signame";
19 }
20 $SIG{INT} = \&catch_zap;
21 $SIG{TERM} = \&catch_zap;
22
23 @srcdst = (
24     "-s 192.168.1.10 -d 192.168.1.11",
25     "-s 192.168.1.11 -d 192.168.1.12",
26     "-s 192.168.1.12 -d 192.168.1.13",
27     "-s 192.168.1.13 -d 192.168.1.10",
28 );
29
30 $max=10;
31 $max=$ARGV[0] if (scalar(@ARGV));
32 my @results=();
33 for($i=1; $i<=$max; $i++) {
34     $|++;                       # Autoflush
35     printf "%3d: ", $i;
36     $|--;
37     my @streams = ();
38     for ($j=0; $j<@srcdst; $j++) {
39         use integer;
40         my $n = ($i-1) / @srcdst + ((($j % @srcdst) <= (($i-1) % @srcdst))  ? 1 : 0);
41         $streams[$j] = $srcdst[$j]." -n $n" if ($n);
42     }
43     $cmd="$omk_rules_dir/_compiled/bin-tests/fwp-timing -l 2 -q -c 1000 ".join(" -/ ", @streams);
44     #print "$cmd\n";
45     $out=`$cmd`;
46     print $out;
47     my @result;
48     if ($? == 0) {
49         @result = $out =~ /Max: *([0-9.]+).*Packetloss: *([0-9.]+).*90%: *([0-9.]+)/;
50     } else {
51         @result = ();
52     }
53     $results[$i] = \@result;
54 }
55
56 # Print data for gnuplot
57 open(DAT, ">", "fwp-timing.dat");
58 for($i=1; $i<=$max; $i++) {
59     my $line = "$i ".join(" ", @{$results[$i]})."\n";
60     print DAT $line;
61 }
62 close DAT;