Assign IXIA ports in one call instead of one by one 59/62259/4
authorMytnyk, Volodymyr <volodymyrx.mytnyk@intel.com>
Thu, 13 Sep 2018 13:36:24 +0000 (14:36 +0100)
committerMytnyk, Volodymyr <volodymyrx.mytnyk@intel.com>
Thu, 13 Sep 2018 14:51:18 +0000 (15:51 +0100)
Assigning IXIA ports one by one takes more time than
assign all ports by once. Also, assigning ports in
one call resolves the assign port issues caused on
some IXIA chassis versions.

JIRA: YARDSTICK-1425

Change-Id: Ibb08e40ee1a8762573f6752bdd1f583c5a1d9d2a
Signed-off-by: Mytnyk, Volodymyr <volodymyrx.mytnyk@intel.com>
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 4db7ab4..1428c38 100644 (file)
@@ -225,11 +225,16 @@ class IxNextgen(object):  # pragma: no cover
                  zip(self._cfg['cards'], self._cfg['ports'])]
 
         log.info('Create and assign vports: %s', ports)
-        for port in ports:
-            vport = self.ixnet.add(self.ixnet.getRoot(), 'vport')
-            self.ixnet.commit()
-            self.ixnet.execute('assignPorts', [port], [], [vport], True)
+
+        vports = []
+        for _ in ports:
+            vports.append(self.ixnet.add(self.ixnet.getRoot(), 'vport'))
             self.ixnet.commit()
+
+        self.ixnet.execute('assignPorts', ports, [], vports, True)
+        self.ixnet.commit()
+
+        for vport in vports:
             if self.ixnet.getAttribute(vport, '-state') != 'up':
                 log.warning('Port %s is down', vport)
 
index d04dfd4..3077e3c 100644 (file)
@@ -346,8 +346,8 @@ class TestIxNextgen(unittest.TestCase):
         self.ixnet_gen._cfg = config
 
         self.assertIsNone(self.ixnet_gen.assign_ports())
-        self.assertEqual(self.ixnet.execute.call_count, 2)
-        self.assertEqual(self.ixnet.commit.call_count, 4)
+        self.assertEqual(self.ixnet.execute.call_count, 1)
+        self.assertEqual(self.ixnet.commit.call_count, 3)
         self.assertEqual(self.ixnet.getAttribute.call_count, 2)
 
     @mock.patch.object(ixnet_api, 'log')