VSPERF: Report percentage frameloss from IXIA/IXNET 23/10123/2
authorRadek Zetik <radekx.zetik@intel.com>
Wed, 3 Feb 2016 11:28:51 +0000 (11:28 +0000)
committerMaryam Tahhan <maryam.tahhan@intel.com>
Wed, 17 Feb 2016 10:13:04 +0000 (10:13 +0000)
The patch introduces frame_loss_percent result value.
The implementation is done for Ixia and IxNet
traffic generators. The value is visible in list
of result values at the end of the test, in csv,
rst and md files.

JIRA: VSPERF-201

Change-Id: I9b6795d427b199cb62ed66b7a137e412e36dc757
Signed-off-by: Radek Zetik <radekx.zetik@intel.com>
Reviewed-by: Maryam Tahhan <maryam.tahhan@intel.com>
Reviewed-by: Brian Castelli <brian.castelli@spirent.com>
Reviewed-by: Al Morton <acmorton@att.com>
Reviewed-by: Tv Rao <tv.rao@freescale.com>
Reviewed-by: Billy O Mahony <billy.o.mahony@intel.com>
core/results/results_constants.py
tools/pkt_gen/ixia/ixia.py
tools/pkt_gen/ixnet/ixnet.py

index 8f139f1..fcf068b 100644 (file)
@@ -37,6 +37,7 @@ class ResultsConstants(object):
     MIN_LATENCY_NS = 'min_latency_ns'
     MAX_LATENCY_NS = 'max_latency_ns'
     AVG_LATENCY_NS = 'avg_latency_ns'
+    FRAME_LOSS_PERCENT = 'frame_loss_percent'
     #Burst traffic
     TX_FRAMES = 'tx_frames'
     RX_FRAMES = 'rx_frames'
@@ -79,4 +80,5 @@ class ResultsConstants(object):
                 ResultsConstants.THROUGHPUT_RX_PERCENT,
                 ResultsConstants.MIN_LATENCY_NS,
                 ResultsConstants.MAX_LATENCY_NS,
-                ResultsConstants.AVG_LATENCY_NS]
+                ResultsConstants.AVG_LATENCY_NS,
+                ResultsConstants.FRAME_LOSS_PERCENT]
index 10ed1fb..b9b3dd1 100755 (executable)
@@ -289,6 +289,10 @@ class Ixia(trafficgen.ITrafficGenerator):
         """
         assert len(result) == 8  # fail-fast if underlying Tcl code changes
 
+        if float(result[0]) == 0:
+            loss_rate = 100
+        else:
+            loss_rate = (float(result[0]) - float(result[1])) / float(result[0]) * 100
         result_dict = OrderedDict()
         # drop the first 4 elements as we don't use/need them. In
         # addition, IxExplorer does not support latency or % line rate
@@ -297,6 +301,7 @@ class Ixia(trafficgen.ITrafficGenerator):
         result_dict[ResultsConstants.TX_RATE_FPS] = result[5]
         result_dict[ResultsConstants.THROUGHPUT_RX_MBPS] = result[6]
         result_dict[ResultsConstants.TX_RATE_MBPS] = result[7]
+        result_dict[ResultsConstants.FRAME_LOSS_PERCENT] = loss_rate
         result_dict[ResultsConstants.TX_RATE_PERCENT] = \
                                             ResultsConstants.UNKNOWN_VALUE
         result_dict[ResultsConstants.THROUGHPUT_RX_PERCENT] = \
index 96936e1..c8dbb3d 100755 (executable)
@@ -375,6 +375,7 @@ class IxNet(trafficgen.ITrafficGenerator):
                         results[ResultsConstants.THROUGHPUT_RX_MBPS] = row[6]
                         results[ResultsConstants.TX_RATE_PERCENT] = row[3]
                         results[ResultsConstants.THROUGHPUT_RX_PERCENT] = row[4]
+                        results[ResultsConstants.FRAME_LOSS_PERCENT] = row[10]
                         results[ResultsConstants.MIN_LATENCY_NS] = row[11]
                         results[ResultsConstants.MAX_LATENCY_NS] = row[12]
                         results[ResultsConstants.AVG_LATENCY_NS] = row[13]
@@ -484,6 +485,7 @@ class IxNet(trafficgen.ITrafficGenerator):
             """
             results = OrderedDict()
             results[ResultsConstants.B2B_FRAMES] = 0
+            results[ResultsConstants.B2B_FRAME_LOSS_PERCENT] = 100
 
             with open(path, 'r') as in_file:
                 reader = csv.reader(in_file, delimiter=',')
@@ -495,6 +497,7 @@ class IxNet(trafficgen.ITrafficGenerator):
                         if int(row[12]) > \
                          int(results[ResultsConstants.B2B_FRAMES]):
                             results[ResultsConstants.B2B_FRAMES] = int(row[12])
+                            results[ResultsConstants.B2B_FRAME_LOSS_PERCENT] = float(row[14])
 
             return results