mirror of
https://github.com/Telecominfraproject/wlan-lanforge-scripts.git
synced 2025-11-19 03:25:05 +00:00
Add logic to parse and normalize latency buckets and similar buckets.
This commit is contained in:
@@ -121,6 +121,84 @@ sub doAsyncCmd {
|
|||||||
return join( "\n", @rv );
|
return join( "\n", @rv );
|
||||||
} # ~doAsyncCmd
|
} # ~doAsyncCmd
|
||||||
|
|
||||||
|
sub normalize_bucket_hdr {
|
||||||
|
my $self = shift;
|
||||||
|
my $amt = shift;
|
||||||
|
my $rv = "Min Max Avg ";
|
||||||
|
my $i;
|
||||||
|
for ($i = 0; $i<$amt; $i++) {
|
||||||
|
if ($i == 0) {
|
||||||
|
$rv .= "0-0 ";
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
$rv .= 2**($i-1) . "-" . (2**($i) - 1) . " ";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return $rv;
|
||||||
|
}
|
||||||
|
|
||||||
|
sub normalize_bucket {
|
||||||
|
my $self = shift;
|
||||||
|
my $line = shift;
|
||||||
|
#print "line -:$line:-\n";
|
||||||
|
|
||||||
|
# Looks like this: 5 -:5:- 6 [ 17 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 ] (1)
|
||||||
|
if ($line =~ /(\d+)\s+-:(\d+):-\s+(\d+)\s+\[\s+(.*)\s+\]\s+\((\d+)\)/) {
|
||||||
|
my $min = $1;
|
||||||
|
my $avg = $2;
|
||||||
|
my $max = $3;
|
||||||
|
my $bks = $4;
|
||||||
|
my $width = $5; # Assumes one currently
|
||||||
|
if (!($width eq "1")) {
|
||||||
|
return $line;
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
my @bkts = split(/\s+/, $bks);
|
||||||
|
my $i;
|
||||||
|
my $rv = "$min $max $avg ";
|
||||||
|
#print "bkts len: " . @bkts . "\n";
|
||||||
|
my @nbkts = (0) x (@bkts + 1);
|
||||||
|
for ($i = 0; $i<@bkts; $i++) {
|
||||||
|
# Figure out the bkt range
|
||||||
|
my $minv = 0;
|
||||||
|
my $maxv = 2 ** $i;
|
||||||
|
if ($i > 0) {
|
||||||
|
$minv = 2 ** ($i - 1);
|
||||||
|
}
|
||||||
|
# Adjust by the min value, which is treated as an offset
|
||||||
|
$minv += $min;
|
||||||
|
$maxv += $min;
|
||||||
|
|
||||||
|
# And now find the normalized bucket this fits in
|
||||||
|
#print "maxv: $maxv\n";
|
||||||
|
my $z;
|
||||||
|
my $idx = 0;
|
||||||
|
for ($z = 1; $z < 32; $z++) {
|
||||||
|
if ($maxv < (2 ** $z)) {
|
||||||
|
#print "maxv: $maxv z: $z 2^$z: " . 2 ** $z . + "\n";
|
||||||
|
$idx = $z;
|
||||||
|
last;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#print "idx: $idx i: $i ";
|
||||||
|
#print "nbkts: " . $nbkts[$idx];
|
||||||
|
#print " bkts: " . $bkts[$i] . "\n";
|
||||||
|
my $nv = $nbkts[$idx] + $bkts[$i];
|
||||||
|
@nbkts[$idx] = $nv;
|
||||||
|
}
|
||||||
|
|
||||||
|
for ($i = 0; $i<@bkts; $i++) {
|
||||||
|
$rv .= ($nbkts[$i] . " ");
|
||||||
|
}
|
||||||
|
return $rv;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
return $line;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
# Uses cached values (so it will show Phantom ones too)
|
# Uses cached values (so it will show Phantom ones too)
|
||||||
sub getPortListing {
|
sub getPortListing {
|
||||||
my $self = shift;
|
my $self = shift;
|
||||||
|
|||||||
@@ -390,17 +390,27 @@ if (grep {$_ eq $::action} split(',', "show_endp,set_endp,create_endp,create_arm
|
|||||||
## ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- #
|
## ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- #
|
||||||
if ($match =~ /Latency/) {
|
if ($match =~ /Latency/) {
|
||||||
if ($match =~ /.*Latency:\s+(.*)\s+#/) {
|
if ($match =~ /.*Latency:\s+(.*)\s+#/) {
|
||||||
$option_map{"Latency"} = $1;
|
my $val = $1;
|
||||||
|
#print "val -:$val:-\n";
|
||||||
|
$option_map{"Normalized-Hdr"} = $::utils->normalize_bucket_hdr(17);
|
||||||
|
$option_map{"Latency"} = $val;
|
||||||
|
$option_map{"Latency-Normalized"} = $::utils->normalize_bucket($val);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
elsif ($match =~ /Pkt-Gaps/) {
|
elsif ($match =~ /Pkt-Gaps/) {
|
||||||
if ($match =~ /.*Pkt-Gaps:\s+(.*)\s+#/) {
|
if ($match =~ /.*Pkt-Gaps:\s+(.*)\s+#/) {
|
||||||
$option_map{"Pkt-Gaps"} = $1;
|
my $val = $1;
|
||||||
|
$option_map{"Normalized-Hdr"} = $::utils->normalize_bucket_hdr(17);
|
||||||
|
$option_map{"Pkt-Gaps"} = $val;
|
||||||
|
$option_map{"Pkt-Gaps-Normalized"} = $::utils->normalize_bucket($val);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
elsif ($match =~ /RX-Silence/) {
|
elsif ($match =~ /RX-Silence/) {
|
||||||
if ($match =~ /.*RX-Silence:\s+(.*)\s+#/) {
|
if ($match =~ /.*RX-Silence:\s+(.*)\s+#/) {
|
||||||
$option_map{"RX-Silence"} = $1;
|
my $val = $1;
|
||||||
|
$option_map{"Normalized-Hdr"} = $::utils->normalize_bucket_hdr(17);
|
||||||
|
$option_map{"RX-Silence"} = $val;
|
||||||
|
$option_map{"RX-Silence-Normalized"} = $::utils->normalize_bucket($val);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
elsif ( $match =~ /Rx (Bytes|Pkts)/ && $end_val =~ /rx_/) {
|
elsif ( $match =~ /Rx (Bytes|Pkts)/ && $end_val =~ /rx_/) {
|
||||||
|
|||||||
Reference in New Issue
Block a user