diff options
Diffstat (limited to 'tests/unit/network_services/helpers')
3 files changed, 531 insertions, 200 deletions
diff --git a/tests/unit/network_services/helpers/acl_vnf_topology_ixia.yaml b/tests/unit/network_services/helpers/acl_vnf_topology_ixia.yaml index 606d557e9..f60834fbd 100644 --- a/tests/unit/network_services/helpers/acl_vnf_topology_ixia.yaml +++ b/tests/unit/network_services/helpers/acl_vnf_topology_ixia.yaml @@ -27,7 +27,7 @@ nsd:nsd-catalog: VNF model: ../../vnf_descriptors/acl_vnf.yaml vld: - - id: private_1 + - id: uplink_1 name: tg__1 to vnf__1 link 1 type: ELAN vnfd-connection-point-ref: @@ -38,7 +38,7 @@ nsd:nsd-catalog: vnfd-connection-point-ref: xe0 vnfd-id-ref: vnf__1 #VNF - - id: public_1 + - id: downlink_1 name: vnf__1 to tg__1 link 2 type: ELAN vnfd-connection-point-ref: diff --git a/tests/unit/network_services/helpers/test_dpdkbindnic_helper.py b/tests/unit/network_services/helpers/test_dpdkbindnic_helper.py new file mode 100644 index 000000000..dbd8396c8 --- /dev/null +++ b/tests/unit/network_services/helpers/test_dpdkbindnic_helper.py @@ -0,0 +1,247 @@ +#!/usr/bin/env python + +# Copyright (c) 2016-2017 Intel Corporation +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +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 + +pass + + +class MyTestDpdkBindHelper(unittest.TestCase): + EXAMPLE_OUTPUT = """ + +Network devices using DPDK-compatible driver +============================================ +0000:00:04.0 'Virtio network device' drv=igb_uio unused= +0000:00:05.0 'Virtio network device' drv=igb_uio unused= + +Network devices using kernel driver +=================================== +0000:00:03.0 'Virtio network device' if=ens3 drv=virtio-pci unused=igb_uio *Active* + +Other network devices +===================== +<none> + +Crypto devices using DPDK-compatible driver +=========================================== +<none> + +Crypto devices using kernel driver +================================== +<none> + +Other crypto devices +==================== +<none> +""" + + PARSED_EXAMPLE = { + NETWORK_DPDK: [ + {'active': False, + 'dev_type': 'Virtio network device', + 'driver': 'igb_uio', + 'iface': None, + 'unused': '', + 'vpci': '0000:00:04.0', + }, + {'active': False, + 'dev_type': 'Virtio network device', + 'driver': 'igb_uio', + 'iface': None, + 'unused': '', + 'vpci': '0000:00:05.0', + } + ], + NETWORK_KERNEL: [ + {'active': True, + 'dev_type': 'Virtio network device', + 'driver': 'virtio-pci', + 'iface': 'ens3', + 'unused': 'igb_uio', + 'vpci': '0000:00:03.0', + } + ], + CRYPTO_KERNEL: [], + CRYPTO_DPDK: [], + NETWORK_OTHER: [], + CRYPTO_OTHER: [], + } + + CLEAN_STATUS = { + NETWORK_KERNEL: [], + NETWORK_DPDK: [], + CRYPTO_KERNEL: [], + CRYPTO_DPDK: [], + NETWORK_OTHER: [], + CRYPTO_OTHER: [], + } + + ONE_INPUT_LINE = ("0000:00:03.0 'Virtio network device' if=ens3 " + "drv=virtio-pci unused=igb_uio *Active*") + + ONE_INPUT_LINE_PARSED = [{ + 'vpci': '0000:00:03.0', + 'dev_type': 'Virtio network device', + 'iface': 'ens3', + 'driver': 'virtio-pci', + 'unused': 'igb_uio', + 'active': True, + }] + + 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__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.assertEquals((0, 'output', 'error'), dpdk_bind_helper._dpdk_execute('command')) + + 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__addline(self): + conn = mock.Mock() + + dpdk_bind_helper = DpdkBindHelper(conn) + + 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]) + + def test__switch_active_dict_by_header(self): + line = "Crypto devices using DPDK-compatible driver" + olddict = 'olddict' + self.assertEqual(CRYPTO_DPDK, DpdkBindHelper._switch_active_dict(line, olddict)) + + def test__switch_active_dict_by_header_empty(self): + line = "<none>" + olddict = 'olddict' + self.assertEqual(olddict, DpdkBindHelper._switch_active_dict(line, olddict)) + + 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.assertEquals(self.PARSED_EXAMPLE, dpdk_bind_helper.dpdk_status) + + 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.assertEquals(self.PARSED_EXAMPLE, dpdk_bind_helper.read_status()) + + 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.assertEquals(['0000:00:04.0', '0000:00:05.0'], + dpdk_bind_helper._get_bound_pci_addresses(NETWORK_DPDK)) + self.assertEquals(['0000:00:03.0'], + dpdk_bind_helper._get_bound_pci_addresses(NETWORK_KERNEL)) + + 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.assertEquals({'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_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') + + 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 ' + '-b my_driver 0000:00:03.0 0000:00:04.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 = { + '0000:05:00.0': 'd1', + '0000:05:01.0': 'd3', + } + + 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) + + 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 = { + '0000:00:04.0': 'igb_uio', + '0000:00:05.0': 'igb_uio', + '0000:00:03.0': 'virtio-pci', + } + + self.assertEqual(expected, dpdk_bind_helper.used_drivers) diff --git a/tests/unit/network_services/helpers/test_samplevnf_helper.py b/tests/unit/network_services/helpers/test_samplevnf_helper.py index 608f31747..0ac363f28 100644 --- a/tests/unit/network_services/helpers/test_samplevnf_helper.py +++ b/tests/unit/network_services/helpers/test_samplevnf_helper.py @@ -18,91 +18,152 @@ from __future__ import absolute_import from __future__ import division -import os import unittest import mock -from yardstick.network_services.helpers.samplevnf_helper import MultiPortConfig +from yardstick.network_services.helpers.samplevnf_helper import MultiPortConfig, PortPairs +from yardstick.network_services.vnf_generic.vnf.base import VnfdHelper + + +class TestPortPairs(unittest.TestCase): + def test_port_pairs_list(self): + vnfd = TestMultiPortConfig.VNFD['vnfd:vnfd-catalog']['vnfd'][0] + interfaces = vnfd['vdu'][0]['external-interface'] + port_pairs = PortPairs(interfaces) + self.assertEqual(port_pairs.port_pair_list, [("xe0", "xe1")]) + + def test_valid_networks(self): + vnfd = TestMultiPortConfig.VNFD['vnfd:vnfd-catalog']['vnfd'][0] + interfaces = vnfd['vdu'][0]['external-interface'] + port_pairs = PortPairs(interfaces) + self.assertEqual(port_pairs.valid_networks, [("uplink_0", "downlink_0")]) + + def test_all_ports(self): + vnfd = TestMultiPortConfig.VNFD['vnfd:vnfd-catalog']['vnfd'][0] + interfaces = vnfd['vdu'][0]['external-interface'] + port_pairs = PortPairs(interfaces) + self.assertEqual(set(port_pairs.all_ports), {"xe0", "xe1"}) + + def test_uplink_ports(self): + vnfd = TestMultiPortConfig.VNFD['vnfd:vnfd-catalog']['vnfd'][0] + interfaces = vnfd['vdu'][0]['external-interface'] + port_pairs = PortPairs(interfaces) + self.assertEqual(port_pairs.uplink_ports, ["xe0"]) + + def test_downlink_ports(self): + vnfd = TestMultiPortConfig.VNFD['vnfd:vnfd-catalog']['vnfd'][0] + interfaces = vnfd['vdu'][0]['external-interface'] + port_pairs = PortPairs(interfaces) + self.assertEqual(port_pairs.downlink_ports, ["xe1"]) class TestMultiPortConfig(unittest.TestCase): - VNFD = {'vnfd:vnfd-catalog': - {'vnfd': - [{'short-name': 'VpeVnf', - 'vdu': - [{'routing_table': - [{'network': '152.16.100.20', - 'netmask': '255.255.255.0', - 'gateway': '152.16.100.20', - 'if': 'xe0'}, - {'network': '152.16.40.20', - 'netmask': '255.255.255.0', - 'gateway': '152.16.40.20', - 'if': 'xe1'}], - 'description': 'VPE approximation using DPDK', - 'name': 'vpevnf-baremetal', - 'nd_route_tbl': - [{'network': '0064:ff9b:0:0:0:0:9810:6414', - 'netmask': '112', - 'gateway': '0064:ff9b:0:0:0:0:9810:6414', - 'if': 'xe0'}, - {'network': '0064:ff9b:0:0:0:0:9810:2814', - 'netmask': '112', - 'gateway': '0064:ff9b:0:0:0:0:9810:2814', - 'if': 'xe1'}], - 'id': 'vpevnf-baremetal', - 'external-interface': - [ - {'virtual-interface': - { - 'dst_mac': '00:00:00:00:00:04', - 'vpci': '0000:05:00.0', - 'local_ip': '152.16.100.19', - 'type': 'PCI-PASSTHROUGH', - 'netmask': '255.255.255.0', - 'dpdk_port_num': '0', - 'bandwidth': '10 Gbps', - 'driver': "i40e", - 'dst_ip': '152.16.100.20', - 'ifname': 'xe0', - 'local_iface_name': 'eth0', - 'local_mac': '00:00:00:00:00:02', - 'vld_id': 'private_1', - }, - 'vnfd-connection-point-ref': 'xe0', - 'name': 'xe0'}, - {'virtual-interface': - { - 'dst_mac': '00:00:00:00:00:03', - 'vpci': '0000:05:00.1', - 'local_ip': '152.16.40.19', - 'type': 'PCI-PASSTHROUGH', - 'driver': "i40e", - 'netmask': '255.255.255.0', - 'dpdk_port_num': '1', - 'bandwidth': '10 Gbps', - 'dst_ip': '152.16.40.20', - 'ifname': 'xe1', - 'local_iface_name': 'eth1', - 'local_mac': '00:00:00:00:00:01', - 'vld_id': 'public_1', - }, - 'vnfd-connection-point-ref': 'xe1', - 'name': 'xe1'} - ]}], - 'description': 'Vpe approximation using DPDK', - 'mgmt-interface': - {'vdu-id': 'vpevnf-baremetal', - 'host': '1.2.1.1', - 'password': 'r00t', - 'user': 'root', - 'ip': '1.2.1.1'}, - 'benchmark': - {'kpi': ['packets_in', 'packets_fwd', 'packets_dropped']}, - 'connection-point': [{'type': 'VPORT', 'name': 'xe0'}, - {'type': 'VPORT', 'name': 'xe1'}], - 'id': 'AclApproxVnf', 'name': 'VPEVnfSsh'}]}} + + VNFD_0 = {'short-name': 'VpeVnf', + 'vdu': + [{'routing_table': + [{'network': '152.16.100.20', + 'netmask': '255.255.255.0', + 'gateway': '152.16.100.20', + 'if': 'xe0'}, + {'network': '152.16.40.20', + 'netmask': '255.255.255.0', + 'gateway': '152.16.40.20', + 'if': 'xe1'}], + 'description': 'VPE approximation using DPDK', + 'name': 'vpevnf-baremetal', + 'nd_route_tbl': + [{'network': '0064:ff9b:0:0:0:0:9810:6414', + 'netmask': '112', + 'gateway': '0064:ff9b:0:0:0:0:9810:6414', + 'if': 'xe0'}, + {'network': '0064:ff9b:0:0:0:0:9810:2814', + 'netmask': '112', + 'gateway': '0064:ff9b:0:0:0:0:9810:2814', + 'if': 'xe1'}], + 'id': 'vpevnf-baremetal', + 'external-interface': + [ + {'virtual-interface': + { + 'dst_mac': '00:00:00:00:00:04', + 'vpci': '0000:05:00.0', + 'local_ip': '152.16.100.19', + 'type': 'PCI-PASSTHROUGH', + 'netmask': '255.255.255.0', + 'dpdk_port_num': 0, + 'bandwidth': '10 Gbps', + 'driver': "i40e", + 'dst_ip': '152.16.100.20', + 'ifname': 'xe0', + 'local_iface_name': 'eth0', + 'local_mac': '00:00:00:00:00:02', + 'vld_id': 'uplink_0', + }, + 'vnfd-connection-point-ref': 'xe0', + 'name': 'xe0'}, + {'virtual-interface': + { + 'dst_mac': '00:00:00:00:00:03', + 'vpci': '0000:05:00.1', + 'local_ip': '152.16.40.19', + 'type': 'PCI-PASSTHROUGH', + 'driver': "i40e", + 'netmask': '255.255.255.0', + 'dpdk_port_num': 1, + 'bandwidth': '10 Gbps', + 'dst_ip': '152.16.40.20', + 'ifname': 'xe1', + 'local_iface_name': 'eth1', + 'local_mac': '00:00:00:00:00:01', + 'vld_id': 'downlink_0', + }, + 'vnfd-connection-point-ref': 'xe1', + 'name': 'xe1'} + ]}], + 'description': 'Vpe approximation using DPDK', + 'mgmt-interface': + {'vdu-id': 'vpevnf-baremetal', + 'host': '1.2.1.1', + 'password': 'r00t', + 'user': 'root', + 'ip': '1.2.1.1'}, + 'benchmark': + {'kpi': ['packets_in', 'packets_fwd', 'packets_dropped']}, + 'connection-point': [{'type': 'VPORT', 'name': 'xe0'}, + {'type': 'VPORT', 'name': 'xe1'}], + 'id': 'AclApproxVnf', 'name': 'VPEVnfSsh'} + + VNFD = { + 'vnfd:vnfd-catalog': { + 'vnfd': [ + VNFD_0, + ] + } + } + + def test_validate_ip_and_prefixlen(self): + ip_addr, prefix_len = MultiPortConfig.validate_ip_and_prefixlen('10.20.30.40', '16') + self.assertEqual(ip_addr, '10.20.30.40') + self.assertEqual(prefix_len, 16) + + ip_addr, prefix_len = MultiPortConfig.validate_ip_and_prefixlen('::1', '40') + self.assertEqual(ip_addr, '0000:0000:0000:0000:0000:0000:0000:0001') + self.assertEqual(prefix_len, 40) + + def test_validate_ip_and_prefixlen_negative(self): + with self.assertRaises(AttributeError): + MultiPortConfig.validate_ip_and_prefixlen('', '') + + with self.assertRaises(AttributeError): + MultiPortConfig.validate_ip_and_prefixlen('10.20.30.400', '16') + + with self.assertRaises(AttributeError): + MultiPortConfig.validate_ip_and_prefixlen('10.20.30.40', '33') + + with self.assertRaises(AttributeError): + MultiPortConfig.validate_ip_and_prefixlen('::1', '129') @mock.patch('yardstick.network_services.helpers.samplevnf_helper.open') @mock.patch('yardstick.network_services.helpers.samplevnf_helper.os') @@ -111,11 +172,12 @@ class TestMultiPortConfig(unittest.TestCase): topology_file = mock.Mock() config_tpl = mock.Mock() tmp_file = mock.Mock() - opnfv_vnf = MultiPortConfig(topology_file, config_tpl, tmp_file) + vnfd_mock = mock.MagicMock() + opnfv_vnf = MultiPortConfig(topology_file, config_tpl, tmp_file, vnfd_mock) self.assertEqual(0, opnfv_vnf.swq) mock_os.path = mock.MagicMock() mock_os.path.isfile = mock.Mock(return_value=False) - opnfv_vnf = MultiPortConfig(topology_file, config_tpl, tmp_file) + opnfv_vnf = MultiPortConfig(topology_file, config_tpl, tmp_file, vnfd_mock) self.assertEqual(0, opnfv_vnf.swq) @mock.patch('yardstick.network_services.helpers.samplevnf_helper.open') @@ -125,7 +187,8 @@ class TestMultiPortConfig(unittest.TestCase): topology_file = mock.Mock() config_tpl = mock.Mock() tmp_file = mock.Mock() - opnfv_vnf = MultiPortConfig(topology_file, config_tpl, tmp_file) + vnfd_mock = mock.MagicMock() + opnfv_vnf = MultiPortConfig(topology_file, config_tpl, tmp_file, vnfd_mock) opnfv_vnf.get_config_tpl_data = mock.MagicMock() opnfv_vnf.socket = 0 opnfv_vnf.start_core = 0 @@ -139,7 +202,8 @@ class TestMultiPortConfig(unittest.TestCase): topology_file = mock.Mock() config_tpl = mock.Mock() tmp_file = mock.Mock() - opnfv_vnf = MultiPortConfig(topology_file, config_tpl, tmp_file) + vnfd_mock = VnfdHelper(self.VNFD_0) + opnfv_vnf = MultiPortConfig(topology_file, config_tpl, tmp_file, vnfd_mock) opnfv_vnf.get_config_tpl_data = mock.MagicMock() opnfv_vnf.socket = 0 opnfv_vnf.start_core = 0 @@ -148,7 +212,7 @@ class TestMultiPortConfig(unittest.TestCase): mock.Mock(return_value={'link_config': 0, 'arp_config': '', 'arp_config6': '', 'actions': '', 'rules': ''}) - opnfv_vnf.port_pair_list = [[[0], [1]]] + opnfv_vnf.port_pair_list = [("xe0", "xe1")] self.assertIsNotNone(opnfv_vnf.generate_script(self.VNFD)) opnfv_vnf.lb_config = 'HW' self.assertIsNotNone(opnfv_vnf.generate_script(self.VNFD)) @@ -160,12 +224,13 @@ class TestMultiPortConfig(unittest.TestCase): topology_file = mock.Mock() config_tpl = mock.Mock() tmp_file = mock.Mock() - opnfv_vnf = MultiPortConfig(topology_file, config_tpl, tmp_file) + vnfd_mock = mock.MagicMock() + opnfv_vnf = MultiPortConfig(topology_file, config_tpl, tmp_file, vnfd_mock) opnfv_vnf.get_config_tpl_data = mock.MagicMock() opnfv_vnf.socket = 0 opnfv_vnf.start_core = 0 opnfv_vnf.update_write_parser = mock.MagicMock() - opnfv_vnf.port_pair_list = [[[0], [1]]] + opnfv_vnf.port_pair_list = [("xe0", "xe1")] opnfv_vnf.vnf_type = 'ACL' opnfv_vnf.generate_link_config = mock.Mock() opnfv_vnf.generate_arp_config = mock.Mock() @@ -181,7 +246,8 @@ class TestMultiPortConfig(unittest.TestCase): topology_file = mock.Mock() config_tpl = mock.Mock() tmp_file = mock.Mock() - opnfv_vnf = MultiPortConfig(topology_file, config_tpl, tmp_file) + vnfd_mock = mock.MagicMock() + opnfv_vnf = MultiPortConfig(topology_file, config_tpl, tmp_file, vnfd_mock) opnfv_vnf.get_config_tpl_data = mock.MagicMock() opnfv_vnf.socket = 0 opnfv_vnf.start_core = 0 @@ -190,7 +256,7 @@ class TestMultiPortConfig(unittest.TestCase): mock.Mock(return_value={'link_config': 0, 'arp_config': '', 'arp_config6': '', 'actions': '', 'rules': ''}) - opnfv_vnf.port_pair_list = [[[0], [1]]] + opnfv_vnf.port_pair_list = [("xe0", "xe1")] opnfv_vnf.get_port_pairs = mock.Mock() opnfv_vnf.vnf_type = 'ACL' opnfv_vnf.get_ports_gateway = mock.Mock(return_value=u'1.1.1.1') @@ -212,7 +278,8 @@ class TestMultiPortConfig(unittest.TestCase): topology_file = mock.Mock() config_tpl = mock.Mock() tmp_file = mock.Mock() - opnfv_vnf = MultiPortConfig(topology_file, config_tpl, tmp_file) + vnfd_mock = mock.MagicMock() + opnfv_vnf = MultiPortConfig(topology_file, config_tpl, tmp_file, vnfd_mock) opnfv_vnf.get_config_tpl_data = mock.MagicMock() opnfv_vnf.socket = 0 opnfv_vnf.start_core = 0 @@ -221,7 +288,7 @@ class TestMultiPortConfig(unittest.TestCase): mock.Mock(return_value={'link_config': 0, 'arp_config': '', 'arp_config6': '', 'actions': '', 'rules': ''}) - opnfv_vnf.port_pair_list = [[[0], [1]]] + opnfv_vnf.port_pair_list = [("xe0", "xe1")] opnfv_vnf.get_port_pairs = mock.Mock() opnfv_vnf.vnf_type = 'VFW' opnfv_vnf.get_ports_gateway = mock.Mock(return_value=u'1.1.1.1') @@ -239,7 +306,8 @@ class TestMultiPortConfig(unittest.TestCase): topology_file = mock.Mock() config_tpl = mock.Mock() tmp_file = mock.Mock() - opnfv_vnf = MultiPortConfig(topology_file, config_tpl, tmp_file) + vnfd_mock = mock.MagicMock() + opnfv_vnf = MultiPortConfig(topology_file, config_tpl, tmp_file, vnfd_mock) opnfv_vnf.get_config_tpl_data = mock.MagicMock() opnfv_vnf.socket = 0 opnfv_vnf.start_core = 0 @@ -248,7 +316,7 @@ class TestMultiPortConfig(unittest.TestCase): mock.Mock(return_value={'link_config': 0, 'arp_config': '', 'arp_config6': '', 'actions': '', 'rules': ''}) - opnfv_vnf.port_pair_list = [[[0], [1]]] + opnfv_vnf.port_pair_list = [("xe0", "xe1")] opnfv_vnf.get_port_pairs = mock.Mock() opnfv_vnf.vnf_type = 'VFW' opnfv_vnf.get_ports_gateway = mock.Mock(return_value=u'1.1.1.1') @@ -268,7 +336,8 @@ class TestMultiPortConfig(unittest.TestCase): topology_file = mock.Mock() config_tpl = mock.Mock() tmp_file = mock.Mock() - opnfv_vnf = MultiPortConfig(topology_file, config_tpl, tmp_file) + vnfd_mock = mock.MagicMock() + opnfv_vnf = MultiPortConfig(topology_file, config_tpl, tmp_file, vnfd_mock) opnfv_vnf.get_config_tpl_data = mock.MagicMock() opnfv_vnf.socket = 0 opnfv_vnf.start_core = 0 @@ -277,7 +346,7 @@ class TestMultiPortConfig(unittest.TestCase): mock.Mock(return_value={'link_config': 0, 'arp_config': '', 'arp_config6': '', 'actions': '', 'rules': ''}) - opnfv_vnf.port_pair_list = [[[0], [1]]] + opnfv_vnf.port_pair_list = [("xe0", "xe1")] opnfv_vnf.get_port_pairs = mock.Mock() opnfv_vnf.vnf_type = 'VFW' opnfv_vnf.get_ports_gateway = mock.Mock(return_value=u'1.1.1.1') @@ -297,7 +366,8 @@ class TestMultiPortConfig(unittest.TestCase): topology_file = mock.Mock() config_tpl = mock.Mock() tmp_file = mock.Mock() - opnfv_vnf = MultiPortConfig(topology_file, config_tpl, tmp_file) + vnfd_mock = mock.MagicMock() + opnfv_vnf = MultiPortConfig(topology_file, config_tpl, tmp_file, vnfd_mock) opnfv_vnf.get_config_tpl_data = mock.MagicMock() opnfv_vnf.socket = 0 opnfv_vnf.start_core = 0 @@ -306,7 +376,7 @@ class TestMultiPortConfig(unittest.TestCase): mock.Mock(return_value={'link_config': 0, 'arp_config': '', 'arp_config6': '', 'actions': '', 'rules': ''}) - opnfv_vnf.port_pair_list = [[[0], [1]]] + opnfv_vnf.port_pair_list = [("xe0", "xe1")] opnfv_vnf.get_port_pairs = mock.Mock() opnfv_vnf.vnf_type = 'VFW' opnfv_vnf.txrx_pipeline = '' @@ -323,7 +393,8 @@ class TestMultiPortConfig(unittest.TestCase): topology_file = mock.Mock() config_tpl = mock.Mock() tmp_file = mock.Mock() - opnfv_vnf = MultiPortConfig(topology_file, config_tpl, tmp_file) + vnfd_mock = mock.MagicMock() + opnfv_vnf = MultiPortConfig(topology_file, config_tpl, tmp_file, vnfd_mock) opnfv_vnf.get_config_tpl_data = mock.MagicMock() opnfv_vnf.socket = 0 opnfv_vnf.start_core = 0 @@ -332,7 +403,7 @@ class TestMultiPortConfig(unittest.TestCase): mock.Mock(return_value={'link_config': 0, 'arp_config': '', 'arp_config6': '', 'actions': '', 'rules': ''}) - opnfv_vnf.port_pair_list = [[[0], [1]]] + opnfv_vnf.port_pair_list = [("xe0", "xe1")] opnfv_vnf.get_port_pairs = mock.Mock() opnfv_vnf.vnf_type = 'VFW' opnfv_vnf.txrx_pipeline = '' @@ -349,7 +420,8 @@ class TestMultiPortConfig(unittest.TestCase): topology_file = mock.Mock() config_tpl = mock.Mock() tmp_file = mock.Mock() - opnfv_vnf = MultiPortConfig(topology_file, config_tpl, tmp_file) + vnfd_mock = mock.MagicMock() + opnfv_vnf = MultiPortConfig(topology_file, config_tpl, tmp_file, vnfd_mock) opnfv_vnf.get_config_tpl_data = mock.MagicMock() opnfv_vnf.socket = 0 opnfv_vnf.start_core = 0 @@ -358,7 +430,7 @@ class TestMultiPortConfig(unittest.TestCase): mock.Mock(return_value={'link_config': 0, 'arp_config': '', 'arp_config6': '', 'actions': '', 'rules': ''}) - opnfv_vnf.port_pair_list = [[[0], [1]]] + opnfv_vnf.port_pair_list = [("xe0", "xe1")] opnfv_vnf.get_port_pairs = mock.Mock() opnfv_vnf.vnf_type = 'VFW' opnfv_vnf.txrx_pipeline = '' @@ -375,7 +447,8 @@ class TestMultiPortConfig(unittest.TestCase): topology_file = mock.Mock() config_tpl = mock.Mock() tmp_file = mock.Mock() - opnfv_vnf = MultiPortConfig(topology_file, config_tpl, tmp_file) + vnfd_mock = mock.MagicMock() + opnfv_vnf = MultiPortConfig(topology_file, config_tpl, tmp_file, vnfd_mock) opnfv_vnf.get_config_tpl_data = mock.MagicMock() opnfv_vnf.socket = 0 opnfv_vnf.start_core = 0 @@ -384,7 +457,7 @@ class TestMultiPortConfig(unittest.TestCase): mock.Mock(return_value={'link_config': 0, 'arp_config': '', 'arp_config6': '', 'actions': '', 'rules': ''}) - opnfv_vnf.port_pair_list = [[[0], [1]]] + opnfv_vnf.port_pair_list = [("xe0", "xe1")] opnfv_vnf.get_port_pairs = mock.Mock() opnfv_vnf.vnf_type = 'VFW' opnfv_vnf.txrx_pipeline = '' @@ -401,7 +474,9 @@ class TestMultiPortConfig(unittest.TestCase): topology_file = mock.Mock() config_tpl = mock.Mock() tmp_file = mock.Mock() - opnfv_vnf = MultiPortConfig(topology_file, config_tpl, tmp_file) + vnfd_mock = mock.MagicMock() + + opnfv_vnf = MultiPortConfig(topology_file, config_tpl, tmp_file, vnfd_mock) opnfv_vnf.get_config_tpl_data = mock.MagicMock() opnfv_vnf.socket = 0 opnfv_vnf.start_core = 0 @@ -410,7 +485,7 @@ class TestMultiPortConfig(unittest.TestCase): mock.Mock(return_value={'link_config': 0, 'arp_config': '', 'arp_config6': '', 'actions': '', 'rules': ''}) - opnfv_vnf.port_pair_list = [[[0], [1]]] + opnfv_vnf.port_pair_list = [("xe0", "xe1")] opnfv_vnf.get_port_pairs = mock.Mock() opnfv_vnf.vnf_type = 'VFW' opnfv_vnf.txrx_pipeline = '' @@ -418,7 +493,11 @@ class TestMultiPortConfig(unittest.TestCase): opnfv_vnf.get_ports_gateway6 = mock.Mock() opnfv_vnf.vnfd = self.VNFD['vnfd:vnfd-catalog']['vnfd'][0] opnfv_vnf.interfaces = opnfv_vnf.vnfd['vdu'][0]['external-interface'] - self.assertIsNotNone(opnfv_vnf.generate_link_config()) + opnfv_vnf.all_ports = ['32', '1', '987'] + opnfv_vnf.validate_ip_and_prefixlen = mock.Mock(return_value=('10.20.30.40', 16)) + + result = opnfv_vnf.generate_link_config() + self.assertEqual(len(result.splitlines()), 9) @mock.patch('yardstick.network_services.helpers.samplevnf_helper.open') @mock.patch('yardstick.network_services.helpers.samplevnf_helper.os') @@ -427,7 +506,8 @@ class TestMultiPortConfig(unittest.TestCase): topology_file = mock.Mock() config_tpl = mock.Mock() tmp_file = mock.Mock() - opnfv_vnf = MultiPortConfig(topology_file, config_tpl, tmp_file) + vnfd_mock = mock.MagicMock() + opnfv_vnf = MultiPortConfig(topology_file, config_tpl, tmp_file, vnfd_mock) opnfv_vnf.get_config_tpl_data = mock.MagicMock() opnfv_vnf.socket = 0 opnfv_vnf.start_core = 0 @@ -436,7 +516,7 @@ class TestMultiPortConfig(unittest.TestCase): mock.Mock(return_value={'link_config': 0, 'arp_config': '', 'arp_config6': '', 'actions': '', 'rules': ''}) - opnfv_vnf.port_pair_list = [[[0], [1]]] + opnfv_vnf.port_pair_list = [("xe0", "xe1")] opnfv_vnf.txrx_pipeline = '' opnfv_vnf.rules = '' opnfv_vnf.get_ports_gateway6 = mock.Mock() @@ -459,10 +539,11 @@ class TestMultiPortConfig(unittest.TestCase): topology_file = mock.Mock() config_tpl = mock.Mock() tmp_file = mock.Mock() - opnfv_vnf = MultiPortConfig(topology_file, config_tpl, tmp_file) + vnfd_mock = mock.MagicMock() + opnfv_vnf = MultiPortConfig(topology_file, config_tpl, tmp_file, vnfd_mock) opnfv_vnf.socket = 0 opnfv_vnf.start_core = 0 - opnfv_vnf.port_pair_list = [[[0], [1]]] + opnfv_vnf.port_pair_list = [("xe0", "xe1")] opnfv_vnf.txrx_pipeline = '' opnfv_vnf.rules = '' opnfv_vnf.write_parser = mock.MagicMock() @@ -482,10 +563,11 @@ class TestMultiPortConfig(unittest.TestCase): topology_file = mock.Mock() config_tpl = mock.Mock() tmp_file = mock.Mock() - opnfv_vnf = MultiPortConfig(topology_file, config_tpl, tmp_file) + vnfd_mock = mock.MagicMock() + opnfv_vnf = MultiPortConfig(topology_file, config_tpl, tmp_file, vnfd_mock) opnfv_vnf.socket = 0 opnfv_vnf.start_core = 0 - opnfv_vnf.port_pair_list = [[[0], [1]]] + opnfv_vnf.port_pair_list = [("xe0", "xe1")] opnfv_vnf.txrx_pipeline = '' opnfv_vnf.rules = '' opnfv_vnf.write_parser = mock.MagicMock() @@ -505,10 +587,11 @@ class TestMultiPortConfig(unittest.TestCase): topology_file = mock.Mock() config_tpl = mock.Mock() tmp_file = mock.Mock() - opnfv_vnf = MultiPortConfig(topology_file, config_tpl, tmp_file) + vnfd_mock = mock.MagicMock() + opnfv_vnf = MultiPortConfig(topology_file, config_tpl, tmp_file, vnfd_mock) opnfv_vnf.socket = 0 opnfv_vnf.start_core = 0 - opnfv_vnf.port_pair_list = [[[0], [1]]] + opnfv_vnf.port_pair_list = [("xe0", "xe1")] opnfv_vnf.txrx_pipeline = '' opnfv_vnf.rules = '' opnfv_vnf.write_parser = mock.MagicMock() @@ -533,10 +616,11 @@ class TestMultiPortConfig(unittest.TestCase): topology_file = mock.Mock() config_tpl = mock.Mock() tmp_file = mock.Mock() - opnfv_vnf = MultiPortConfig(topology_file, config_tpl, tmp_file) + vnfd_mock = mock.MagicMock() + opnfv_vnf = MultiPortConfig(topology_file, config_tpl, tmp_file, vnfd_mock) opnfv_vnf.socket = 0 opnfv_vnf.start_core = 0 - opnfv_vnf.port_pair_list = [[[0], [1]]] + opnfv_vnf.port_pair_list = [("xe0", "xe1")] opnfv_vnf.txrx_pipeline = '' opnfv_vnf.rules = '' opnfv_vnf.write_parser = mock.MagicMock() @@ -556,10 +640,11 @@ class TestMultiPortConfig(unittest.TestCase): topology_file = mock.Mock() config_tpl = mock.Mock() tmp_file = mock.Mock() - opnfv_vnf = MultiPortConfig(topology_file, config_tpl, tmp_file) + vnfd_mock = mock.MagicMock() + opnfv_vnf = MultiPortConfig(topology_file, config_tpl, tmp_file, vnfd_mock) opnfv_vnf.socket = 0 opnfv_vnf.start_core = 0 - opnfv_vnf.port_pair_list = [[[0], [1]]] + opnfv_vnf.port_pair_list = [("xe0", "xe1")] opnfv_vnf.txrx_pipeline = '' opnfv_vnf.rules = '' opnfv_vnf.write_parser = mock.MagicMock() @@ -581,10 +666,11 @@ class TestMultiPortConfig(unittest.TestCase): topology_file = mock.Mock() config_tpl = mock.Mock() tmp_file = mock.Mock() - opnfv_vnf = MultiPortConfig(topology_file, config_tpl, tmp_file) + vnfd_mock = mock.MagicMock() + opnfv_vnf = MultiPortConfig(topology_file, config_tpl, tmp_file, vnfd_mock) opnfv_vnf.socket = 0 opnfv_vnf.start_core = 0 - opnfv_vnf.port_pair_list = [[[0], [1]]] + opnfv_vnf.port_pair_list = [("xe0", "xe1")] opnfv_vnf.txrx_pipeline = '' opnfv_vnf.rules = '' opnfv_vnf.write_parser = mock.MagicMock() @@ -614,10 +700,11 @@ class TestMultiPortConfig(unittest.TestCase): topology_file = mock.Mock() config_tpl = mock.Mock() tmp_file = mock.Mock() - opnfv_vnf = MultiPortConfig(topology_file, config_tpl, tmp_file) + vnfd_mock = mock.MagicMock() + opnfv_vnf = MultiPortConfig(topology_file, config_tpl, tmp_file, vnfd_mock) opnfv_vnf.socket = 0 opnfv_vnf.start_core = 0 - opnfv_vnf.port_pair_list = [[[0], [1]]] + opnfv_vnf.port_pair_list = [("xe0", "xe1")] opnfv_vnf.txrx_pipeline = '' opnfv_vnf.rules = '' opnfv_vnf.write_parser = mock.MagicMock() @@ -649,10 +736,10 @@ class TestMultiPortConfig(unittest.TestCase): topology_file = mock.Mock() config_tpl = mock.Mock() tmp_file = mock.Mock() - opnfv_vnf = MultiPortConfig(topology_file, config_tpl, tmp_file) + vnfd_mock = VnfdHelper(self.VNFD_0) + opnfv_vnf = MultiPortConfig(topology_file, config_tpl, tmp_file, vnfd_mock) opnfv_vnf.socket = 0 opnfv_vnf.start_core = 0 - opnfv_vnf.port_pair_list = [[[0], [1]]] opnfv_vnf.txrx_pipeline = '' opnfv_vnf.rules = '' opnfv_vnf.write_parser = mock.MagicMock() @@ -666,10 +753,12 @@ class TestMultiPortConfig(unittest.TestCase): opnfv_vnf.worker_config = '1t' opnfv_vnf.start_core = 0 opnfv_vnf.lb_count = 1 + opnfv_vnf._port_pairs = PortPairs(vnfd_mock.interfaces) + opnfv_vnf.port_pair_list = opnfv_vnf._port_pairs.port_pair_list result = opnfv_vnf.generate_lb_to_port_pair_mapping() self.assertEqual(None, result) result = opnfv_vnf.set_priv_to_pub_mapping() - self.assertEqual('(0, 1)', result) + self.assertEqual('(0,1)', result) @mock.patch('yardstick.network_services.helpers.samplevnf_helper.open') @mock.patch('yardstick.network_services.helpers.samplevnf_helper.os') @@ -680,11 +769,12 @@ class TestMultiPortConfig(unittest.TestCase): topology_file = mock.Mock() config_tpl = mock.Mock() tmp_file = mock.Mock() - opnfv_vnf = MultiPortConfig(topology_file, config_tpl, tmp_file) + vnfd_mock = VnfdHelper(self.VNFD_0) + opnfv_vnf = MultiPortConfig(topology_file, config_tpl, tmp_file, vnfd_mock) opnfv_vnf.socket = 0 opnfv_vnf.start_core = 0 - opnfv_vnf.port_pair_list = [[[0], [1]]] - opnfv_vnf.port_pairs = [[[0], [1]]] + opnfv_vnf.port_pair_list = [("xe0", "xe1")] + opnfv_vnf.port_pairs = [("xe0", "xe1")] opnfv_vnf.txrx_pipeline = '' opnfv_vnf.rules = '' opnfv_vnf.write_parser = mock.MagicMock() @@ -702,6 +792,43 @@ class TestMultiPortConfig(unittest.TestCase): self.assertEqual(None, result) @mock.patch('yardstick.network_services.helpers.samplevnf_helper.open') + @mock.patch('yardstick.network_services.helpers.samplevnf_helper.ConfigParser') + def test_generate_arp_route_tbl(self, *_): + topology_file = mock.Mock() + config_tpl = mock.Mock() + tmp_file = mock.Mock() + vnfd_mock = mock.MagicMock() + vnfd_mock.port_num.side_effect = ['32', '1', '987'] + vnfd_mock.find_interface.side_effect = [ + { + 'virtual-interface': { + 'dst_ip': '10.20.30.40', + 'netmask': '20', + }, + }, + { + 'virtual-interface': { + 'dst_ip': '10.200.30.40', + 'netmask': '24', + }, + }, + { + 'virtual-interface': { + 'dst_ip': '10.20.3.40', + 'netmask': '8', + }, + }, + ] + + opnfv_vnf = MultiPortConfig(topology_file, config_tpl, tmp_file, vnfd_mock) + opnfv_vnf.all_ports = [3, 2, 5] + + expected = '(0a141000,fffff000,32,0a141e28) (0ac81e00,ffffff00,1,0ac81e28) ' \ + '(0a000000,ff000000,987,0a140328)' + result = opnfv_vnf.generate_arp_route_tbl() + self.assertEqual(result, expected) + + @mock.patch('yardstick.network_services.helpers.samplevnf_helper.open') @mock.patch('yardstick.network_services.helpers.samplevnf_helper.os') @mock.patch('yardstick.network_services.helpers.samplevnf_helper.ConfigParser') @mock.patch('yardstick.network_services.helpers.samplevnf_helper.OrderedDict') @@ -710,11 +837,12 @@ class TestMultiPortConfig(unittest.TestCase): topology_file = mock.Mock() config_tpl = mock.Mock() tmp_file = mock.Mock() - opnfv_vnf = MultiPortConfig(topology_file, config_tpl, tmp_file) + vnfd_mock = mock.MagicMock() + opnfv_vnf = MultiPortConfig(topology_file, config_tpl, tmp_file, vnfd_mock) opnfv_vnf.socket = 0 opnfv_vnf.start_core = 0 - opnfv_vnf.port_pair_list = [[[0], [1]]] - opnfv_vnf.port_pairs = [[[0], [1]]] + opnfv_vnf.port_pair_list = [("xe0", "xe1")] + opnfv_vnf.port_pairs = [("xe0", "xe1")] opnfv_vnf.txrx_pipeline = '' opnfv_vnf.rules = '' opnfv_vnf.write_parser = mock.MagicMock() @@ -754,11 +882,12 @@ class TestMultiPortConfig(unittest.TestCase): topology_file = mock.Mock() config_tpl = mock.Mock() tmp_file = mock.Mock() - opnfv_vnf = MultiPortConfig(topology_file, config_tpl, tmp_file) + vnfd_mock = mock.MagicMock() + opnfv_vnf = MultiPortConfig(topology_file, config_tpl, tmp_file, vnfd_mock) opnfv_vnf.socket = 0 opnfv_vnf.start_core = 0 - opnfv_vnf.port_pair_list = [[[0], [1]]] - opnfv_vnf.port_pairs = [[[0], [1]]] + opnfv_vnf.port_pair_list = [("xe0", "xe1")] + opnfv_vnf.port_pairs = [("xe0", "xe1")] opnfv_vnf.txrx_pipeline = '' opnfv_vnf.rules = '' opnfv_vnf.write_parser = mock.MagicMock() @@ -795,11 +924,12 @@ class TestMultiPortConfig(unittest.TestCase): topology_file = mock.Mock() config_tpl = mock.Mock() tmp_file = mock.Mock() - opnfv_vnf = MultiPortConfig(topology_file, config_tpl, tmp_file) + vnfd_mock = mock.MagicMock() + opnfv_vnf = MultiPortConfig(topology_file, config_tpl, tmp_file, vnfd_mock) opnfv_vnf.socket = 0 opnfv_vnf.start_core = 0 - opnfv_vnf.port_pair_list = [[[0], [1]]] - opnfv_vnf.port_pairs = [[[0], [1]]] + opnfv_vnf.port_pair_list = [("xe0", "xe1")] + opnfv_vnf.port_pairs = [("xe0", "xe1")] opnfv_vnf.txrx_pipeline = '' opnfv_vnf.rules = '' opnfv_vnf.write_parser = mock.MagicMock() @@ -848,11 +978,12 @@ class TestMultiPortConfig(unittest.TestCase): topology_file = mock.Mock() config_tpl = mock.Mock() tmp_file = mock.Mock() - opnfv_vnf = MultiPortConfig(topology_file, config_tpl, tmp_file) + vnfd_mock = mock.MagicMock() + opnfv_vnf = MultiPortConfig(topology_file, config_tpl, tmp_file, vnfd_mock) opnfv_vnf.socket = 0 opnfv_vnf.start_core = 0 - opnfv_vnf.port_pair_list = [[[0], [1]]] - opnfv_vnf.port_pairs = [[[0], [1]]] + opnfv_vnf.port_pair_list = [("xe0", "xe1")] + opnfv_vnf.port_pairs = [("xe0", "xe1")] opnfv_vnf.txrx_pipeline = '' opnfv_vnf.rules = '' opnfv_vnf.write_parser = mock.MagicMock() @@ -884,11 +1015,12 @@ class TestMultiPortConfig(unittest.TestCase): topology_file = mock.Mock() config_tpl = mock.Mock() tmp_file = mock.Mock() - opnfv_vnf = MultiPortConfig(topology_file, config_tpl, tmp_file) + vnfd_mock = mock.MagicMock() + opnfv_vnf = MultiPortConfig(topology_file, config_tpl, tmp_file, vnfd_mock) opnfv_vnf.socket = 0 opnfv_vnf.start_core = 0 - opnfv_vnf.port_pair_list = [[[0], [1]]] - opnfv_vnf.port_pairs = [[[0], [1]]] + opnfv_vnf.port_pair_list = [("xe0", "xe1")] + opnfv_vnf.port_pairs = [("xe0", "xe1")] opnfv_vnf.txrx_pipeline = '' opnfv_vnf.rules = '' opnfv_vnf.write_parser = mock.MagicMock() @@ -932,11 +1064,12 @@ class TestMultiPortConfig(unittest.TestCase): topology_file = mock.Mock() config_tpl = mock.Mock() tmp_file = mock.Mock() - opnfv_vnf = MultiPortConfig(topology_file, config_tpl, tmp_file) + vnfd_mock = VnfdHelper(self.VNFD_0) + opnfv_vnf = MultiPortConfig(topology_file, config_tpl, tmp_file, vnfd_mock) opnfv_vnf.socket = 0 opnfv_vnf.start_core = 0 - opnfv_vnf.port_pair_list = [[[0], [1]]] - opnfv_vnf.port_pairs = [[[0], [1]]] + opnfv_vnf.port_pair_list = [("xe0", "xe1")] + opnfv_vnf.port_pairs = [("xe0", "xe1")] opnfv_vnf.txrx_pipeline = '' opnfv_vnf.rules = '' opnfv_vnf.write_parser = mock.MagicMock() @@ -982,7 +1115,7 @@ class TestMultiPortConfig(unittest.TestCase): opnfv_vnf.loadb_tpl = mock.MagicMock() opnfv_vnf.vnf_type = 'CGNAPT' opnfv_vnf.update_timer = mock.Mock() - opnfv_vnf.port_pair_list = [[[0], [1], [2]]] + opnfv_vnf.port_pair_list = [("xe0", "xe1"), ("xe0", "xe2")] opnfv_vnf.lb_to_port_pair_mapping = [0, 1] opnfv_vnf.generate_arpicmp_data = mock.Mock() result = opnfv_vnf.generate_config_data() @@ -992,66 +1125,17 @@ class TestMultiPortConfig(unittest.TestCase): @mock.patch('yardstick.network_services.helpers.samplevnf_helper.os') @mock.patch('yardstick.network_services.helpers.samplevnf_helper.ConfigParser') @mock.patch('yardstick.network_services.helpers.samplevnf_helper.OrderedDict') - def test_get_port_pairs(self, mock_open, mock_os, ConfigParser, - OrderedDict): - topology_file = mock.Mock() - config_tpl = mock.Mock() - tmp_file = mock.Mock() - opnfv_vnf = MultiPortConfig(topology_file, config_tpl, tmp_file) - opnfv_vnf.socket = 0 - opnfv_vnf.start_core = 0 - opnfv_vnf.port_pair_list = [[[0], [1]]] - opnfv_vnf.port_pairs = [[[0], [1]]] - opnfv_vnf.txrx_pipeline = '' - opnfv_vnf.rules = '' - opnfv_vnf.write_parser = mock.MagicMock() - opnfv_vnf.read_parser = mock.MagicMock() - opnfv_vnf.read_parser.sections = mock.Mock(return_value=['MASTER']) - opnfv_vnf.read_parser.has_option = mock.Mock(return_value=[]) - opnfv_vnf.write_parser.set = mock.Mock() - opnfv_vnf.write_parser.add_section = mock.Mock() - opnfv_vnf.read_parser.items = mock.MagicMock() - opnfv_vnf.pipeline_counter = 0 - opnfv_vnf.worker_config = '1t' - opnfv_vnf.start_core = 0 - opnfv_vnf.lb_count = 1 - opnfv_vnf.vnfd = self.VNFD['vnfd:vnfd-catalog']['vnfd'][0] - opnfv_vnf.interfaces = opnfv_vnf.vnfd['vdu'][0]['external-interface'] - opnfv_vnf.lb_to_port_pair_mapping = [0, 1] - opnfv_vnf.lb_index = 1 - opnfv_vnf.ports_len = 1 - opnfv_vnf.pktq_out = ['1', '2'] - opnfv_vnf.prv_que_handler = 0 - opnfv_vnf.init_write_parser_template = mock.Mock() - opnfv_vnf.arpicmp_tpl = mock.MagicMock() - opnfv_vnf.txrx_tpl = mock.MagicMock() - opnfv_vnf.loadb_tpl = mock.MagicMock() - opnfv_vnf.vnf_tpl = {'public_ip_port_range': '98164810 (1,65535)', - 'vnf_set': '(2,4,5)'} - opnfv_vnf.generate_vnf_data = mock.Mock(return_value={}) - opnfv_vnf.update_write_parser = mock.Mock() - - curr_path = os.path.dirname(os.path.abspath(__file__)) - opnfv_vnf.topology_file = \ - os.path.join(curr_path, 'acl_vnf_topology_ixia.yaml') - opnfv_vnf.lb_count = 10 - result = opnfv_vnf.get_port_pairs(opnfv_vnf.interfaces) - self.assertEqual(result[0], [('xe0', 'xe1')]) - - @mock.patch('yardstick.network_services.helpers.samplevnf_helper.open') - @mock.patch('yardstick.network_services.helpers.samplevnf_helper.os') - @mock.patch('yardstick.network_services.helpers.samplevnf_helper.ConfigParser') - @mock.patch('yardstick.network_services.helpers.samplevnf_helper.OrderedDict') def test_init_eal(self, mock_open, mock_os, ConfigParser, OrderedDict): topology_file = mock.Mock() config_tpl = mock.Mock() tmp_file = mock.Mock() - opnfv_vnf = MultiPortConfig(topology_file, config_tpl, tmp_file) + vnfd_mock = mock.MagicMock() + opnfv_vnf = MultiPortConfig(topology_file, config_tpl, tmp_file, vnfd_mock) opnfv_vnf.socket = 0 opnfv_vnf.start_core = 0 - opnfv_vnf.port_pair_list = [[[0], [1]]] - opnfv_vnf.port_pairs = [[[0], [1]]] + opnfv_vnf.port_pair_list = [("xe0", "xe1")] + opnfv_vnf.port_pairs = [("xe0", "xe1")] opnfv_vnf.txrx_pipeline = '' opnfv_vnf.rules = '' opnfv_vnf.write_parser = mock.MagicMock() |