Merge "cachestat: use raw strings to escape \d"
[yardstick.git] / tests / unit / network_services / vnf_generic / vnf / test_tg_rfc2544_trex.py
index 4ce5d81..4ea1808 100644 (file)
@@ -22,11 +22,75 @@ import os
 import multiprocessing
 from multiprocessing import Queue
 
-from stl.trex_stl_lib.trex_stl_client import STLClient
-from yardstick.network_services.vnf_generic.vnf.tg_rfc2544_trex import \
-    TrexTrafficGenRFC
-from yardstick.network_services.vnf_generic.vnf import tg_rfc2544_trex
-from yardstick.network_services.traffic_profile.base import TrafficProfile
+STL_MOCKS = {
+    'stl': mock.MagicMock(),
+    'stl.trex_stl_lib': mock.MagicMock(),
+    'stl.trex_stl_lib.base64': mock.MagicMock(),
+    'stl.trex_stl_lib.binascii': mock.MagicMock(),
+    'stl.trex_stl_lib.collections': mock.MagicMock(),
+    'stl.trex_stl_lib.copy': mock.MagicMock(),
+    'stl.trex_stl_lib.datetime': mock.MagicMock(),
+    'stl.trex_stl_lib.functools': mock.MagicMock(),
+    'stl.trex_stl_lib.imp': mock.MagicMock(),
+    'stl.trex_stl_lib.inspect': mock.MagicMock(),
+    'stl.trex_stl_lib.json': mock.MagicMock(),
+    'stl.trex_stl_lib.linecache': mock.MagicMock(),
+    'stl.trex_stl_lib.math': mock.MagicMock(),
+    'stl.trex_stl_lib.os': mock.MagicMock(),
+    'stl.trex_stl_lib.platform': mock.MagicMock(),
+    'stl.trex_stl_lib.pprint': mock.MagicMock(),
+    'stl.trex_stl_lib.random': mock.MagicMock(),
+    'stl.trex_stl_lib.re': mock.MagicMock(),
+    'stl.trex_stl_lib.scapy': mock.MagicMock(),
+    'stl.trex_stl_lib.socket': mock.MagicMock(),
+    'stl.trex_stl_lib.string': mock.MagicMock(),
+    'stl.trex_stl_lib.struct': mock.MagicMock(),
+    'stl.trex_stl_lib.sys': mock.MagicMock(),
+    'stl.trex_stl_lib.threading': mock.MagicMock(),
+    'stl.trex_stl_lib.time': mock.MagicMock(),
+    'stl.trex_stl_lib.traceback': mock.MagicMock(),
+    'stl.trex_stl_lib.trex_stl_async_client': mock.MagicMock(),
+    'stl.trex_stl_lib.trex_stl_client': mock.MagicMock(),
+    'stl.trex_stl_lib.trex_stl_exceptions': mock.MagicMock(),
+    'stl.trex_stl_lib.trex_stl_ext': mock.MagicMock(),
+    'stl.trex_stl_lib.trex_stl_jsonrpc_client': mock.MagicMock(),
+    'stl.trex_stl_lib.trex_stl_packet_builder_interface': mock.MagicMock(),
+    'stl.trex_stl_lib.trex_stl_packet_builder_scapy': mock.MagicMock(),
+    'stl.trex_stl_lib.trex_stl_port': mock.MagicMock(),
+    'stl.trex_stl_lib.trex_stl_stats': mock.MagicMock(),
+    'stl.trex_stl_lib.trex_stl_streams': mock.MagicMock(),
+    'stl.trex_stl_lib.trex_stl_types': mock.MagicMock(),
+    'stl.trex_stl_lib.types': mock.MagicMock(),
+    'stl.trex_stl_lib.utils': mock.MagicMock(),
+    'stl.trex_stl_lib.utils.argparse': mock.MagicMock(),
+    'stl.trex_stl_lib.utils.collections': mock.MagicMock(),
+    'stl.trex_stl_lib.utils.common': mock.MagicMock(),
+    'stl.trex_stl_lib.utils.json': mock.MagicMock(),
+    'stl.trex_stl_lib.utils.os': mock.MagicMock(),
+    'stl.trex_stl_lib.utils.parsing_opts': mock.MagicMock(),
+    'stl.trex_stl_lib.utils.pwd': mock.MagicMock(),
+    'stl.trex_stl_lib.utils.random': mock.MagicMock(),
+    'stl.trex_stl_lib.utils.re': mock.MagicMock(),
+    'stl.trex_stl_lib.utils.string': mock.MagicMock(),
+    'stl.trex_stl_lib.utils.sys': mock.MagicMock(),
+    'stl.trex_stl_lib.utils.text_opts': mock.MagicMock(),
+    'stl.trex_stl_lib.utils.text_tables': mock.MagicMock(),
+    'stl.trex_stl_lib.utils.texttable': mock.MagicMock(),
+    'stl.trex_stl_lib.warnings': mock.MagicMock(),
+    'stl.trex_stl_lib.yaml': mock.MagicMock(),
+    'stl.trex_stl_lib.zlib': mock.MagicMock(),
+    'stl.trex_stl_lib.zmq': mock.MagicMock(),
+}
+
+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.tg_rfc2544_trex import \
+        TrexTrafficGenRFC
+    from yardstick.network_services.vnf_generic.vnf import tg_rfc2544_trex
+    from yardstick.network_services.traffic_profile.base import TrafficProfile
 
 
 class TestTrexTrafficGenRFC(unittest.TestCase):
