Fix IXIA IxNetwork IMIX configuration 13/59613/1
authorRodolfo Alonso Hernandez <rodolfo.alonso.hernandez@intel.com>
Mon, 9 Jul 2018 11:06:55 +0000 (12:06 +0100)
committerRodolfo Alonso Hernandez <rodolfo.alonso.hernandez@intel.com>
Mon, 9 Jul 2018 12:10:10 +0000 (13:10 +0100)
IxNet library is not setting correctly the IMIX definition per traffic
item. The correct input for "weightedRangePairs" parameter is:

  [[64, 64, 10], [128, 128, 15], [512, 512, 5]]

JIRA: YARDSTICK-1296

Change-Id: Idb4034ce817250da5b9a434230b1be6dae0d3ba3
Signed-off-by: Rodolfo Alonso Hernandez <rodolfo.alonso.hernandez@intel.com>
yardstick/network_services/libs/ixia_libs/ixnet/ixnet_api.py
yardstick/tests/unit/network_services/libs/ixia_libs/test_ixnet_api.py

index 393f60f..74deeec 100644 (file)
@@ -166,9 +166,10 @@ class IxNextgen(object):  # pragma: no cover
         :return: list of paired frame sizes and weights
         """
         weighted_range_pairs = []
-        for size, weight in framesize.items():
-            weighted_range_pairs.append(int(size.upper().replace('B', '')))
-            weighted_range_pairs.append(int(weight))
+        for size, weight in ((s, w) for (s, w) in framesize.items()
+                             if int(w) != 0):
+            size = int(size.upper().replace('B', ''))
+            weighted_range_pairs.append([size, size, int(weight)])
         return weighted_range_pairs
 
     def iter_over_get_lists(self, x1, x2, y2, offset=0):
@@ -339,7 +340,7 @@ class IxNextgen(object):  # pragma: no cover
                         "percentLineRate" no used)
         - Frame size: custom IMIX [1] definition; a list of packet size in
                       bytes and the weight. E.g.:
-                      [64, 10, 128, 15, 512, 5]
+                      [[64, 64, 10], [128, 128, 15], [512, 512, 5]]
 
         [1] https://en.wikipedia.org/wiki/Internet_Mix
 
index 34afa3d..541855a 100644 (file)
@@ -203,13 +203,9 @@ class TestIxNextgen(unittest.TestCase):
         ixnet_gen._ixnet = self.ixnet
         framesize = {'64B': '75', '512b': '25'}
         output = ixnet_gen._parse_framesize(framesize)
-        for idx in range(len(framesize)):
-            if output[idx * 2] == 64:
-                self.assertEqual(75, output[idx * 2 + 1])
-            elif output[idx * 2] == 512:
-                self.assertEqual(25, output[idx * 2 + 1])
-            else:
-                raise self.failureException('Framesize (64, 512) not present')
+        self.assertEqual(2, len(output))
+        self.assertIn([64, 64, 75], output)
+        self.assertIn([512, 512, 25], output)
 
     @mock.patch.object(IxNetwork, 'IxNet')
     def test_connect(self, mock_ixnet):