def test_update_vpp_mapping(self): tmpdir = tempfile.mkdtemp() vpp_exec_path = os.path.join(tmpdir, 'vpp-exec') utils._VPP_EXEC_FILE = vpp_exec_path def test_get_dpdk_map(): return [{ 'name': 'eth1', 'pci_address': '0000:00:09.0', 'mac_address': '01:02:03:04:05:06', 'driver': 'vfio-pci' }] self.stub_out('os_net_config.utils._get_dpdk_map', test_get_dpdk_map) def test_execute(name, *args, **kwargs): return None, None self.stub_out('oslo_concurrency.processutils.execute', test_execute) def test_get_vpp_interface(pci_dev, tries, timeout): return {'name': 'GigabitEthernet0/9/0', 'index': '1'} self.stub_out('os_net_config.utils._get_vpp_interface', test_get_vpp_interface) int1 = objects.VppInterface('eth1', options="vlan-strip-offload off") int1.pci_dev = '0000:00:09.0' int1.hwaddr = '01:02:03:04:05:06' int2 = objects.VppInterface('eth2') int2.pci_dev = '0000:00:09.1' int2.hwaddr = '01:02:03:04:05:07' interfaces = [int1, int2] utils.update_vpp_mapping(interfaces, []) contents = utils.get_file_data(utils._DPDK_MAPPING_FILE) dpdk_test = [{ 'name': 'eth1', 'pci_address': '0000:00:09.0', 'mac_address': '01:02:03:04:05:06', 'driver': 'vfio-pci' }, { 'name': 'eth2', 'pci_address': '0000:00:09.1', 'mac_address': '01:02:03:04:05:07', 'driver': 'vfio-pci' }] dpdk_map = yaml.safe_load(contents) if contents else [] self.assertEqual(2, len(dpdk_map)) self.assertListEqual(dpdk_test, dpdk_map)
def test_update_vpp_mapping(self): def test_get_dpdk_map(): return [{ 'name': 'eth1', 'pci_address': '0000:00:09.0', 'mac_address': '01:02:03:04:05:06', 'driver': 'vfio-pci' }] self.stubs.Set(utils, '_get_dpdk_map', test_get_dpdk_map) def test_execute(name, dummy1, dummy2=None, dummy3=None): return None, None self.stubs.Set(processutils, 'execute', test_execute) def test_get_vpp_interface_name(pci_dev, tries, timeout): return 'GigabitEthernet0/9/0' self.stubs.Set(utils, '_get_vpp_interface_name', test_get_vpp_interface_name) int1 = objects.VppInterface('eth1', options="vlan-strip-offload off") int1.pci_dev = '0000:00:09.0' int1.hwaddr = '01:02:03:04:05:06' int2 = objects.VppInterface('eth2') int2.pci_dev = '0000:00:09.1' int2.hwaddr = '01:02:03:04:05:07' interfaces = [int1, int2] utils.update_vpp_mapping(interfaces) contents = utils.get_file_data(utils._DPDK_MAPPING_FILE) dpdk_test = [{ 'name': 'eth1', 'pci_address': '0000:00:09.0', 'mac_address': '01:02:03:04:05:06', 'driver': 'vfio-pci' }, { 'name': 'eth2', 'pci_address': '0000:00:09.1', 'mac_address': '01:02:03:04:05:07', 'driver': 'vfio-pci' }] dpdk_map = yaml.load(contents) if contents else [] self.assertEqual(2, len(dpdk_map)) self.assertListEqual(dpdk_test, dpdk_map)
def test_generate_vpp_config(self): tmpdir = tempfile.mkdtemp() config_path = os.path.join(tmpdir, 'startup.conf') with open(config_path, 'w') as f: f.write(_INITIAL_VPP_CONFIG) vpp_exec_path = os.path.join(tmpdir, 'vpp-exec') utils._VPP_EXEC_FILE = vpp_exec_path int1 = objects.VppInterface('em1', options="vlan-strip-offload off") int1.pci_dev = '0000:00:09.0' int2 = objects.VppInterface('em2') int2.pci_dev = '0000:00:09.1' interfaces = [int1, int2] expected_config = ''' unix { exec %s nodaemon log /tmp/vpp.log full-coredump } api-trace { on } api-segment { gid vpp } dpdk { dev 0000:00:09.1 uio-driver vfio-pci dev 0000:00:09.0 {vlan-strip-offload off} } ''' % vpp_exec_path self.assertEqual(expected_config, utils.generate_vpp_config(config_path, interfaces))