@@ -131,7 +195,7 @@ class TestTrexTrafficGenRFC(unittest.TestCase):
             ssh_mock = mock.Mock(autospec=ssh.SSH)
             ssh_mock.execute = \
                 mock.Mock(return_value=(0, "", ""))
-            ssh.return_value = ssh_mock
+            ssh.from_node.return_value = ssh_mock
             vnfd = self.VNFD['vnfd:vnfd-catalog']['vnfd'][0]
             trex_traffic_gen = TrexTrafficGenRFC(vnfd)
             self.assertIsNotNone(trex_traffic_gen._terminated)
@@ -142,7 +206,7 @@ class TestTrexTrafficGenRFC(unittest.TestCase):
             ssh_mock = mock.Mock(autospec=ssh.SSH)
             ssh_mock.execute = \
                 mock.Mock(return_value=(0, "", ""))
-            ssh.return_value = ssh_mock
+            ssh.from_node.return_value = ssh_mock
             vnfd = self.VNFD['vnfd:vnfd-catalog']['vnfd'][0]
             trex_traffic_gen = TrexTrafficGenRFC(vnfd)
             restult = trex_traffic_gen.collect_kpi()
@@ -154,7 +218,7 @@ class TestTrexTrafficGenRFC(unittest.TestCase):
             ssh_mock = mock.Mock(autospec=ssh.SSH)
             ssh_mock.execute = \
                 mock.Mock(return_value=(0, "", ""))
-            ssh.return_value = ssh_mock
+            ssh.from_node.return_value = ssh_mock
             vnfd = self.VNFD['vnfd:vnfd-catalog']['vnfd'][0]
             trex_traffic_gen = TrexTrafficGenRFC(vnfd)
             self.assertEqual(None, trex_traffic_gen.listen_traffic({}))
@@ -169,11 +233,12 @@ class TestTrexTrafficGenRFC(unittest.TestCase):
                 mock.Mock(return_value=(0, "", ""))
             ssh_mock.run = \
                 mock.Mock(return_value=(0, "", ""))
-            ssh.return_value = ssh_mock
+            ssh.from_node.return_value = ssh_mock
             vnfd = self.VNFD['vnfd:vnfd-catalog']['vnfd'][0]
             trex_traffic_gen = TrexTrafficGenRFC(vnfd)
             trex_traffic_gen._start_server = mock.Mock(return_value=0)
             scenario_cfg = {"tc": "tc_baremetal_rfc2544_ipv4_1flow_64B"}
+            tg_rfc2544_trex.WAIT_TIME = 3
             self.assertEqual(0, trex_traffic_gen.instantiate(scenario_cfg, {}))
 
     def test_instantiate_error(self):
@@ -186,7 +251,7 @@ class TestTrexTrafficGenRFC(unittest.TestCase):
                 mock.Mock(return_value=(1, "", ""))
             ssh_mock.run = \
                 mock.Mock(return_value=(0, "", ""))
-            ssh.return_value = ssh_mock
+            ssh.from_node.return_value = ssh_mock
             vnfd = self.VNFD['vnfd:vnfd-catalog']['vnfd'][0]
             trex_traffic_gen = TrexTrafficGenRFC(vnfd)
             scenario_cfg = {"tc": "tc_baremetal_rfc2544_ipv4_1flow_64B"}
@@ -200,12 +265,13 @@ class TestTrexTrafficGenRFC(unittest.TestCase):
                 mock.Mock(return_value=(0, "", ""))
             ssh_mock.run = \
                 mock.Mock(return_value=(0, "", ""))
-            ssh.return_value = ssh_mock
+            ssh.from_node.return_value = ssh_mock
             vnfd = self.VNFD['vnfd:vnfd-catalog']['vnfd'][0]
             trex_traffic_gen = TrexTrafficGenRFC(vnfd)
             self.assertEqual([0.8, 1.0],
                              trex_traffic_gen._get_rfc_tolerance(self.TC_YAML))
-            self.TC_YAML["scenarios"][0]["tc_options"]['rfc2544']['allowed_drop_rate'] = '0.8'
+            self.TC_YAML["scenarios"][0]["tc_options"]['rfc2544'][
+                'allowed_drop_rate'] = '0.8'
             self.assertEqual([0.8, 0.8],
                              trex_traffic_gen._get_rfc_tolerance(self.TC_YAML))
 
