Merge "Make Sample VNF hugepages size configurable"
authorRoss Brattain <ross.b.brattain@intel.com>
Thu, 22 Mar 2018 13:40:46 +0000 (13:40 +0000)
committerGerrit Code Review <gerrit@opnfv.org>
Thu, 22 Mar 2018 13:40:46 +0000 (13:40 +0000)
tests/unit/network_services/vnf_generic/vnf/test_sample_vnf.py
yardstick/network_services/vnf_generic/vnf/sample_vnf.py

index c7d2abc..26bd1da 100644 (file)
@@ -533,10 +533,12 @@ class TestDpdkVnfSetupEnvHelper(unittest.TestCase):
     @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):
+    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, mock.ANY)
+            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(
@@ -544,6 +546,22 @@ class TestDpdkVnfSetupEnvHelper(unittest.TestCase):
                 '%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')
index addbd9a..77488c4 100644 (file)
@@ -79,7 +79,6 @@ class DpdkVnfSetupEnvHelper(SetupEnvHelper):
     APP_NAME = 'DpdkVnf'
     FIND_NET_CMD = "find /sys/class/net -lname '*{}*' -printf '%f'"
     NR_HUGEPAGES_PATH = '/proc/sys/vm/nr_hugepages'
-    HUGEPAGES_KB = 1024 * 1024 * 16
 
     @staticmethod
     def _update_packet_type(ip_pipeline_cfg, traffic_options):
@@ -118,7 +117,8 @@ class DpdkVnfSetupEnvHelper(SetupEnvHelper):
     def _setup_hugepages(self):
         meminfo = utils.read_meminfo(self.ssh_helper)
         hp_size_kb = int(meminfo['Hugepagesize'])
-        nr_hugepages = int(abs(self.HUGEPAGES_KB / hp_size_kb))
+        hugepages_gb = self.scenario_helper.all_options.get('hugepages_gb', 16)
+        nr_hugepages = int(abs(hugepages_gb * 1024 * 1024 / hp_size_kb))
         self.ssh_helper.execute('echo %s | sudo tee %s' %
                                 (nr_hugepages, self.NR_HUGEPAGES_PATH))
         hp = six.BytesIO()