def test_find_net_devices_negative(self): mock_ssh_helper = mock.Mock() mock_ssh_helper.execute.return_value = 1, 'error', 'debug' dpdk_helper = DpdkBindHelper(mock_ssh_helper) self.assertDictEqual(dpdk_helper.find_net_devices(), {})
def test__dpdk_execute_failure(self): conn = mock.Mock() conn.execute = mock.Mock(return_value=(1, 'output', 'error')) conn.provision_tool = mock.Mock(return_value='tool_path') dpdk_bind_helper = DpdkBindHelper(conn) with self.assertRaises(DpdkBindHelperException): dpdk_bind_helper._dpdk_execute('command')
def test__dpdk_execute(self): conn = mock.Mock() conn.execute = mock.Mock(return_value=(0, 'output', 'error')) conn.provision_tool = mock.Mock(return_value='tool_path') dpdk_bind_helper = DpdkBindHelper(conn) self.assertEqual((0, 'output', 'error'), dpdk_bind_helper._dpdk_execute('command'))
def test_save_real_kernel_drivers(self): mock_ssh_helper = mock.Mock() mock_ssh_helper.execute.return_value = 0, '', '' dpdk_helper = DpdkBindHelper(mock_ssh_helper) dpdk_helper.real_kernel_drivers = { 'abc': '123', } dpdk_helper.real_kernel_interface_driver_map = { 'abc': 'AAA', 'def': 'DDD', 'abs': 'AAA', 'ghi': 'GGG', } # save_used_drivers must be called before save_real_kernel_drivers can be with self.assertRaises(AttributeError): dpdk_helper.save_real_kernel_drivers() dpdk_helper.save_used_drivers() expected_used_drivers = { 'AAA': ['abc', 'abs'], 'DDD': ['def'], 'GGG': ['ghi'], } dpdk_helper.save_real_kernel_drivers() self.assertDictEqual(dpdk_helper.used_drivers, expected_used_drivers) self.assertDictEqual(dpdk_helper.real_kernel_drivers, {})
def test_kernel_bound_pci_addresses(self): mock_ssh_helper = mock.Mock() mock_ssh_helper.execute.return_value = 0, '', '' expected = ['a', 'b', 3] dpdk_helper = DpdkBindHelper(mock_ssh_helper) dpdk_helper.dpdk_status = { NETWORK_DPDK: [{ 'vpci': 4 }, { 'vpci': 5 }, { 'vpci': 'g' }], NETWORK_KERNEL: [{ 'vpci': 'a' }, { 'vpci': 'b' }, { 'vpci': 3 }], CRYPTO_DPDK: [], } result = dpdk_helper.kernel_bound_pci_addresses self.assertEqual(result, expected)
def __init__(self, vnfd_helper, ssh_helper, scenario_helper): super(DpdkVnfSetupEnvHelper, self).__init__(vnfd_helper, ssh_helper, scenario_helper) self.all_ports = None self.bound_pci = None self.socket = None self.used_drivers = None self.dpdk_bind_helper = DpdkBindHelper(ssh_helper)
def test_read_status(self): conn = mock.Mock() conn.execute = mock.Mock(return_value=(0, self.EXAMPLE_OUTPUT, '')) conn.provision_tool = mock.Mock(return_value='path_to_tool') dpdk_bind_helper = DpdkBindHelper(conn) self.assertEqual(self.PARSED_EXAMPLE, dpdk_bind_helper.read_status())
def test_parse_dpdk_status_output(self): conn = mock.Mock() dpdk_bind_helper = DpdkBindHelper(conn) dpdk_bind_helper._parse_dpdk_status_output(self.EXAMPLE_OUTPUT) self.maxDiff = None self.assertEqual(self.PARSED_EXAMPLE, dpdk_bind_helper.dpdk_status)
def test__addline(self): conn = mock.Mock() dpdk_bind_helper = DpdkBindHelper(conn) dpdk_bind_helper._add_line(NETWORK_KERNEL, self.ONE_INPUT_LINE) self.assertIsNotNone(dpdk_bind_helper.dpdk_status) self.assertEqual(self.ONE_INPUT_LINE_PARSED, dpdk_bind_helper.dpdk_status[NETWORK_KERNEL])
def test___init__(self): conn = mock.Mock() conn.provision_tool = mock.Mock(return_value='path_to_tool') dpdk_bind_helper = DpdkBindHelper(conn) self.assertEquals(conn, dpdk_bind_helper.ssh_helper) self.assertEquals(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._status_cmd_attr)
def test_save_used_drivers(self): conn = mock.Mock() dpdk_bind_helper = DpdkBindHelper(conn) dpdk_bind_helper.dpdk_status = self.PARSED_EXAMPLE dpdk_bind_helper.save_used_drivers() expected = { 'igb_uio': ['0000:00:04.0', '0000:00:05.0'], 'virtio-pci': ['0000:00:03.0'], } self.assertDictEqual(expected, dpdk_bind_helper.used_drivers)
def test_interface_driver_map(self): conn = mock.Mock() dpdk_bind_helper = DpdkBindHelper(conn) dpdk_bind_helper._parse_dpdk_status_output(self.EXAMPLE_OUTPUT) self.assertEqual( { '0000:00:04.0': 'igb_uio', '0000:00:03.0': 'virtio-pci', '0000:00:05.0': 'igb_uio', }, dpdk_bind_helper.interface_driver_map)
def test__get_bound_pci_addresses(self): conn = mock.Mock() dpdk_bind_helper = DpdkBindHelper(conn) dpdk_bind_helper._parse_dpdk_status_output(self.EXAMPLE_OUTPUT) self.assertEqual( ['0000:00:04.0', '0000:00:05.0'], dpdk_bind_helper._get_bound_pci_addresses(NETWORK_DPDK)) self.assertEqual( ['0000:00:03.0'], dpdk_bind_helper._get_bound_pci_addresses(NETWORK_KERNEL))
def test_get_real_kernel_driver(self): mock_ssh_helper = mock.Mock() mock_ssh_helper.execute.side_effect = [ (0, 'non-matching text', ''), (0, 'pre Kernel modules: real_driver1', ''), (0, 'before Ethernet middle Virtio network device after', ''), ] dpdk_helper = DpdkBindHelper(mock_ssh_helper) self.assertIsNone(dpdk_helper.get_real_kernel_driver('abc')) self.assertEqual(dpdk_helper.get_real_kernel_driver('abc'), 'real_driver1') self.assertEqual(dpdk_helper.get_real_kernel_driver('abc'), DpdkBindHelper.VIRTIO_DRIVER)
def test___init__(self): conn = mock.Mock() conn.provision_tool = mock.Mock(return_value='path_to_tool') conn.join_bin_path.return_value = os.path.join( self.bin_path, DpdkBindHelper.DPDK_DEVBIND) dpdk_bind_helper = DpdkBindHelper(conn) 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.assertEqual( dpdk_bind_helper.dpdk_devbind, os.path.join(self.bin_path, dpdk_bind_helper.DPDK_DEVBIND)) self.assertIsNone(dpdk_bind_helper._status_cmd_attr)
def test_bind_single_pci(self): conn = mock.Mock() conn.execute = mock.Mock(return_value=(0, '', '')) conn.join_bin_path.return_value = os.path.join( self.bin_path, DpdkBindHelper.DPDK_DEVBIND) 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_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() dpdk_bind_helper = DpdkBindHelper(conn) dpdk_bind_helper.bind = mock.Mock() dpdk_bind_helper.used_drivers = { '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', '0000:05:02.0'], 'd3', True)
def test_force_dpdk_rebind(self): mock_ssh_helper = mock.Mock() mock_ssh_helper.execute.return_value = 0, '', '' dpdk_helper = DpdkBindHelper(mock_ssh_helper, 'driver2') dpdk_helper.dpdk_status = { NETWORK_DPDK: [ { 'vpci': 'pci1', }, { 'vpci': 'pci3', }, { 'vpci': 'pci6', }, { 'vpci': 'pci3', }, ] } dpdk_helper.real_kernel_interface_driver_map = { 'pci1': 'real_driver1', 'pci2': 'real_driver2', 'pci3': 'real_driver1', 'pci4': 'real_driver4', 'pci6': 'real_driver6', } dpdk_helper.load_dpdk_driver = mock.Mock() dpdk_helper.read_status = mock.Mock() dpdk_helper.save_real_kernel_interface_driver_map = mock.Mock() dpdk_helper.save_used_drivers = mock.Mock() dpdk_helper.bind = mock_bind = mock.Mock() dpdk_helper.force_dpdk_rebind() self.assertEqual(mock_bind.call_count, 2)