summaryrefslogtreecommitdiffstats
path: root/tests/unit/network_services/helpers/test_samplevnf_helper.py
diff options
context:
space:
mode:
authorMartin Banszel <martinx.banszel@intel.com>2017-07-19 19:35:02 +0000
committerEdward MacGillivray <edward.s.macgillivray@intel.com>2017-09-14 15:46:38 -0700
commitbe6e7ed6f053a4a697af939fa0ddcd5dce54c0c8 (patch)
tree5bc4b5bed762d9d4ddf79369d3e925acf86596e2 /tests/unit/network_services/helpers/test_samplevnf_helper.py
parentac0c076ffc701333aed7d65112a0f2e15fda825a (diff)
NSB: fix port topology
Add a new PortPair class to resolve the topology into list of public and private ports. Before we were calculating public/private in multiple locations and using different conventions. In addition for all the DPDK test we need to use the DPDK port number and no rely on interface ordering or interface naming conventions. We used to use xe0 -> 0, xe1 -> 1, etc. This is not the DPDK port number. Use the new dpdknicbind_helper class to parse the output of dpdk-devbind.py to find the actual DPDK port number at runtime. We then use this DPDK port number to correctly calculate the port_mask_hex. The port mask maps the DPDK port num (PMD ID) to the LINK ID used in the pipeline config We also need to make sure we only use the interfaces matched to the topology and not use all the interfaces, because in some cases we will have unused interfaces. In particular TRex always requires an even number of interfaces, so for single port TRex tests we have to create the second port and not use it. Thus we had to modify the traffic generator stats code to only dump stats for used ports and no unused ports. Ixia was using interface ordering to map to Ixia ports, instead we use the dpdk_port_num which must be hardcoded for Ixia. Renamed traffic_profile.execute to traffic_profile.execute_traffic so we can trace the code easier. We pass the port used by the traffic profile to generate_samples so we don't get stats for unused ports. Fixed up vPE config creation and bring up issues. Fixed up CGNAPT and UDP_Replay to work correctly. Tested with 4-port scale-out Change-Id: I2e4f328bff2904108081e92a4bf712333fa73869 Signed-off-by: Ross Brattain <ross.b.brattain@intel.com> Signed-off-by: Edward MacGillivray <edward.s.macgillivray@intel.com>
Diffstat (limited to 'tests/unit/network_services/helpers/test_samplevnf_helper.py')
-rw-r--r--tests/unit/network_services/helpers/test_samplevnf_helper.py480
1 files changed, 282 insertions, 198 deletions
diff --git a/tests/unit/network_services/helpers/test_samplevnf_helper.py b/tests/unit/network_services/helpers/test_samplevnf_helper.py
index 608f31747..3d3f6dc28 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, [("private_0", "public_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_priv_ports(self):
+ vnfd = TestMultiPortConfig.VNFD['vnfd:vnfd-catalog']['vnfd'][0]
+ interfaces = vnfd['vdu'][0]['external-interface']
+ port_pairs = PortPairs(interfaces)
+ self.assertEqual(port_pairs.priv_ports, ["xe0"])
+
+ def test_pub_ports(self):
+ vnfd = TestMultiPortConfig.VNFD['vnfd:vnfd-catalog']['vnfd'][0]
+ interfaces = vnfd['vdu'][0]['external-interface']
+ port_pairs = PortPairs(interfaces)
+ self.assertEqual(port_pairs.pub_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': 'private_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': 'public_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()