Import "traffic_profile" modules only once
[yardstick.git] / tests / unit / network_services / vnf_generic / vnf / test_sample_vnf.py
index 1799353..18a8ab8 100644 (file)
@@ -547,7 +547,7 @@ class TestDpdkVnfSetupEnvHelper(unittest.TestCase):
         mock_meminfo.assert_called_once_with(ssh_helper)
 
     @mock.patch('yardstick.network_services.vnf_generic.vnf.sample_vnf.open')
-    @mock.patch('yardstick.network_services.vnf_generic.vnf.sample_vnf.find_relative_file')
+    @mock.patch.object(utils, 'find_relative_file')
     @mock.patch('yardstick.network_services.vnf_generic.vnf.sample_vnf.MultiPortConfig')
     def test_build_config(self, mock_multi_port_config_class, mock_find, *args):
         mock_multi_port_config = mock_multi_port_config_class()
@@ -609,37 +609,34 @@ class TestDpdkVnfSetupEnvHelper(unittest.TestCase):
                 dpdk_vnf_setup_env_helper.setup_vnf_environment(),
                 ResourceProfile)
 
-    def test__setup_dpdk_early_success(self):
-        vnfd_helper = VnfdHelper(self.VNFD_0)
+    def test__setup_dpdk(self):
         ssh_helper = mock.Mock()
-        ssh_helper.execute.return_value = 0, 'output', ''
-        ssh_helper.join_bin_path.return_value = 'joined_path'
-        ssh_helper.provision_tool.return_value = 'provision string'
-        scenario_helper = mock.Mock()
-        dpdk_setup_helper = DpdkVnfSetupEnvHelper(vnfd_helper, ssh_helper, scenario_helper)
-        dpdk_setup_helper._setup_hugepages = mock.Mock()
-
-        self.assertIsNone(dpdk_setup_helper._setup_dpdk())
-        self.assertEqual(dpdk_setup_helper.ssh_helper.execute.call_count, 2)
-
-    @mock.patch('yardstick.ssh.SSH')
-    def test__setup_dpdk_short(self, _):
-        def execute_side(cmd):
-            if 'joined_path' in cmd:
-                return 0, 'output', ''
-            return 1, 'bad output', 'error output'
+        ssh_helper.execute = mock.Mock()
+        ssh_helper.execute.return_value = (0, 0, 0)
+        dpdk_setup_helper = DpdkVnfSetupEnvHelper(mock.ANY, ssh_helper, mock.ANY)
+        with mock.patch.object(dpdk_setup_helper, '_setup_hugepages') as \
+                mock_setup_hp:
+            dpdk_setup_helper._setup_dpdk()
+        mock_setup_hp.assert_called_once()
+        ssh_helper.execute.assert_has_calls([
+            mock.call('sudo modprobe uio && sudo modprobe igb_uio'),
+            mock.call('lsmod | grep -i igb_uio')
+        ])
 
-        vnfd_helper = VnfdHelper(self.VNFD_0)
+    def test__setup_dpdk_igb_uio_not_loaded(self):
         ssh_helper = mock.Mock()
-        ssh_helper.execute.side_effect = execute_side
-        ssh_helper.join_bin_path.return_value = 'joined_path'
-        ssh_helper.provision_tool.return_value = 'provision string'
-        scenario_helper = mock.Mock()
-        dpdk_setup_helper = DpdkVnfSetupEnvHelper(vnfd_helper, ssh_helper, scenario_helper)
-        dpdk_setup_helper._setup_hugepages = mock.Mock()
-
-        self.assertIsNone(dpdk_setup_helper._setup_dpdk())
-        self.assertEqual(dpdk_setup_helper.ssh_helper.execute.call_count, 3)
+        ssh_helper.execute = mock.Mock()
+        ssh_helper.execute.side_effect = [(0, 0, 0), (1, 0, 0)]
+        dpdk_setup_helper = DpdkVnfSetupEnvHelper(mock.ANY, ssh_helper, mock.ANY)
+        with mock.patch.object(dpdk_setup_helper, '_setup_hugepages') as \
+                mock_setup_hp:
+            with self.assertRaises(y_exceptions.DPDKSetupDriverError):
+                dpdk_setup_helper._setup_dpdk()
+        mock_setup_hp.assert_called_once()
+        ssh_helper.execute.assert_has_calls([
+            mock.call('sudo modprobe uio && sudo modprobe igb_uio'),
+            mock.call('lsmod | grep -i igb_uio')
+        ])
 
     @mock.patch('yardstick.ssh.SSH')
     def test__setup_resources(self, _):