Merge "test_spec: LTD: MatchAction Performance testing"
[vswitchperf.git] / tools / pkt_gen / ixnet / ixnet.py
old mode 100644 (file)
new mode 100755 (executable)
index b59d88a..5e4ae56
@@ -1,4 +1,4 @@
-# Copyright 2015 Intel Corporation.
+# Copyright 2015-2016 Intel Corporation.
 #
 # Licensed under the Apache License, Version 2.0 (the "License");
 # you may not use this file except in compliance with the License.
@@ -19,8 +19,6 @@ This requires the following settings in your config file:
 
 * TRAFFICGEN_IXNET_LIB_PATH
     IxNetwork libraries path
-* TRAFFICGEN_IXNET_HOST
-    IxNetwork host IP address
 * TRAFFICGEN_IXNET_PORT
     IxNetwork host port number
 * TRAFFICGEN_IXNET_USER
@@ -32,7 +30,7 @@ This requires the following settings in your config file:
     as the previous one
 
 The following settings are also required. These can likely be shared
-an 'Ixia' traffic generator instance:
+with an 'Ixia' traffic generator instance:
 
 * TRAFFICGEN_IXIA_HOST
     IXIA chassis IP address
@@ -153,7 +151,11 @@ class IxNet(trafficgen.ITrafficGenerator):
 
     Currently only the RFC2544 tests are implemented.
     """
-    _script = os.path.join(os.path.dirname(__file__), 'ixnetrfc2544.tcl')
+    if settings.getValue('TRAFFICGEN_IXNET_TCL_SCRIPT') == '':
+        _script = os.path.join(os.path.dirname(__file__), 'ixnetrfc2544.tcl')
+    else:
+        _script = os.path.join(os.path.dirname(__file__),
+                               settings.getValue('TRAFFICGEN_IXNET_TCL_SCRIPT'))
     _tclsh = tkinter.Tcl()
     _cfg = None
     _logger = logging.getLogger(__name__)
@@ -200,7 +202,7 @@ class IxNet(trafficgen.ITrafficGenerator):
         """
         pass
 
-    def send_cont_traffic(self, traffic=None, duration=30, multistream=False):
+    def send_cont_traffic(self, traffic=None, duration=30):
         """See ITrafficGenerator for description
         """
         self.start_cont_traffic(traffic, duration)
@@ -251,15 +253,15 @@ class IxNet(trafficgen.ITrafficGenerator):
         """
         return self._wait_result()
 
-    def send_rfc2544_throughput(self, traffic=None, trials=3, duration=20,
-                                lossrate=0.0, multistream=False):
+    def send_rfc2544_throughput(self, traffic=None, tests=1, duration=20,
+                                lossrate=0.0):
         """See ITrafficGenerator for description
         """
-        self.start_rfc2544_throughput(traffic, trials, duration, lossrate)
+        self.start_rfc2544_throughput(traffic, tests, duration, lossrate)
 
         return self.wait_rfc2544_throughput()
 
-    def start_rfc2544_throughput(self, traffic=None, trials=3, duration=20,
+    def start_rfc2544_throughput(self, traffic=None, tests=1, duration=20,
                                  lossrate=0.0):
         """Start transmission.
         """
@@ -268,7 +270,7 @@ class IxNet(trafficgen.ITrafficGenerator):
 
         self._params['config'] = {
             'binary': True,
-            'trials': trials,
+            'tests': tests,
             'duration': duration,
             'lossrate': lossrate,
             'multipleStreams': traffic['multistream'],
@@ -359,7 +361,7 @@ class IxNet(trafficgen.ITrafficGenerator):
                     tx_mbps = 'Unknown'
 
                     if bool(results.get(ResultsConstants.THROUGHPUT_RX_FPS)) \
-                                                                == False:
+                                                                is False:
                         prev_percent_rx = 0.0
                     else:
                         prev_percent_rx = \
@@ -371,6 +373,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]
@@ -384,18 +387,18 @@ class IxNet(trafficgen.ITrafficGenerator):
         # the results file
         return parse_ixnet_rfc_results(parse_result_string(output[0]))
 
-    def send_rfc2544_back2back(self, traffic=None, trials=50, duration=2,
+    def send_rfc2544_back2back(self, traffic=None, tests=1, duration=2,
                                lossrate=0.0):
         """See ITrafficGenerator for description
         """
         # NOTE 2 seconds is the recommended duration for a back 2 back
         # test in RFC2544. 50 trials is the recommended number from the
         # RFC also.
-        self.start_rfc2544_back2back(traffic, trials, duration, lossrate)
+        self.start_rfc2544_back2back(traffic, tests, duration, lossrate)
 
         return self.wait_rfc2544_back2back()
 
-    def start_rfc2544_back2back(self, traffic=None, trials=50, duration=2,
+    def start_rfc2544_back2back(self, traffic=None, tests=1, duration=2,
                                 lossrate=0.0):
         """Start transmission.
         """
@@ -404,7 +407,7 @@ class IxNet(trafficgen.ITrafficGenerator):
 
         self._params['config'] = {
             'binary': True,
-            'trials': trials,
+            'tests': tests,
             'duration': duration,
             'lossrate': lossrate,
             'multipleStreams': traffic['multistream'],
@@ -480,6 +483,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=',')
@@ -491,6 +495,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