Remove main() and __main__ from tests.
[yardstick.git] / tests / unit / network_services / vnf_generic / vnf / test_sample_vnf.py
index 2563338..c7d2abc 100644 (file)
@@ -1,6 +1,4 @@
-#!/usr/bin/env python
-
-# Copyright (c) 2017 Intel Corporation
+# Copyright (c) 2017-2018 Intel Corporation
 #
 # Licensed under the Apache License, Version 2.0 (the "License");
 # you may not use this file except in compliance with the License.
 # limitations under the License.
 #
 
+from copy import deepcopy
+
 import unittest
 import mock
-from copy import deepcopy
+import six
 
 from tests.unit.network_services.vnf_generic.vnf.test_base import mock_ssh
 from tests.unit import STL_MOCKS
 from yardstick.benchmark.contexts.base import Context
 from yardstick.common import exceptions as y_exceptions
+from yardstick.common import utils
 from yardstick.network_services.nfvi.resource import ResourceProfile
 from yardstick.network_services.vnf_generic.vnf.base import VnfdHelper
 
@@ -36,7 +37,8 @@ stl_patch = mock.patch.dict("sys.modules", STL_MOCKS)
 stl_patch.start()
 
 if stl_patch:
-    from yardstick.network_services.vnf_generic.vnf.sample_vnf import VnfSshHelper
+    from yardstick.network_services.vnf_generic.vnf import sample_vnf
+    from yardstick.network_services.vnf_generic.vnf.vnf_ssh_helper import VnfSshHelper
     from yardstick.network_services.vnf_generic.vnf.sample_vnf import SampleVNFDeployHelper
     from yardstick.network_services.vnf_generic.vnf.sample_vnf import ScenarioHelper
     from yardstick.network_services.vnf_generic.vnf.sample_vnf import ResourceHelper
@@ -528,46 +530,25 @@ class TestDpdkVnfSetupEnvHelper(unittest.TestCase):
         result = DpdkVnfSetupEnvHelper._update_traffic_type(ip_pipeline_cfg, traffic_options)
         self.assertEqual(result, expected)
 
-    def test__setup_hugepages(self):
-        vnfd_helper = VnfdHelper(self.VNFD_0)
-        ssh_helper = mock.Mock()
-        ssh_helper.execute.return_value = 0, '', ''
-        scenario_helper = mock.Mock()
-        dpdk_setup_helper = DpdkVnfSetupEnvHelper(vnfd_helper, ssh_helper, scenario_helper)
-
-        result = dpdk_setup_helper._setup_hugepages()
-        expect_start_list = ['awk', 'awk', 'echo']
-        expect_in_list = ['meminfo', 'nr_hugepages', '16']
-        call_args_iter = (args[0][0] for args in ssh_helper.execute.call_args_list)
-        self.assertIsNone(result)
-        self.assertEqual(ssh_helper.execute.call_count, 3)
-        for expect_start, expect_in, arg0 in zip(expect_start_list, expect_in_list,
-                                                 call_args_iter):
-            self.assertTrue(arg0.startswith(expect_start))
-            self.assertIn(expect_in, arg0)
-
-    def test__setup_hugepages_2_mb(self):
-        vnfd_helper = VnfdHelper(self.VNFD_0)
+    @mock.patch.object(six, 'BytesIO', return_value=six.BytesIO(b'100\n'))
+    @mock.patch.object(utils, 'read_meminfo',
+                       return_value={'Hugepagesize': '2048'})
+    def test__setup_hugepages(self, mock_meminfo, *args):
         ssh_helper = mock.Mock()
-        ssh_helper.execute.return_value = 0, '2048kB  ', ''
-        scenario_helper = mock.Mock()
-        dpdk_setup_helper = DpdkVnfSetupEnvHelper(vnfd_helper, ssh_helper, scenario_helper)
-
-        result = dpdk_setup_helper._setup_hugepages()
-        expect_start_list = ['awk', 'awk', 'echo']
-        expect_in_list = ['meminfo', 'nr_hugepages', '8192']
-        call_args_iter = (args[0][0] for args in ssh_helper.execute.call_args_list)
-        self.assertIsNone(result)
-        self.assertEqual(ssh_helper.execute.call_count, 3)
-        for expect_start, expect_in, arg0 in zip(expect_start_list, expect_in_list,
-                                                 call_args_iter):
-            self.assertTrue(arg0.startswith(expect_start))
-            self.assertIn(expect_in, arg0)
+        dpdk_setup_helper = DpdkVnfSetupEnvHelper(
+            mock.ANY, ssh_helper, mock.ANY)
+        with mock.patch.object(sample_vnf.LOG, 'info') as mock_info:
+            dpdk_setup_helper._setup_hugepages()
+            mock_info.assert_called_once_with(
+                'Hugepages size (kB): %s, number claimed: %s, number set: '
+                '%s', 2048, 8192, 100)
+        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.patch.object(utils, 'open_relative_file')
+    def test_build_config(self, mock_open_rf, mock_multi_port_config_class, mock_find, *args):
         mock_multi_port_config = mock_multi_port_config_class()
         vnfd_helper = VnfdHelper(self.VNFD_0)
         ssh_helper = mock.Mock()
