Merge "Module to manage pip packages"
[yardstick.git] / tests / unit / network_services / helpers / test_dpdkbindnic_helper.py
index dbd8396..e30aee8 100644 (file)
 
 import mock
 import unittest
-from yardstick.network_services.helpers.dpdknicbind_helper import DpdkBindHelper
-from yardstick.network_services.helpers.dpdknicbind_helper import DpdkBindHelperException
-from yardstick.network_services.helpers.dpdknicbind_helper import NETWORK_KERNEL
-from yardstick.network_services.helpers.dpdknicbind_helper import NETWORK_DPDK
-from yardstick.network_services.helpers.dpdknicbind_helper import CRYPTO_KERNEL
-from yardstick.network_services.helpers.dpdknicbind_helper import CRYPTO_DPDK
-from yardstick.network_services.helpers.dpdknicbind_helper import NETWORK_OTHER
-from yardstick.network_services.helpers.dpdknicbind_helper import CRYPTO_OTHER
+from yardstick.network_services.helpers.dpdkbindnic_helper import DpdkBindHelper
+from yardstick.network_services.helpers.dpdkbindnic_helper import DpdkBindHelperException
+from yardstick.network_services.helpers.dpdkbindnic_helper import NETWORK_KERNEL
+from yardstick.network_services.helpers.dpdkbindnic_helper import NETWORK_DPDK
+from yardstick.network_services.helpers.dpdkbindnic_helper import CRYPTO_KERNEL
+from yardstick.network_services.helpers.dpdkbindnic_helper import CRYPTO_DPDK
+from yardstick.network_services.helpers.dpdkbindnic_helper import NETWORK_OTHER
+from yardstick.network_services.helpers.dpdkbindnic_helper import CRYPTO_OTHER
 
-pass
 
