Merge "Adding scale up feature to prox MPLS Tagging OvS-DPDK & SRIOV"
[yardstick.git] / yardstick / tests / unit / network_services / vnf_generic / vnf / test_sample_vnf.py
index c9d42fb..a1802aa 100644 (file)
@@ -16,14 +16,15 @@ from copy import deepcopy
 
 import unittest
 import mock
-import six
+
+import paramiko
 
 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
 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 import vnf_ssh_helper
 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
@@ -35,6 +36,7 @@ from yardstick.network_services.vnf_generic.vnf.sample_vnf import SampleVNFTraff
 from yardstick.network_services.vnf_generic.vnf.sample_vnf import DpdkVnfSetupEnvHelper
 from yardstick.tests.unit.network_services.vnf_generic.vnf import test_base
 from yardstick.benchmark.contexts import base as ctx_base
+from yardstick import ssh
 
 
 class MockError(Exception):
@@ -83,10 +85,11 @@ class TestVnfSshHelper(unittest.TestCase):
                         'virtual-interface': {
                             'dst_mac': '00:00:00:00:00:03',
                             'vpci': '0000:05:00.0',
+                            'dpdk_port_num': 0,
+                            'driver': 'i40e',
                             'local_ip': '152.16.100.19',
                             'type': 'PCI-PASSTHROUGH',
                             'netmask': '255.255.255.0',
-                            'dpdk_port_num': 0,
                             'bandwidth': '10 Gbps',
                             'dst_ip': '152.16.100.20',
                             'local_mac': '00:00:00:00:00:01',
@@ -100,10 +103,11 @@ class TestVnfSshHelper(unittest.TestCase):
                         'virtual-interface': {
                             'dst_mac': '00:00:00:00:00:04',
                             'vpci': '0000:05:00.1',
+                            'dpdk_port_num': 1,
+                            'driver': 'ixgbe',
                             'local_ip': '152.16.40.19',
                             'type': 'PCI-PASSTHROUGH',
                             'netmask': '255.255.255.0',
-                            'dpdk_port_num': 1,
                             'bandwidth': '10 Gbps',
                             'dst_ip': '152.16.40.20',
                             'local_mac': '00:00:00:00:00:02',
@@ -152,90 +156,88 @@ class TestVnfSshHelper(unittest.TestCase):
         }
     }
 
+    def setUp(self):
+        self.ssh_helper = vnf_ssh_helper.VnfSshHelper(
+            self.VNFD_0['mgmt-interface'], 'my/bin/path')
+        self.ssh_helper._run = mock.Mock()
+
     def assertAll(self, iterable, message=None):
         self.assertTrue(all(iterable), message)
 
     def test_get_class(self):
-        self.assertIs(VnfSshHelper.get_class(), VnfSshHelper)
+        self.assertIs(vnf_ssh_helper.VnfSshHelper.get_class(),
+                      vnf_ssh_helper.VnfSshHelper)
 
-    @mock.patch('yardstick.ssh.paramiko')
+    @mock.patch.object(ssh, 'paramiko')
     def test_copy(self, _):
-        ssh_helper = VnfSshHelper(self.VNFD_0['mgmt-interface'], 'my/bin/path')
-        ssh_helper._run = mock.Mock()
-
-        ssh_helper.execute('ls')
-        self.assertTrue(ssh_helper.is_connected)
-        result = ssh_helper.copy()
-        self.assertIsInstance(result, VnfSshHelper)
+        self.ssh_helper.execute('ls')
+        self.assertTrue(self.ssh_helper.is_connected)
+        result = self.ssh_helper.copy()
+        self.assertIsInstance(result, vnf_ssh_helper.VnfSshHelper)
         self.assertFalse(result.is_connected)