@@ -216,7 +282,7 @@ class TestTrexTrafficGenRFC(unittest.TestCase):
                 mock.Mock(return_value=(0, "", ""))
             ssh_mock.run = \
                 mock.Mock(return_value=(0, "", ""))
-            ssh.return_value = ssh_mock
+            ssh.from_node.return_value = ssh_mock
             vnfd = self.VNFD['vnfd:vnfd-catalog']['vnfd'][0]
             trex_traffic_gen = TrexTrafficGenRFC(vnfd)
             self.assertEqual(None, trex_traffic_gen._start_server())
@@ -238,7 +304,7 @@ class TestTrexTrafficGenRFC(unittest.TestCase):
                 mock.Mock(return_value=(0, "", ""))
             ssh_mock.run = \
                 mock.Mock(return_value=(0, "", ""))
-            ssh.return_value = ssh_mock
+            ssh.from_node.return_value = ssh_mock
             vnfd = self.VNFD['vnfd:vnfd-catalog']['vnfd'][0]
             self.sut = TrexTrafficGenRFC(vnfd)
             self.sut.connection = mock.Mock()
@@ -261,7 +327,7 @@ class TestTrexTrafficGenRFC(unittest.TestCase):
             ssh_mock = mock.Mock(autospec=ssh.SSH)
             ssh_mock.execute = \
                 mock.Mock(return_value=(0, "", ""))
-            ssh.return_value = ssh_mock
+            ssh.from_node.return_value = ssh_mock
             vnfd = self.VNFD['vnfd:vnfd-catalog']['vnfd'][0]
             trex_traffic_gen = TrexTrafficGenRFC(vnfd)
             result = ['0x00', '0x00', '0x00', '0x00', '0x00', '0x01']
@@ -276,7 +342,7 @@ class TestTrexTrafficGenRFC(unittest.TestCase):
                 mock.Mock(return_value=(0, "", ""))
             ssh_mock.run = \
                 mock.Mock(return_value=(0, "", ""))
-            ssh.return_value = ssh_mock
+            ssh.from_node.return_value = ssh_mock
             vnfd = self.VNFD['vnfd:vnfd-catalog']['vnfd'][0]
             trex_traffic_gen = TrexTrafficGenRFC(vnfd)
             tg_rfc2544_trex.WAIT_TIME = 1
@@ -292,7 +358,7 @@ class TestTrexTrafficGenRFC(unittest.TestCase):
                 mock.Mock(return_value=(0, "", ""))
             ssh_mock.run = \
                 mock.Mock(return_value=(0, "", ""))
-            ssh.return_value = ssh_mock
+            ssh.from_node.return_value = ssh_mock
             vnfd = self.VNFD['vnfd:vnfd-catalog']['vnfd'][0]
             self.sut = TrexTrafficGenRFC(vnfd)
             self.sut.connection = mock.Mock()
@@ -301,7 +367,7 @@ class TestTrexTrafficGenRFC(unittest.TestCase):
             client_started = multiprocessing.Value('i', 1)
             result = self.sut.run_traffic(mock_traffic_profile, client_started)
             self.sut._traffic_process.terminate()
-            self.assertEqual(True, result)
+            self.assertIsNotNone(result)
 
     def test_scale(self):
         with mock.patch("yardstick.ssh.SSH") as ssh:
@@ -310,7 +376,7 @@ class TestTrexTrafficGenRFC(unittest.TestCase):
                 mock.Mock(return_value=(0, "", ""))
             ssh_mock.run = \
                 mock.Mock(return_value=(0, "", ""))
-            ssh.return_value = ssh_mock
+            ssh.from_node.return_value = ssh_mock
             vnfd = self.VNFD['vnfd:vnfd-catalog']['vnfd'][0]
             flavor = ""
             trex_traffic_gen = TrexTrafficGenRFC(vnfd)
@@ -323,7 +389,7 @@ class TestTrexTrafficGenRFC(unittest.TestCase):
             ssh_mock = mock.Mock(autospec=ssh.SSH)
             ssh_mock.execute = \
                 mock.Mock(return_value=(0, "", ""))
-            ssh.return_value = ssh_mock
+            ssh.from_node.return_value = ssh_mock
             trex_traffic_gen = TrexTrafficGenRFC(vnfd)
             self.assertEqual(None, trex_traffic_gen.terminate())
 
@@ -333,7 +399,7 @@ class TestTrexTrafficGenRFC(unittest.TestCase):
             ssh_mock = mock.Mock(autospec=ssh.SSH)
             ssh_mock.execute = \
                 mock.Mock(return_value=(0, "", ""))
-            ssh.return_value = ssh_mock
+            ssh.from_node.return_value = ssh_mock
             trex_traffic_gen = TrexTrafficGenRFC(vnfd)
             client = mock.Mock(autospec=STLClient)
             client.connect = mock.Mock(return_value=0)