@@ -584,6 +565,20 @@ class TestDpdkVnfSetupEnvHelper(unittest.TestCase):
         self.assertGreaterEqual(mock_multi_port_config.generate_config.call_count, 1)
         self.assertGreaterEqual(mock_multi_port_config.generate_script.call_count, 1)
 
+        scenario_helper.vnf_cfg = {'file': 'fake_file'}
+        dpdk_setup_helper = DpdkVnfSetupEnvHelper(vnfd_helper, ssh_helper, scenario_helper)
+        mock_open_rf.side_effect = mock.mock_open(read_data='fake_data')
+        dpdk_setup_helper.PIPELINE_COMMAND = expected = 'pipeline command'
+
+        result = dpdk_setup_helper.build_config()
+
+        mock_open_rf.assert_called_once()
+        self.assertEqual(result, expected)
+        self.assertGreaterEqual(ssh_helper.upload_config_file.call_count, 2)
+        self.assertGreaterEqual(mock_find.call_count, 1)
+        self.assertGreaterEqual(mock_multi_port_config.generate_config.call_count, 1)
+        self.assertGreaterEqual(mock_multi_port_config.generate_script.call_count, 1)
+
     def test__build_pipeline_kwargs(self):
         vnfd_helper = VnfdHelper(self.VNFD_0)
         ssh_helper = mock.Mock()
@@ -619,10 +614,15 @@ class TestDpdkVnfSetupEnvHelper(unittest.TestCase):
         ssh_helper = mock.Mock()
         ssh_helper.execute = execute
 
-        dpdk_vnf_setup_env_helper = DpdkVnfSetupEnvHelper(vnfd_helper, ssh_helper, mock.Mock())
+        scenario_helper = mock.Mock()
+        scenario_helper.nodes = [None, None]
+        dpdk_vnf_setup_env_helper = DpdkVnfSetupEnvHelper(vnfd_helper, ssh_helper, scenario_helper)
         dpdk_vnf_setup_env_helper._validate_cpu_cfg = mock.Mock(return_value=[])
 
-        self.assertIsInstance(dpdk_vnf_setup_env_helper.setup_vnf_environment(), ResourceProfile)
+        with mock.patch.object(dpdk_vnf_setup_env_helper, '_setup_dpdk'):
+            self.assertIsInstance(
+                dpdk_vnf_setup_env_helper.setup_vnf_environment(),
+                ResourceProfile)
 
     def test__setup_dpdk(self):
         ssh_helper = mock.Mock()
@@ -638,21 +638,6 @@ class TestDpdkVnfSetupEnvHelper(unittest.TestCase):
             mock.call('lsmod | grep -i igb_uio')
         ])
 
-    def test__setup_dpdk_igb_uio_not_loaded(self):
-        ssh_helper = mock.Mock()
-        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, _):
         vnfd_helper = VnfdHelper(deepcopy(self.VNFD_0))
@@ -690,6 +675,7 @@ class TestDpdkVnfSetupEnvHelper(unittest.TestCase):
         # ssh_helper.execute = mock.Mock(return_value = (0, 'text', ''))
         # ssh_helper.execute.return_value = 0, 'output', ''
         scenario_helper = mock.Mock()
+        scenario_helper.nodes = [None, None]
         rv = ['0000:05:00.1', '0000:05:00.0']
 
         dpdk_setup_helper = DpdkVnfSetupEnvHelper(vnfd_helper, ssh_helper, scenario_helper)
@@ -708,6 +694,7 @@ class TestDpdkVnfSetupEnvHelper(unittest.TestCase):
         vnfd_helper = VnfdHelper(self.VNFD_0)
         ssh_helper = mock.Mock()
         scenario_helper = mock.Mock()
+        scenario_helper.nodes = [None, None]
         dpdk_setup_helper = DpdkVnfSetupEnvHelper(vnfd_helper, ssh_helper, scenario_helper)
         dpdk_setup_helper.dpdk_bind_helper.bind = mock.Mock()
         dpdk_setup_helper.dpdk_bind_helper.used_drivers = {
@@ -1386,7 +1373,7 @@ class TestSampleVNFDeployHelper(unittest.TestCase):
 
     @mock.patch('yardstick.network_services.vnf_generic.vnf.sample_vnf.time')
     @mock.patch('subprocess.check_output')
-    def test_deploy_vnfs_disabled(self, *args):
+    def test_deploy_vnfs_disabled(self, *_):
         vnfd_helper = mock.Mock()
         ssh_helper = mock.Mock()
         ssh_helper.join_bin_path.return_value = 'joined_path'