-        self.assertEqual(result.bin_path, ssh_helper.bin_path)
-        self.assertEqual(result.host, ssh_helper.host)
-        self.assertEqual(result.port, ssh_helper.port)
-        self.assertEqual(result.user, ssh_helper.user)
-        self.assertEqual(result.password, ssh_helper.password)
-        self.assertEqual(result.key_filename, ssh_helper.key_filename)
-
-    @mock.patch('yardstick.ssh.paramiko')
+        self.assertEqual(result.bin_path, self.ssh_helper.bin_path)
+        self.assertEqual(result.host, self.ssh_helper.host)
+        self.assertEqual(result.port, self.ssh_helper.port)
+        self.assertEqual(result.user, self.ssh_helper.user)
+        self.assertEqual(result.password, self.ssh_helper.password)
+        self.assertEqual(result.key_filename, self.ssh_helper.key_filename)
+
+    @mock.patch.object(paramiko, 'SSHClient')
     def test_upload_config_file(self, mock_paramiko):
-        ssh_helper = VnfSshHelper(self.VNFD_0['mgmt-interface'], 'my/bin/path')
-        ssh_helper._run = mock.MagicMock()
+        self.assertFalse(self.ssh_helper.is_connected)
+        cfg_file = self.ssh_helper.upload_config_file('/my/prefix', 'my content')
+        self.assertTrue(self.ssh_helper.is_connected)
+        mock_paramiko.assert_called_once()
+        self.assertEqual(cfg_file, '/my/prefix')
 
-        self.assertFalse(ssh_helper.is_connected)
-        cfg_file = ssh_helper.upload_config_file('my/prefix', 'my content')
-        self.assertTrue(ssh_helper.is_connected)
-        mock_paramiko.SSHClient.assert_called_once()
+    @mock.patch.object(paramiko, 'SSHClient')
+    def test_upload_config_file_path_does_not_exist(self, mock_paramiko):
+        self.assertFalse(self.ssh_helper.is_connected)
+        cfg_file = self.ssh_helper.upload_config_file('my/prefix', 'my content')
+        self.assertTrue(self.ssh_helper.is_connected)
+        mock_paramiko.assert_called_once()
         self.assertTrue(cfg_file.startswith('/tmp'))
 
-        cfg_file = ssh_helper.upload_config_file('/my/prefix', 'my content')
-        self.assertTrue(ssh_helper.is_connected)
-        mock_paramiko.SSHClient.assert_called_once()
-        self.assertEqual(cfg_file, '/my/prefix')
-
     def test_join_bin_path(self):
-        ssh_helper = VnfSshHelper(self.VNFD_0['mgmt-interface'], 'my/bin/path')
-
         expected_start = 'my'
         expected_middle_list = ['bin']
         expected_end = 'path'
-        result = ssh_helper.join_bin_path()
+        result = self.ssh_helper.join_bin_path()
         self.assertTrue(result.startswith(expected_start))
         self.assertAll(middle in result for middle in expected_middle_list)
         self.assertTrue(result.endswith(expected_end))
 
         expected_middle_list.append(expected_end)
         expected_end = 'some_file.sh'
-        result = ssh_helper.join_bin_path('some_file.sh')
+        result = self.ssh_helper.join_bin_path('some_file.sh')
         self.assertTrue(result.startswith(expected_start))
         self.assertAll(middle in result for middle in expected_middle_list)
         self.assertTrue(result.endswith(expected_end))
 
         expected_middle_list.append('some_dir')
         expected_end = 'some_file.sh'
-        result = ssh_helper.join_bin_path('some_dir', 'some_file.sh')
+        result = self.ssh_helper.join_bin_path('some_dir', 'some_file.sh')
         self.assertTrue(result.startswith(expected_start))
         self.assertAll(middle in result for middle in expected_middle_list)
         self.assertTrue(result.endswith(expected_end))
 
-    @mock.patch('yardstick.ssh.paramiko')
-    @mock.patch('yardstick.ssh.provision_tool')
+    @mock.patch.object(paramiko, 'SSHClient')
+    @mock.patch.object(ssh, 'provision_tool')
     def test_provision_tool(self, mock_provision_tool, mock_paramiko):
