Improve IXIA TG Rx/TX throughput calculation 89/60889/3
authorMytnyk, Volodymyr <volodymyrx.mytnyk@intel.com>
Mon, 13 Aug 2018 10:00:00 +0000 (11:00 +0100)
committerMytnyk, Volodymyr <volodymyrx.mytnyk@intel.com>
Thu, 16 Aug 2018 10:36:45 +0000 (11:36 +0100)
Use float instead of integer to convert TG throughtput
IXIA statistic.

JIRA: YARDSTICK-1378

Change-Id: I39bd143adc4b10035c6f0986a06d407a18aa0887
Signed-off-by: Mytnyk, Volodymyr <volodymyrx.mytnyk@intel.com>
yardstick/network_services/traffic_profile/ixia_rfc2544.py
yardstick/network_services/vnf_generic/vnf/tg_rfc2544_ixia.py
yardstick/tests/unit/network_services/traffic_profile/test_ixia_rfc2544.py

index 2086273..241fd75 100644 (file)
@@ -167,12 +167,8 @@ class IXIARFC2544Profile(trex_traffic_profile.TrexProfile):
             [samples[iface]['in_packets'] for iface in samples])
         out_packets_sum = sum(
             [samples[iface]['out_packets'] for iface in samples])
-        rx_throughput = sum(
-            [samples[iface]['RxThroughput'] for iface in samples])
-        rx_throughput = round(float(rx_throughput), 2)
-        tx_throughput = sum(
-            [samples[iface]['TxThroughput'] for iface in samples])
-        tx_throughput = round(float(tx_throughput), 2)
+        rx_throughput = round(float(in_packets_sum) / duration, 3)
+        tx_throughput = round(float(out_packets_sum) / duration, 3)
         packet_drop = abs(out_packets_sum - in_packets_sum)
 
         try:
index 5203ffd..2b04c86 100644 (file)
@@ -78,8 +78,8 @@ class IxiaResourceHelper(ClientResourceHelper):
                     "tx_throughput_mbps": float(stats["Tx_Rate_Mbps"][port_num]),
                     "in_packets": int(stats["Valid_Frames_Rx"][port_num]),
                     "out_packets": int(stats["Frames_Tx"][port_num]),
-                    "RxThroughput": int(stats["Valid_Frames_Rx"][port_num]) / duration,
-                    "TxThroughput": int(stats["Frames_Tx"][port_num]) / duration,
+                    "RxThroughput": float(stats["Valid_Frames_Rx"][port_num]) / duration,
+                    "TxThroughput": float(stats["Frames_Tx"][port_num]) / duration,
                 }
                 if key:
                     avg_latency = stats["Store-Forward_Avg_latency_ns"][port_num]
index 6f76eb7..27ab460 100644 (file)
@@ -575,87 +575,77 @@ class TestIXIARFC2544Profile(unittest.TestCase):
 
     def test_get_drop_percentage_completed(self):
         samples = {'iface_name_1':
-                       {'RxThroughput': 10, 'TxThroughput': 10,
-                        'in_packets': 1000, 'out_packets': 1000},
+                       {'in_packets': 1000, 'out_packets': 1000},
                    'iface_name_2':
-                       {'RxThroughput': 11, 'TxThroughput': 13,
-                        'in_packets': 1005, 'out_packets': 1007}
+                       {'in_packets': 1005, 'out_packets': 1007}
                    }
         rfc2544_profile = ixia_rfc2544.IXIARFC2544Profile(self.TRAFFIC_PROFILE)
         completed, samples = rfc2544_profile.get_drop_percentage(samples, 0, 1)
         self.assertTrue(completed)
-        self.assertEqual(23.0, samples['TxThroughput'])
-        self.assertEqual(21.0, samples['RxThroughput'])
+        self.assertEqual(66.9, samples['TxThroughput'])
+        self.assertEqual(66.833, samples['RxThroughput'])
         self.assertEqual(0.099651, samples['DropPercentage'])
 
     def test_get_drop_percentage_over_drop_percentage(self):
         samples = {'iface_name_1':
-                       {'RxThroughput': 10, 'TxThroughput': 10,
-                        'in_packets': 1000, 'out_packets': 1000},
+                       {'in_packets': 1000, 'out_packets': 1000},
                    'iface_name_2':
-                       {'RxThroughput': 11, 'TxThroughput': 13,
-                        'in_packets': 1005, 'out_packets': 1007}
+                       {'in_packets': 1005, 'out_packets': 1007}
                    }
         rfc2544_profile = ixia_rfc2544.IXIARFC2544Profile(self.TRAFFIC_PROFILE)
         rfc2544_profile.rate = 1000
         completed, samples = rfc2544_profile.get_drop_percentage(
             samples, 0, 0.05)
         self.assertFalse(completed)
