add yardstick iruya 9.0.0 release notes
[yardstick.git] / yardstick / tests / unit / network_services / traffic_profile / test_prox_binsearch.py
index 036746e..f176563 100644 (file)
 # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 # See the License for the specific language governing permissions and
 # limitations under the License.
-#
 
 import unittest
 import mock
 
-from yardstick.tests import STL_MOCKS
+from yardstick.network_services.vnf_generic.vnf.prox_helpers import ProxTestDataTuple
+from yardstick.network_services.traffic_profile import prox_binsearch
 
-STLClient = mock.MagicMock()
-stl_patch = mock.patch.dict("sys.modules", STL_MOCKS)
-stl_patch.start()
 
-if stl_patch:
-    from yardstick.network_services.vnf_generic.vnf.prox_helpers import ProxTestDataTuple
-    from yardstick.network_services.traffic_profile.prox_binsearch import ProxBinSearchProfile
+class TestProxBinSearchProfile(unittest.TestCase):
 
+    THEOR_MAX_THROUGHPUT = 0.00012340000000000002
 
-class TestProxBinSearchProfile(unittest.TestCase):
+    def setUp(self):
+        self._mock_log_info = mock.patch.object(prox_binsearch.LOG, 'info')
+        self.mock_log_info = self._mock_log_info.start()
+        self.addCleanup(self._stop_mocks)
+
+    def _stop_mocks(self):
+        self._mock_log_info.stop()
 
     def test_execute_1(self):
         def target(*args, **_):
@@ -38,6 +40,12 @@ class TestProxBinSearchProfile(unittest.TestCase):
                 return fail_tuple, {}
             return success_tuple, {}
 