-
-class MyTestDpdkBindHelper(unittest.TestCase):
+class TestDpdkBindHelper(unittest.TestCase):
     EXAMPLE_OUTPUT = """
 
 Network devices using DPDK-compatible driver
@@ -116,10 +114,10 @@ Other crypto devices
 
         dpdk_bind_helper = DpdkBindHelper(conn)
 
-        self.assertEquals(conn, dpdk_bind_helper.ssh_helper)
-        self.assertEquals(self.CLEAN_STATUS, dpdk_bind_helper.dpdk_status)
+        self.assertEqual(conn, dpdk_bind_helper.ssh_helper)
+        self.assertEqual(self.CLEAN_STATUS, dpdk_bind_helper.dpdk_status)
         self.assertIsNone(dpdk_bind_helper.status_nic_row_re)
-        self.assertIsNone(dpdk_bind_helper._dpdk_nic_bind_attr)
+        self.assertIsNone(dpdk_bind_helper._dpdk_devbind)
         self.assertIsNone(dpdk_bind_helper._status_cmd_attr)
 
     def test__dpdk_execute(self):
@@ -127,7 +125,8 @@ Other crypto devices
         conn.execute = mock.Mock(return_value=(0, 'output', 'error'))
         conn.provision_tool = mock.Mock(return_value='tool_path')
         dpdk_bind_helper = DpdkBindHelper(conn)
-        self.assertEquals((0, 'output', 'error'), dpdk_bind_helper._dpdk_execute('command'))
+        self.assertEqual((0, 'output', 'error'),
+                         dpdk_bind_helper._dpdk_execute('command'))
 
     def test__dpdk_execute_failure(self):
         conn = mock.Mock()
@@ -145,7 +144,7 @@ Other crypto devices
         dpdk_bind_helper._addline(NETWORK_KERNEL, self.ONE_INPUT_LINE)
 
         self.assertIsNotNone(dpdk_bind_helper.dpdk_status)
-        self.assertEquals(self.ONE_INPUT_LINE_PARSED, dpdk_bind_helper.dpdk_status[NETWORK_KERNEL])
+        self.assertEqual(self.ONE_INPUT_LINE_PARSED, dpdk_bind_helper.dpdk_status[NETWORK_KERNEL])
 
     def test__switch_active_dict_by_header(self):
         line = "Crypto devices using DPDK-compatible driver"
@@ -165,7 +164,7 @@ Other crypto devices
         dpdk_bind_helper.parse_dpdk_status_output(self.EXAMPLE_OUTPUT)
 
         self.maxDiff = None
-        self.assertEquals(self.PARSED_EXAMPLE, dpdk_bind_helper.dpdk_status)
+        self.assertEqual(self.PARSED_EXAMPLE, dpdk_bind_helper.dpdk_status)
 
     def test_read_status(self):
         conn = mock.Mock()
@@ -174,7 +173,7 @@ Other crypto devices
 
         dpdk_bind_helper = DpdkBindHelper(conn)
 
-        self.assertEquals(self.PARSED_EXAMPLE, dpdk_bind_helper.read_status())
+        self.assertEqual(self.PARSED_EXAMPLE, dpdk_bind_helper.read_status())
 
     def test__get_bound_pci_addresses(self):
         conn = mock.Mock()
@@ -183,9 +182,9 @@ Other crypto devices
 
         dpdk_bind_helper.parse_dpdk_status_output(self.EXAMPLE_OUTPUT)
 
-        self.assertEquals(['0000:00:04.0', '0000:00:05.0'],
+        self.assertEqual(['0000:00:04.0', '0000:00:05.0'],
                           dpdk_bind_helper._get_bound_pci_addresses(NETWORK_DPDK))
-        self.assertEquals(['0000:00:03.0'],
+        self.assertEqual(['0000:00:03.0'],
                           dpdk_bind_helper._get_bound_pci_addresses(NETWORK_KERNEL))
 
     def test_interface_driver_map(self):
@@ -195,7 +194,7 @@ Other crypto devices
 
         dpdk_bind_helper.parse_dpdk_status_output(self.EXAMPLE_OUTPUT)
 
-        self.assertEquals({'0000:00:04.0': 'igb_uio',
+        self.assertEqual({'0000:00:04.0': 'igb_uio',
                            '0000:00:03.0': 'virtio-pci',
                            '0000:00:05.0': 'igb_uio',
                            },
@@ -204,17 +203,31 @@ Other crypto devices
     def test_bind(self):
         conn = mock.Mock()
         conn.execute = mock.Mock(return_value=(0, '', ''))
-        conn.provision_tool = mock.Mock(return_value='/opt/nsb_bin/dpdk_nic_bind.py')
+        conn.provision_tool = mock.Mock(return_value='/opt/nsb_bin/dpdk-devbind.py')
 
         dpdk_bind_helper = DpdkBindHelper(conn)
         dpdk_bind_helper.read_status = mock.Mock()
 
         dpdk_bind_helper.bind(['0000:00:03.0', '0000:00:04.0'], 'my_driver')
 
-        conn.execute.assert_called_with('sudo /opt/nsb_bin/dpdk_nic_bind.py --force '
+        conn.execute.assert_called_with('sudo /opt/nsb_bin/dpdk-devbind.py --force '
                                         '-b my_driver 0000:00:03.0 0000:00:04.0')
         dpdk_bind_helper.read_status.assert_called_once()
 
+    def test_bind_single_pci(self):
+        conn = mock.Mock()
+        conn.execute = mock.Mock(return_value=(0, '', ''))
+        conn.provision_tool = mock.Mock(return_value='/opt/nsb_bin/dpdk-devbind.py')
+
+        dpdk_bind_helper = DpdkBindHelper(conn)
+        dpdk_bind_helper.read_status = mock.Mock()
+
+        dpdk_bind_helper.bind('0000:00:03.0', 'my_driver')
+
+        conn.execute.assert_called_with('sudo /opt/nsb_bin/dpdk-devbind.py --force '
+                                        '-b my_driver 0000:00:03.0')
+        dpdk_bind_helper.read_status.assert_called_once()
+
     def test_rebind_drivers(self):
         conn = mock.Mock()
 
@@ -222,14 +235,14 @@ Other crypto devices
 
         dpdk_bind_helper.bind = mock.Mock()
         dpdk_bind_helper.used_drivers = {
-            '0000:05:00.0': 'd1',
-            '0000:05:01.0': 'd3',
+            'd1': ['0000:05:00.0'],
+            'd3': ['0000:05:01.0', '0000:05:02.0'],
         }
 
         dpdk_bind_helper.rebind_drivers()
 
-        dpdk_bind_helper.bind.assert_any_call('0000:05:00.0', 'd1', True)
-        dpdk_bind_helper.bind.assert_any_call('0000:05:01.0', 'd3', True)
+        dpdk_bind_helper.bind.assert_any_call(['0000:05:00.0'], 'd1', True)
+        dpdk_bind_helper.bind.assert_any_call(['0000:05:01.0', '0000:05:02.0'], 'd3', True)
 
     def test_save_used_drivers(self):
         conn = mock.Mock()
@@ -239,9 +252,8 @@ Other crypto devices
         dpdk_bind_helper.save_used_drivers()
 
         expected = {
-            '0000:00:04.0': 'igb_uio',
-            '0000:00:05.0': 'igb_uio',
-            '0000:00:03.0': 'virtio-pci',
+            'igb_uio': ['0000:00:04.0', '0000:00:05.0'],
+            'virtio-pci': ['0000:00:03.0'],
         }
 
-        self.assertEqual(expected, dpdk_bind_helper.used_drivers)
+        self.assertDictEqual(expected, dpdk_bind_helper.used_drivers)