Merge "Make injection time configurable for IXIA RFC2544 test cases"
authorRodolfo Alonso Hernandez <rodolfo.alonso.hernandez@intel.com>
Thu, 26 Jul 2018 14:33:17 +0000 (14:33 +0000)
committerGerrit Code Review <gerrit@opnfv.org>
Thu, 26 Jul 2018 14:33:17 +0000 (14:33 +0000)
yardstick/network_services/libs/ixia_libs/ixnet/ixnet_api.py
yardstick/network_services/traffic_profile/ixia_rfc2544.py
yardstick/tests/unit/network_services/libs/ixia_libs/test_ixnet_api.py
yardstick/tests/unit/network_services/traffic_profile/test_base.py

index a840fea..ba27d4d 100644 (file)
@@ -330,7 +330,7 @@ class IxNextgen(object):  # pragma: no cover
                                      '-valueType', 'singleValue')
         self.ixnet.commit()
 
-    def update_frame(self, traffic):
+    def update_frame(self, traffic, duration):
         """Update the L2 frame
 
         This function updates the L2 frame options:
@@ -348,6 +348,7 @@ class IxNextgen(object):  # pragma: no cover
 
         :param traffic: list of traffic elements; each traffic element contains
                         the injection parameter for each flow group.
+        :param duration: (int) injection time in seconds.
         """
         for traffic_param in traffic.values():
             fg_id = str(traffic_param['id'])
index c32e9d8..4345533 100644 (file)
@@ -100,7 +100,7 @@ class IXIARFC2544Profile(trex_traffic_profile.TrexProfile):
         return result
 
     def _ixia_traffic_generate(self, traffic, ixia_obj):
-        ixia_obj.update_frame(traffic)
+        ixia_obj.update_frame(traffic, self.config.duration)
         ixia_obj.update_ip_packet(traffic)
         ixia_obj.start_traffic()
 
@@ -137,11 +137,12 @@ class IXIARFC2544Profile(trex_traffic_profile.TrexProfile):
         self._ixia_traffic_generate(traffic, ixia_obj)
         return first_run
 
-    def get_drop_percentage(self, samples, tol_min, tolerance, duration=30.0,
+    def get_drop_percentage(self, samples, tol_min, tolerance,
                             first_run=False):
         completed = False
         drop_percent = 100
         num_ifaces = len(samples)
+        duration = self.config.duration
         in_packets_sum = sum(
             [samples[iface]['in_packets'] for iface in samples])
         out_packets_sum = sum(
@@ -169,7 +170,7 @@ class IXIARFC2544Profile(trex_traffic_profile.TrexProfile):
             completed = True if drop_percent <= tolerance else False
         if (first_run and
                 self.rate_unit == tp_base.TrafficProfileConfig.RATE_FPS):
-            self.rate = out_packets_sum / duration / num_ifaces
+            self.rate = float(out_packets_sum) / duration / num_ifaces
 
         if drop_percent > tolerance:
             self.max_rate = self.rate
index dd43a64..2327d1a 100644 (file)
@@ -367,7 +367,7 @@ class TestIxNextgen(unittest.TestCase):
                 mock_get_stack_item:
             mock_get_stack_item.side_effect = [['item1'], ['item2'],
                                                ['item3'], ['item4']]
-            ixnet_gen.update_frame(TRAFFIC_PARAMETERS)
+            ixnet_gen.update_frame(TRAFFIC_PARAMETERS, 50)
 
         self.assertEqual(6, len(ixnet_gen.ixnet.setMultiAttribute.mock_calls))
         self.assertEqual(4, len(mock_update_frame.mock_calls))
@@ -385,7 +385,7 @@ class TestIxNextgen(unittest.TestCase):
                 ixnet_gen, '_get_config_element_by_flow_group_name',
                 return_value=None):
             with self.assertRaises(exceptions.IxNetworkFlowNotPresent):
-                ixnet_gen.update_frame(TRAFFIC_PARAMETERS)
+                ixnet_gen.update_frame(TRAFFIC_PARAMETERS, 40)
 
     def test_get_statistics(self):
         ixnet_gen = ixnet_api.IxNextgen()
index 2a366fc..0dc3e05 100644 (file)
@@ -80,12 +80,17 @@ class TrafficProfileConfigTestCase(unittest.TestCase):
         tp_config = {'traffic_profile': {'packet_sizes': {'64B': 100}}}
         tp_config_obj = base.TrafficProfileConfig(tp_config)
         self.assertEqual({'64B': 100}, tp_config_obj.packet_sizes)
+        self.assertEqual(base.TrafficProfileConfig.DEFAULT_DURATION,
+                         tp_config_obj.duration)
+
+    def test__init_set_duration(self):
+        tp_config = {'traffic_profile': {'duration': 15}}
+        tp_config_obj = base.TrafficProfileConfig(tp_config)
         self.assertEqual(base.TrafficProfileConfig.DEFAULT_SCHEMA,
                          tp_config_obj.schema)
         self.assertEqual(float(base.TrafficProfileConfig.DEFAULT_FRAME_RATE),
                          tp_config_obj.frame_rate)
-        self.assertEqual(base.TrafficProfileConfig.DEFAULT_DURATION,
-                         tp_config_obj.duration)
+        self.assertEqual(15, tp_config_obj.duration)
 
     def test__parse_rate(self):
         tp_config = {'traffic_profile': {'packet_sizes': {'64B': 100}}}