mirror of
				https://github.com/Telecominfraproject/wlan-lanforge-scripts.git
				synced 2025-11-04 04:38:02 +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