Esempio n. 1
0
    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(), {})
Esempio n. 2
0
 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')
Esempio n. 3
0
 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'))
Esempio n. 4
0
    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, {})
Esempio n. 5
0
    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)
Esempio n. 6
0
 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)
Esempio n. 7
0
    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())
Esempio n. 8
0
    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)
Esempio n. 9
0
    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)
Esempio n. 11
0
    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)
Esempio n. 12
0
    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)
Esempio n. 13
0
    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))
Esempio n. 14
0
    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)
Esempio n. 15
0
    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)
Esempio n. 16
0
    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()
Esempio n. 18
0
    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)
Esempio n. 19
0
    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)