Ejemplo n.º 1
0
    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)
Ejemplo n.º 2
0
    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)
Ejemplo n.º 3
0
    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))