create graphviz dot file
authorDobrica Pavlinusic <dpavlin@rot13.org>
Mon, 25 May 2009 22:11:20 +0000 (22:11 +0000)
committerDobrica Pavlinusic <dpavlin@rot13.org>
Mon, 25 May 2009 22:11:20 +0000 (22:11 +0000)
git-svn-id: svn://svn.rot13.org/sysadmin-cookbook@100 191e9f34-6774-4a6d-acfc-7664dacd4a2a

recepies/netpipe-tcp/np2graphviz.pl

index e546c25..e877e6e 100755 (executable)
@@ -3,6 +3,10 @@
 use warnings;
 use strict;
 
+my $graph;
+
+my ($max,$min);
+
 foreach my $file ( glob '*/*.np' ) {
 
        my $direction = $file;
@@ -15,7 +19,40 @@ foreach my $file ( glob '*/*.np' ) {
        my ( $size, $speed, $rtt ) = split(/\s+/, $line);
 
        warn "$from -> $to | $size | $speed | $rtt\n";
-}
 
+       my $len = int($speed / 100);
+
+       $graph->{ qq|"$from" -> "$to"| } = {
+               size => $size,
+               speed => $speed,
+               rtt => $rtt,
+       };
+
+       $min ||= $speed;
+       $min = $speed if $speed < $min;
 
+       $max ||= $speed;
+       $max = $speed if $speed > $max;
+
+}
+
+warn "# speed $min ... $max\n";
+
+print qq|
+digraph "netpipe" {
+|,
+join("\n", map {
+       my $node = $_;
+       my $speed = $graph->{$_}->{speed};
+       my $c = 'ff0000';
+       $c = '00ff00' if ( $speed /  100 ) > 1;
+       $c = '0000ff' if ( $speed / 1000 ) > 1;
+       $c = '8888ff' if ( $speed / 1000 ) > 2;
+       my $label = $speed;
+       $label =~ s/\.\d+//;
+       qq|$node [ label="$label",color="#$c",len=$speed ]|;
+} keys %$graph),
+qq|
+}
+|;