--- recepies/netpipe-tcp/np2graphviz.pl 2010/02/20 16:32:01 165 +++ recepies/netpipe-tcp/np2graphviz.pl 2010/02/21 14:33:05 172 @@ -22,11 +22,20 @@ my $len = int($speed / 100); - $graph->{ qq|"$from" -> "$to"| } = { - size => $size, - speed => $speed, - rtt => $rtt, - }; + my $rev = qq|"$to" -> "$from"|; + + # make edge bi-directional if speed difference is less then 10% + if ( $graph->{$rev} && abs($graph->{$rev}->{speed}->[0] - $speed) < ($speed/10) ) { + $graph->{$rev}->{speed}->[1] = int($speed); + $graph->{$rev}->{dir} = 'both'; + } else { + $graph->{ qq|"$from" -> "$to"| } = { + size => $size, + speed => [ int($speed) ], + rtt => $rtt, + dir => 'forward', + }; + } $min ||= $speed; $min = $speed if $speed < $min; @@ -43,14 +52,19 @@ |, join("\n", map { my $node = $_; - my $speed = $graph->{$_}->{speed}; + my @speed = @{ $graph->{$node}->{speed} }; + my $speed = 0; + $speed += $_ foreach @speed; + $speed /= $#speed + 1; my $c = 'ff0000'; - $c = '00ff00' if ( $speed / 100 ) > 1.5; + $c = '00ff00' if ( $speed / 100 ) > 5; $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 ]|; + my $label = qq|labelfontsize=10,weight=$speed,|; + $label .= qq|headlabel=$speed[0],| if $speed[0]; + $label .= qq|taillabel=$speed[1],| if $speed[1]; + $label .= qq|style=dashed,| if $graph->{$node}->{dir} eq 'both'; + qq|$node [ $label color="#$c",dir=$graph->{$node}->{dir} ]|; } keys %$graph), qq| }