-        self.assertEqual(23.0, samples['TxThroughput'])
-        self.assertEqual(21.0, samples['RxThroughput'])
+        self.assertEqual(66.9, samples['TxThroughput'])
+        self.assertEqual(66.833, samples['RxThroughput'])
         self.assertEqual(0.099651, samples['DropPercentage'])
         self.assertEqual(rfc2544_profile.rate, rfc2544_profile.max_rate)
 
     def test_get_drop_percentage_under_drop_percentage(self):
         samples = {'iface_name_1':
-                       {'RxThroughput': 10, 'TxThroughput': 10,
-                        'in_packets': 1000, 'out_packets': 1000},
+                       {'in_packets': 1000, 'out_packets': 1000},
                    'iface_name_2':
-                       {'RxThroughput': 11, 'TxThroughput': 13,
-                        'in_packets': 1005, 'out_packets': 1007}
+                       {'in_packets': 1005, 'out_packets': 1007}
                    }
         rfc2544_profile = ixia_rfc2544.IXIARFC2544Profile(self.TRAFFIC_PROFILE)
         rfc2544_profile.rate = 1000
         completed, samples = rfc2544_profile.get_drop_percentage(
             samples, 0.2, 1)
         self.assertFalse(completed)
-        self.assertEqual(23.0, samples['TxThroughput'])
-        self.assertEqual(21.0, samples['RxThroughput'])
+        self.assertEqual(66.9, samples['TxThroughput'])
+        self.assertEqual(66.833, samples['RxThroughput'])
         self.assertEqual(0.099651, samples['DropPercentage'])
         self.assertEqual(rfc2544_profile.rate, rfc2544_profile.min_rate)
 
     @mock.patch.object(ixia_rfc2544.LOG, 'info')
     def test_get_drop_percentage_not_flow(self, *args):
         samples = {'iface_name_1':
-                       {'RxThroughput': 0, 'TxThroughput': 10,
-                        'in_packets': 1000, 'out_packets': 0},
+                       {'in_packets': 1000, 'out_packets': 0},
                    'iface_name_2':
-                       {'RxThroughput': 0, 'TxThroughput': 13,
-                        'in_packets': 1005, 'out_packets': 0}
+                       {'in_packets': 1005, 'out_packets': 0}
                    }
         rfc2544_profile = ixia_rfc2544.IXIARFC2544Profile(self.TRAFFIC_PROFILE)
         rfc2544_profile.rate = 1000
         completed, samples = rfc2544_profile.get_drop_percentage(
             samples, 0.2, 1)
         self.assertFalse(completed)
-        self.assertEqual(23.0, samples['TxThroughput'])
-        self.assertEqual(0, samples['RxThroughput'])
+        self.assertEqual(0.0, samples['TxThroughput'])
+        self.assertEqual(66.833, samples['RxThroughput'])
         self.assertEqual(100, samples['DropPercentage'])
         self.assertEqual(rfc2544_profile.rate, rfc2544_profile.max_rate)
 
     def test_get_drop_percentage_first_run(self):
         samples = {'iface_name_1':
-                       {'RxThroughput': 10, 'TxThroughput': 10,
-                        'in_packets': 1000, 'out_packets': 1000},
+                       {'in_packets': 1000, 'out_packets': 1000},
                    'iface_name_2':
-                       {'RxThroughput': 11, 'TxThroughput': 13,
-                        'in_packets': 1005, 'out_packets': 1007}
+                       {'in_packets': 1005, 'out_packets': 1007}
                    }
         rfc2544_profile = ixia_rfc2544.IXIARFC2544Profile(self.TRAFFIC_PROFILE)
         completed, samples = rfc2544_profile.get_drop_percentage(
             samples, 0, 1, first_run=True)
         self.assertTrue(completed)
-        self.assertEqual(23.0, samples['TxThroughput'])
-        self.assertEqual(21.0, samples['RxThroughput'])
+        self.assertEqual(66.9, samples['TxThroughput'])
+        self.assertEqual(66.833, samples['RxThroughput'])
         self.assertEqual(0.099651, samples['DropPercentage'])
         self.assertEqual(33.45, rfc2544_profile.rate)