+        def side_effect_func(arg1, arg2):
+            if arg1 == "confirmation":
+                return arg2
+            else:
+                return {}
+
         tp_config = {
             'traffic_profile': {
                 'packet_sizes': [200],
@@ -51,16 +59,18 @@ class TestProxBinSearchProfile(unittest.TestCase):
         fail_tuple = ProxTestDataTuple(10.0, 1, 2, 3, 4, [5.6, 5.7, 5.8], 850, 1000, 123.4)
 
         traffic_generator = mock.MagicMock()
-        attrs1 = {'get.return_value' : 10}
+        attrs1 = {'get.return_value': 10}
         traffic_generator.scenario_helper.all_options.configure_mock(**attrs1)
 
-        attrs2 = {'__getitem__.return_value' : 10, 'get.return_value': 10}
+        attrs2 = {'__getitem__.return_value': 10, 'get.return_value': 10}
+        attrs3 = {'get.side_effect': side_effect_func}
         traffic_generator.scenario_helper.scenario_cfg["runner"].configure_mock(**attrs2)
+        traffic_generator.scenario_helper.scenario_cfg["options"].configure_mock(**attrs3)
 
         profile_helper = mock.MagicMock()
         profile_helper.run_test = target
 
-        profile = ProxBinSearchProfile(tp_config)
+        profile = prox_binsearch.ProxBinSearchProfile(tp_config)
         profile.init(mock.MagicMock())
         profile._profile_helper = profile_helper
 
@@ -68,41 +78,46 @@ class TestProxBinSearchProfile(unittest.TestCase):
 
         self.assertEqual(round(profile.current_lower, 2), 74.69)
         self.assertEqual(round(profile.current_upper, 2), 76.09)
-        self.assertEqual(len(runs), 77)
+        self.assertEqual(len(runs), 7)
 
         # Result Samples inc theor_max
-        result_tuple = {'Result_Actual_throughput': 5e-07,
-                        'Result_theor_max_throughput': 7.5e-07,
-                        'Result_pktSize': 200}
-
-        profile.queue.put.assert_called_with(result_tuple)
-
-        success_result_tuple = {"Success_CurrentDropPackets": 0.5,
-                                "Success_DropPackets": 0.5,
-                                "Success_LatencyAvg": 5.3,
-                                "Success_LatencyMax": 5.2,
-                                "Success_LatencyMin": 5.1,
-                                "Success_PktSize": 200,
-                                "Success_RxThroughput": 7.5e-07,
-                                "Success_Throughput": 7.5e-07,
-                                "Success_TxThroughput": 0.00012340000000000002}
+        result_tuple = {'Actual_throughput': 5e-07,
+                        'theor_max_throughput': self.THEOR_MAX_THROUGHPUT,
+                        'PktSize': 200,
+                        'Status': 'Result'}
+
+        test_results = profile.queue.put.call_args[0]
+        for k in result_tuple:
+            self.assertEqual(result_tuple[k], test_results[0][k])
+
+        success_result_tuple = {"CurrentDropPackets": 0.5,
+                                "DropPackets": 0.5,
+                                "LatencyAvg": 5.3,
+                                "LatencyMax": 5.2,
+                                "LatencyMin": 5.1,
+                                "PktSize": 200,
+                                "RxThroughput": 7.5e-07,
+                                "Throughput": 7.5e-07,
+                                "TxThroughput": self.THEOR_MAX_THROUGHPUT,
+                                "Status": 'Success'}
 
         calls = profile.queue.put(success_result_tuple)
         profile.queue.put.assert_has_calls(calls)
 
-        success_result_tuple2 = {"Success_CurrentDropPackets": 0.5,
-                                "Success_DropPackets": 0.5,
-                                "Success_LatencyAvg": 5.3,
-                                "Success_LatencyMax": 5.2,
-                                "Success_LatencyMin": 5.1,
-                                "Success_PktSize": 200,
-                                "Success_RxThroughput": 7.5e-07,
-                                "Success_Throughput": 7.5e-07,
-                                "Success_TxThroughput": 123.4,
-                                "Success_can_be_lost": 409600,
-                                "Success_drop_total": 20480,
-                                "Success_rx_total": 4075520,
-                                "Success_tx_total": 4096000}
+        success_result_tuple2 = {"CurrentDropPackets": 0.5,
+                                "DropPackets": 0.5,
+                                "LatencyAvg": 5.3,
+                                "LatencyMax": 5.2,
+                                "LatencyMin": 5.1,
+                                "PktSize": 200,
+                                "RxThroughput": 7.5e-07,
+                                "Throughput": 7.5e-07,
+                                "TxThroughput": 123.4,
+                                "can_be_lost": 409600,
+                                "drop_total": 20480,
+                                "rx_total": 4075520,
+                                "tx_total": 4096000,
+                                "Status": 'Success'}
 
         calls = profile.queue.put(success_result_tuple2)
         profile.queue.put.assert_has_calls(calls)
@@ -116,6 +131,12 @@ class TestProxBinSearchProfile(unittest.TestCase):
                 return fail_tuple, {}
             return success_tuple, {}
 
+        def side_effect_func(arg1, _):
+            if arg1 == "confirmation":
+                return 2
+            else:
+                return {}
+
         tp_config = {
             'traffic_profile': {
                 'packet_sizes': [200],
@@ -133,19 +154,22 @@ class TestProxBinSearchProfile(unittest.TestCase):
         traffic_generator.scenario_helper.all_options.configure_mock(**attrs1)
 
         attrs2 = {'__getitem__.return_value': 0, 'get.return_value': 0}
+        attrs3 = {'get.side_effect': side_effect_func}
+
         traffic_generator.scenario_helper.scenario_cfg["runner"].configure_mock(**attrs2)
+        traffic_generator.scenario_helper.scenario_cfg["options"].configure_mock(**attrs3)
 
         profile_helper = mock.MagicMock()
         profile_helper.run_test = target
 
-        profile = ProxBinSearchProfile(tp_config)
+        profile = prox_binsearch.ProxBinSearchProfile(tp_config)
         profile.init(mock.MagicMock())
         profile._profile_helper = profile_helper
 
         profile.execute_traffic(traffic_generator)
         self.assertEqual(round(profile.current_lower, 2), 24.06)
         self.assertEqual(round(profile.current_upper, 2), 25.47)
-        self.assertEqual(len(runs), 7)
+        self.assertEqual(len(runs), 21)
 
     def test_execute_3(self):
         def target(*args, **_):
@@ -173,7 +197,7 @@ class TestProxBinSearchProfile(unittest.TestCase):
         profile_helper = mock.MagicMock()
         profile_helper.run_test = target
 
-        profile = ProxBinSearchProfile(tp_config)
+        profile = prox_binsearch.ProxBinSearchProfile(tp_config)
         profile.init(mock.MagicMock())
         profile._profile_helper = profile_helper
 
@@ -181,19 +205,16 @@ class TestProxBinSearchProfile(unittest.TestCase):
         profile.lower_bound = 99.0
         profile.execute_traffic(traffic_generator)
 
-
-        # Result Samples
-        result_tuple = {'Result_Actual_throughput': 0, "Result_theor_max_throughput": 0,
-                        "Result_pktSize": 200}
+        result_tuple = {'Actual_throughput': 0, 'theor_max_throughput': 0,
+                        "Status": 'Result', "Next_Step": ''}
         profile.queue.put.assert_called_with(result_tuple)
 
         # Check for success_ tuple (None expected)
         calls = profile.queue.put.mock_calls
         for call in calls:
             for call_detail in call[1]:
-                for k in call_detail:
-                    if "Success_" in k:
-                        self.assertRaises(AttributeError)
+                if call_detail["Status"] == 'Success':
+                    self.assertRaises(AttributeError)
 
     def test_execute_4(self):
 
@@ -203,6 +224,7 @@ class TestProxBinSearchProfile(unittest.TestCase):
                 raise RuntimeError(' '.join([str(args), str(runs)]))
             if args[2] > 75.0:
                 return fail_tuple, {}
+
             return success_tuple, {}
 
         tp_config = {
@@ -222,12 +244,13 @@ class TestProxBinSearchProfile(unittest.TestCase):
         traffic_generator.scenario_helper.all_options.configure_mock(**attrs1)
 
         attrs2 = {'__getitem__.return_value': 0, 'get.return_value': 0}
+
         traffic_generator.scenario_helper.scenario_cfg["runner"].configure_mock(**attrs2)
 
         profile_helper = mock.MagicMock()
         profile_helper.run_test = target
 
-        profile = ProxBinSearchProfile(tp_config)
+        profile = prox_binsearch.ProxBinSearchProfile(tp_config)
         profile.init(mock.MagicMock())
         profile._profile_helper = profile_helper
 
@@ -237,38 +260,43 @@ class TestProxBinSearchProfile(unittest.TestCase):
         self.assertEqual(len(runs), 7)
 
         # Result Samples inc theor_max
-        result_tuple = {'Result_Actual_throughput': 5e-07,
-                        'Result_theor_max_throughput': 7.5e-07,
-                        'Result_pktSize': 200}
-
-        profile.queue.put.assert_called_with(result_tuple)
-
-        success_result_tuple = {"Success_CurrentDropPackets": 0.5,
-                                "Success_DropPackets": 0.5,
-                                "Success_LatencyAvg": 5.3,
-                                "Success_LatencyMax": 5.2,
-                                "Success_LatencyMin": 5.1,
-                                "Success_PktSize": 200,
-                                "Success_RxThroughput": 7.5e-07,
-                                "Success_Throughput": 7.5e-07,
-                                "Success_TxThroughput": 0.00012340000000000002}
+        result_tuple = {'Actual_throughput': 5e-07,
+                        'theor_max_throughput': self.THEOR_MAX_THROUGHPUT,
+                        'PktSize': 200,
+                        "Status": 'Result'}
+
+        test_results = profile.queue.put.call_args[0]
+        for k in result_tuple:
+            self.assertEqual(result_tuple[k], test_results[0][k])
+
+        success_result_tuple = {"CurrentDropPackets": 0.5,
+                                "DropPackets": 0.5,
+                                "LatencyAvg": 5.3,
+                                "LatencyMax": 5.2,
+                                "LatencyMin": 5.1,
+                                "PktSize": 200,
+                                "RxThroughput": 7.5e-07,
+                                "Throughput": 7.5e-07,
+                                "TxThroughput": self.THEOR_MAX_THROUGHPUT,
+                                "Status": 'Success'}
 
         calls = profile.queue.put(success_result_tuple)
         profile.queue.put.assert_has_calls(calls)
 
-        success_result_tuple2 = {"Success_CurrentDropPackets": 0.5,
-                                 "Success_DropPackets": 0.5,
-                                 "Success_LatencyAvg": 5.3,
-                                 "Success_LatencyMax": 5.2,
-                                 "Success_LatencyMin": 5.1,
-                                 "Success_PktSize": 200,
-                                 "Success_RxThroughput": 7.5e-07,
-                                 "Success_Throughput": 7.5e-07,
-                                 "Success_TxThroughput": 123.4,
-                                 "Success_can_be_lost": 409600,
-                                 "Success_drop_total": 20480,
-                                 "Success_rx_total": 4075520,
-                                 "Success_tx_total": 4096000}
+        success_result_tuple2 = {"CurrentDropPackets": 0.5,
+                                 "DropPackets": 0.5,
+                                 "LatencyAvg": 5.3,
+                                 "LatencyMax": 5.2,
+                                 "LatencyMin": 5.1,
+                                 "PktSize": 200,
+                                 "RxThroughput": 7.5e-07,
+                                 "Throughput": 7.5e-07,
+                                 "TxThroughput": 123.4,
+                                 "can_be_lost": 409600,
+                                 "drop_total": 20480,
+                                 "rx_total": 4075520,
+                                 "tx_total": 4096000,
+                                 "Status": 'Success'}
 
         calls = profile.queue.put(success_result_tuple2)
         profile.queue.put.assert_has_calls(calls)