-        ssh_helper = VnfSshHelper(self.VNFD_0['mgmt-interface'], 'my/bin/path')
-        ssh_helper._run = mock.MagicMock()
-
-        self.assertFalse(ssh_helper.is_connected)
-        ssh_helper.provision_tool()
-        self.assertTrue(ssh_helper.is_connected)
-        mock_paramiko.SSHClient.assert_called_once()
+        self.assertFalse(self.ssh_helper.is_connected)
+        self.ssh_helper.provision_tool()
+        self.assertTrue(self.ssh_helper.is_connected)
+        mock_paramiko.assert_called_once()
         mock_provision_tool.assert_called_once()
 
-        ssh_helper.provision_tool(tool_file='my_tool.sh')
-        self.assertTrue(ssh_helper.is_connected)
-        mock_paramiko.SSHClient.assert_called_once()
+        self.ssh_helper.provision_tool(tool_file='my_tool.sh')
+        self.assertTrue(self.ssh_helper.is_connected)
+        mock_paramiko.assert_called_once()
         self.assertEqual(mock_provision_tool.call_count, 2)
 
-        ssh_helper.provision_tool('tool_path', 'my_tool.sh')
-        self.assertTrue(ssh_helper.is_connected)
-        mock_paramiko.SSHClient.assert_called_once()
+        self.ssh_helper.provision_tool('tool_path', 'my_tool.sh')
+        self.assertTrue(self.ssh_helper.is_connected)
+        mock_paramiko.assert_called_once()
         self.assertEqual(mock_provision_tool.call_count, 3)
 
 
@@ -521,38 +523,6 @@ class TestDpdkVnfSetupEnvHelper(unittest.TestCase):
         result = DpdkVnfSetupEnvHelper._update_traffic_type(ip_pipeline_cfg, traffic_options)
         self.assertEqual(result, expected)
 
-    @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_no_hugepages_defined(self, mock_meminfo, *args):
-        ssh_helper = mock.Mock()
-        scenario_helper = mock.Mock()
-        scenario_helper.all_options = {}
-        dpdk_setup_helper = DpdkVnfSetupEnvHelper(
-            mock.ANY, ssh_helper, scenario_helper)
-        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.object(six, 'BytesIO', return_value=six.BytesIO(b'100\n'))
-    @mock.patch.object(utils, 'read_meminfo',
-                       return_value={'Hugepagesize': '1048576'})
-    def test__setup_hugepages_8gb_hugepages_defined(self, mock_meminfo, *args):
-        ssh_helper = mock.Mock()
-        scenario_helper = mock.Mock()
-        scenario_helper.all_options = {'hugepages_gb': 8}
-        dpdk_setup_helper = DpdkVnfSetupEnvHelper(
-            mock.ANY, ssh_helper, scenario_helper)
-        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', 1048576, 8, 100)
-        mock_meminfo.assert_called_once_with(ssh_helper)
-
     @mock.patch('yardstick.network_services.vnf_generic.vnf.sample_vnf.open')
     @mock.patch.object(utils, 'find_relative_file')
     @mock.patch('yardstick.network_services.vnf_generic.vnf.sample_vnf.MultiPortConfig')
@@ -638,15 +608,17 @@ class TestDpdkVnfSetupEnvHelper(unittest.TestCase):
                 dpdk_vnf_setup_env_helper.setup_vnf_environment(),
                 ResourceProfile)
 
-    def test__setup_dpdk(self):
+    @mock.patch.object(utils, 'setup_hugepages')
+    def test__setup_dpdk(self, mock_setup_hugepages):
         ssh_helper = mock.Mock()
         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()
+        scenario_helper = mock.Mock()
+        scenario_helper.all_options = {'hugepages_gb': 8}
+        dpdk_setup_helper = DpdkVnfSetupEnvHelper(mock.ANY, ssh_helper,
+                                                  scenario_helper)
+        dpdk_setup_helper._setup_dpdk()
+        mock_setup_hugepages.assert_called_once_with(ssh_helper, 8*1024*1024)
         ssh_helper.execute.assert_has_calls([
             mock.call('sudo modprobe uio && sudo modprobe igb_uio'),
             mock.call('lsmod | grep -i igb_uio')