diff options
author | Emma Foley <emma.l.foley@intel.com> | 2018-04-27 10:30:20 +0000 |
---|---|---|
committer | Emma Foley <emma.l.foley@intel.com> | 2018-06-26 10:34:06 +0100 |
commit | db7a547fdbfc1690d4a9d46f761f73b8cd998b54 (patch) | |
tree | 9c4af8d3260a64a76d974d3d7432ed39e018864c /tests/unit/network_services/vnf_generic/vnf/test_vpe_vnf.py | |
parent | 87fdd3f5135639de4e65b66fa67bc5d04b486f25 (diff) |
Move tests: unit/network_services/vnf_generic
* Fix pylint errors
* Add TODOs
Some errors are ignored locally, as they were a symptom of other problems.
These issues have been flagged with a TODO, and should be fixed later.
JIRA: YARDSTICK-837
Signed-off-by: Emma Foley <emma.l.foley@intel.com>
Change-Id: I3d95537a64bde923703421510d27bac0d6dd92bd
(cherry-picked from commit 98294f2c8153f663c3b3a4e4cb98910e9d5cb602)
Diffstat (limited to 'tests/unit/network_services/vnf_generic/vnf/test_vpe_vnf.py')
-rw-r--r-- | tests/unit/network_services/vnf_generic/vnf/test_vpe_vnf.py | 794 |
1 files changed, 0 insertions, 794 deletions
diff --git a/tests/unit/network_services/vnf_generic/vnf/test_vpe_vnf.py b/tests/unit/network_services/vnf_generic/vnf/test_vpe_vnf.py deleted file mode 100644 index 9857e95b6..000000000 --- a/tests/unit/network_services/vnf_generic/vnf/test_vpe_vnf.py +++ /dev/null @@ -1,794 +0,0 @@ -# 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. -# - -from multiprocessing import Process, Queue -import os -import time - -import mock -from six.moves import configparser -import unittest - -from tests.unit import STL_MOCKS -from tests.unit.network_services.vnf_generic.vnf.test_base import FileAbsPath -from tests.unit.network_services.vnf_generic.vnf.test_base import mock_ssh -from yardstick.network_services.vnf_generic.vnf.base import QueueFileWrapper -from yardstick.network_services.vnf_generic.vnf.base import VnfdHelper - - -SSH_HELPER = 'yardstick.network_services.vnf_generic.vnf.sample_vnf.VnfSshHelper' - -STLClient = mock.MagicMock() -stl_patch = mock.patch.dict("sys.modules", STL_MOCKS) -stl_patch.start() - -if stl_patch: - from yardstick.network_services.vnf_generic.vnf.vpe_vnf import ConfigCreate - from yardstick.network_services.nfvi.resource import ResourceProfile - from yardstick.network_services.vnf_generic.vnf.vpe_vnf import \ - VpeApproxVnf, VpeApproxSetupEnvHelper - - -TEST_FILE_YAML = 'nsb_test_case.yaml' - -NAME = 'vnf_1' - -PING_OUTPUT_1 = "Pkts in: 101\r\n\tPkts dropped by AH: 100\r\n\tPkts dropped by other: 100" - -MODULE_PATH = FileAbsPath(__file__) -get_file_abspath = MODULE_PATH.get_path - - -class TestConfigCreate(unittest.TestCase): - - 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:03', - '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', - 'dst_ip': '152.16.100.20', - 'local_mac': '00:00:00:00:00:01', - 'vld_id': 'uplink_0', - 'ifname': 'xe0', - }, - 'vnfd-connection-point-ref': 'xe0', - 'name': 'xe0' - }, - { - 'virtual-interface': { - 'dst_mac': '00:00:00:00:00:04', - 'vpci': '0000:05:00.1', - 'local_ip': '152.16.40.19', - 'type': 'PCI-PASSTHROUGH', - 'netmask': '255.255.255.0', - 'dpdk_port_num': 1, - 'bandwidth': '10 Gbps', - 'dst_ip': '152.16.40.20', - 'local_mac': '00:00:00:00:00:02', - 'vld_id': 'downlink_0', - 'ifname': 'xe1', - }, - 'vnfd-connection-point-ref': 'xe1', - 'name': 'xe1' - }, - ], - }, - ], - 'description': 'Vpe approximation using DPDK', - 'mgmt-interface': { - 'vdu-id': 'vpevnf-baremetal', - 'host': '1.1.1.1', - 'password': 'r00t', - 'user': 'root', - 'ip': '1.1.1.1' - }, - 'benchmark': { - 'kpi': [ - 'packets_in', - 'packets_fwd', - 'packets_dropped', - ], - }, - 'connection-point': [ - { - 'type': 'VPORT', - 'name': 'xe0', - }, - { - 'type': 'VPORT', - 'name': 'xe1', - }, - ], - 'id': 'VpeApproxVnf', 'name': 'VPEVnfSsh' - } - - def test___init__(self): - vnfd_helper = VnfdHelper(self.VNFD_0) - config_create = ConfigCreate(vnfd_helper, 2) - self.assertEqual(config_create.uplink_ports, ['xe0']) - self.assertEqual(config_create.downlink_ports, ['xe1']) - self.assertEqual(config_create.socket, 2) - - def test_dpdk_port_to_link_id(self): - vnfd_helper = VnfdHelper(self.VNFD_0) - config_create = ConfigCreate(vnfd_helper, 2) - self.assertEqual(config_create.dpdk_port_to_link_id_map, {'xe0': 0, 'xe1': 1}) - - def test_vpe_initialize(self): - vnfd_helper = VnfdHelper(self.VNFD_0) - config_create = ConfigCreate(vnfd_helper, 2) - config = configparser.ConfigParser() - config_create.vpe_initialize(config) - self.assertEqual(config.get('EAL', 'log_level'), '0') - self.assertEqual(config.get('PIPELINE0', 'type'), 'MASTER') - self.assertEqual(config.get('PIPELINE0', 'core'), 's2C0') - self.assertEqual(config.get('MEMPOOL0', 'pool_size'), '256K') - self.assertEqual(config.get('MEMPOOL1', 'pool_size'), '2M') - - def test_vpe_rxq(self): - vnfd_helper = VnfdHelper(self.VNFD_0) - config_create = ConfigCreate(vnfd_helper, 2) - config = configparser.ConfigParser() - config_create.downlink_ports = ['xe0'] - config_create.vpe_rxq(config) - self.assertEqual(config.get('RXQ0.0', 'mempool'), 'MEMPOOL1') - - def test_get_sink_swq(self): - vnfd_helper = VnfdHelper(self.VNFD_0) - config_create = ConfigCreate(vnfd_helper, 2) - config = configparser.ConfigParser() - config.add_section('PIPELINE0') - config.set('PIPELINE0', 'key1', 'value1') - config.set('PIPELINE0', 'key2', 'value2 SINK') - config.set('PIPELINE0', 'key3', 'TM value3') - config.set('PIPELINE0', 'key4', 'value4') - config.set('PIPELINE0', 'key5', 'the SINK value5') - - self.assertEqual(config_create.get_sink_swq(config, 'PIPELINE0', 'key1', 5), 'SWQ-1') - self.assertEqual(config_create.get_sink_swq(config, 'PIPELINE0', 'key2', 5), 'SWQ-1 SINK0') - self.assertEqual(config_create.get_sink_swq(config, 'PIPELINE0', 'key3', 5), 'SWQ-1 TM5') - config_create.sw_q += 1 - self.assertEqual(config_create.get_sink_swq(config, 'PIPELINE0', 'key4', 5), 'SWQ0') - self.assertEqual(config_create.get_sink_swq(config, 'PIPELINE0', 'key5', 5), 'SWQ0 SINK1') - - def test_generate_vpe_script(self): - vnfd_helper = VnfdHelper(self.VNFD_0) - vpe_config_vnf = ConfigCreate(vnfd_helper, 2) - intf = [ - { - "name": 'xe1', - "virtual-interface": { - "dst_ip": "1.1.1.1", - "dst_mac": "00:00:00:00:00:00:02", - }, - }, - { - "name": 'xe2', - "virtual-interface": { - "dst_ip": "1.1.1.1", - "dst_mac": "00:00:00:00:00:00:02", - }, - }, - ] - vpe_config_vnf.downlink_ports = ['xe1'] - vpe_config_vnf.uplink_ports = ['xe2'] - result = vpe_config_vnf.generate_vpe_script(intf) - self.assertIsInstance(result, str) - self.assertNotEqual(result, '') - - def test_create_vpe_config(self): - vnfd_helper = VnfdHelper(self.VNFD_0) - config_create = ConfigCreate(vnfd_helper, 23) - config_create.downlink_ports = ['xe1'] - config_create.uplink_ports = ['xe1'] - curr_path = os.path.dirname(os.path.abspath(__file__)) - vpe_cfg = "samples/vnf_samples/nsut/vpe/vpe_config" - vnf_cfg = os.path.join(curr_path, "../../../../..", vpe_cfg) - config_create.create_vpe_config(vnf_cfg) - os.system("git checkout -- %s" % vnf_cfg) - - -class TestVpeApproxVnf(unittest.TestCase): - - 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', - 'local_iface_name': 'xe0', - 'local_mac': '00:00:00:00:00:02', - 'vld_id': 'uplink_0', - 'ifname': 'xe0', - }, - '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', - 'local_iface_name': 'xe1', - 'local_mac': '00:00:00:00:00:01', - 'vld_id': 'downlink_0', - 'ifname': 'xe1', - }, - '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': 'VpeApproxVnf', - 'name': 'VPEVnfSsh', - } - - VNFD = { - 'vnfd:vnfd-catalog': { - 'vnfd': [ - VNFD_0, - ], - }, - } - - SCENARIO_CFG = { - 'options': { - 'packetsize': 64, - 'traffic_type': 4, - 'rfc2544': { - 'allowed_drop_rate': '0.8 - 1', - }, - 'vnf__1': { - 'cfg': 'acl_1rule.yaml', - 'vnf_config': { - 'lb_config': 'SW', - 'lb_count': 1, - 'worker_config': - '1C/1T', - 'worker_threads': 1, - }, - } - }, - 'task_id': 'a70bdf4a-8e67-47a3-9dc1-273c14506eb7', - 'tc': 'tc_ipv4_1Mflow_64B_packetsize', - 'runner': { - 'object': 'NetworkServiceTestCase', - 'interval': 35, - 'output_filename': '/tmp/yardstick.out', - 'runner_id': 74476, - 'duration': 400, - 'type': 'Duration', - }, - 'traffic_profile': 'ipv4_throughput_vpe.yaml', - 'traffic_options': { - 'flow': 'ipv4_Packets_vpe.yaml', - 'imix': 'imix_voice.yaml', - }, - 'type': 'ISB', - 'nodes': { - 'tg__2': 'trafficgen_2.yardstick', - 'tg__1': 'trafficgen_1.yardstick', - 'vnf__1': 'vnf.yardstick', - }, - 'topology': 'vpe-tg-topology-baremetal.yaml', - } - - CONTEXT_CFG = { - 'nodes': { - 'tg__2': { - 'member-vnf-index': '3', - 'role': 'TrafficGen', - 'name': 'trafficgen_2.yardstick', - 'vnfd-id-ref': 'tg__2', - 'ip': '1.2.1.1', - 'interfaces': { - 'xe0': { - 'local_iface_name': 'ens513f0', - 'vld_id': VpeApproxVnf.DOWNLINK, - 'netmask': '255.255.255.0', - 'local_ip': '152.16.40.20', - 'dst_mac': '00:00:00:00:00:01', - 'local_mac': '00:00:00:00:00:03', - 'dst_ip': '152.16.40.19', - 'driver': 'ixgbe', - 'vpci': '0000:02:00.0', - 'dpdk_port_num': 0, - }, - 'xe1': { - 'local_iface_name': 'ens513f1', - 'netmask': '255.255.255.0', - 'network': '202.16.100.0', - 'local_ip': '202.16.100.20', - 'local_mac': '00:1e:67:d0:60:5d', - 'driver': 'ixgbe', - 'vpci': '0000:02:00.1', - 'dpdk_port_num': 1, - }, - }, - 'password': 'r00t', - 'VNF model': 'l3fwd_vnf.yaml', - 'user': 'root', - }, - 'tg__1': { - 'member-vnf-index': '1', - 'role': 'TrafficGen', - 'name': 'trafficgen_1.yardstick', - 'vnfd-id-ref': 'tg__1', - 'ip': '1.2.1.1', - 'interfaces': { - 'xe0': { - 'local_iface_name': 'ens785f0', - 'vld_id': VpeApproxVnf.UPLINK, - 'netmask': '255.255.255.0', - 'local_ip': '152.16.100.20', - 'dst_mac': '00:00:00:00:00:02', - 'local_mac': '00:00:00:00:00:04', - 'dst_ip': '152.16.100.19', - 'driver': 'i40e', - 'vpci': '0000:05:00.0', - 'dpdk_port_num': 0, - }, - 'xe1': { - 'local_iface_name': 'ens785f1', - 'netmask': '255.255.255.0', - 'local_ip': '152.16.100.21', - 'local_mac': '00:00:00:00:00:01', - 'driver': 'i40e', - 'vpci': '0000:05:00.1', - 'dpdk_port_num': 1, - }, - }, - 'password': 'r00t', - 'VNF model': 'tg_rfc2544_tpl.yaml', - 'user': 'root', - }, - 'vnf__1': { - 'name': 'vnf.yardstick', - 'vnfd-id-ref': 'vnf__1', - 'ip': '1.2.1.1', - 'interfaces': { - 'xe0': { - 'local_iface_name': 'ens786f0', - 'vld_id': VpeApproxVnf.UPLINK, - 'netmask': '255.255.255.0', - 'local_ip': '152.16.100.19', - 'dst_mac': '00:00:00:00:00:04', - 'local_mac': '00:00:00:00:00:02', - 'dst_ip': '152.16.100.20', - 'driver': 'i40e', - 'vpci': '0000:05:00.0', - 'dpdk_port_num': 0, - }, - 'xe1': { - 'local_iface_name': 'ens786f1', - 'vld_id': VpeApproxVnf.DOWNLINK, - 'netmask': '255.255.255.0', - 'local_ip': '152.16.40.19', - 'dst_mac': '00:00:00:00:00:03', - 'local_mac': '00:00:00:00:00:01', - 'dst_ip': '152.16.40.20', - 'driver': 'i40e', - 'vpci': '0000:05:00.1', - 'dpdk_port_num': 1, - }, - }, - 'routing_table': [ - { - 'netmask': '255.255.255.0', - 'gateway': '152.16.100.20', - 'network': '152.16.100.20', - 'if': 'xe0', - }, - { - 'netmask': '255.255.255.0', - 'gateway': '152.16.40.20', - 'network': '152.16.40.20', - 'if': 'xe1', - }, - ], - 'member-vnf-index': '2', - 'host': '1.2.1.1', - 'role': 'vnf', - 'user': 'root', - 'nd_route_tbl': [ - { - 'netmask': '112', - 'gateway': '0064:ff9b:0:0:0:0:9810:6414', - 'network': '0064:ff9b:0:0:0:0:9810:6414', - 'if': 'xe0', - }, - { - 'netmask': '112', - 'gateway': '0064:ff9b:0:0:0:0:9810:2814', - 'network': '0064:ff9b:0:0:0:0:9810:2814', - 'if': 'xe1', - }, - ], - 'password': 'r00t', - 'VNF model': 'vpe_vnf.yaml', - }, - }, - } - - def setUp(self): - self.mock_sleep = mock.patch.object(time, 'sleep').start() - - def test___init__(self): - vpe_approx_vnf = VpeApproxVnf(NAME, self.VNFD_0) - self.assertIsNone(vpe_approx_vnf._vnf_process) - - @mock.patch(SSH_HELPER) - def test_collect_kpi_sa_not_running(self, ssh): - mock_ssh(ssh) - - resource = mock.Mock(autospec=ResourceProfile) - resource.check_if_system_agent_running.return_value = 1, '' - resource.amqp_collect_nfvi_kpi.return_value = {'foo': 234} - resource.check_if_system_agent_running.return_value = (1, None) - - vpe_approx_vnf = VpeApproxVnf(NAME, self.VNFD_0) - vpe_approx_vnf.q_in = mock.MagicMock() - vpe_approx_vnf.q_out = mock.MagicMock() - vpe_approx_vnf.q_out.qsize = mock.Mock(return_value=0) - vpe_approx_vnf.resource_helper.resource = resource - - expected = { - 'pkt_in_down_stream': 0, - 'pkt_in_up_stream': 0, - 'pkt_drop_down_stream': 0, - 'pkt_drop_up_stream': 0, - 'collect_stats': {'core': {}}, - } - self.assertEqual(vpe_approx_vnf.collect_kpi(), expected) - - @mock.patch(SSH_HELPER) - def test_collect_kpi_sa_running(self, ssh): - mock_ssh(ssh) - - resource = mock.Mock(autospec=ResourceProfile) - resource.check_if_system_agent_running.return_value = 0, '1234' - resource.amqp_collect_nfvi_kpi.return_value = {'foo': 234} - - vpe_approx_vnf = VpeApproxVnf(NAME, self.VNFD_0) - vpe_approx_vnf.q_in = mock.MagicMock() - vpe_approx_vnf.q_out = mock.MagicMock() - vpe_approx_vnf.q_out.qsize = mock.Mock(return_value=0) - vpe_approx_vnf.resource_helper.resource = resource - - expected = { - 'pkt_in_down_stream': 0, - 'pkt_in_up_stream': 0, - 'pkt_drop_down_stream': 0, - 'pkt_drop_up_stream': 0, - 'collect_stats': {'core': {'foo': 234}}, - } - self.assertEqual(vpe_approx_vnf.collect_kpi(), expected) - - @mock.patch(SSH_HELPER) - def test_vnf_execute(self, ssh): - mock_ssh(ssh) - vpe_approx_vnf = VpeApproxVnf(NAME, self.VNFD_0) - vpe_approx_vnf.q_in = mock.MagicMock() - vpe_approx_vnf.q_out = mock.MagicMock() - vpe_approx_vnf.q_out.qsize = mock.Mock(return_value=0) - self.assertEqual(vpe_approx_vnf.vnf_execute("quit", 0), '') - - @mock.patch(SSH_HELPER) - def test_run_vpe(self, ssh): - mock_ssh(ssh) - - vpe_approx_vnf = VpeApproxVnf(NAME, self.VNFD_0) - vpe_approx_vnf.tc_file_name = get_file_abspath(TEST_FILE_YAML) - vpe_approx_vnf.vnf_cfg = { - 'lb_config': 'SW', - 'lb_count': 1, - 'worker_config': '1C/1T', - 'worker_threads': 1, - } - vpe_approx_vnf.scenario_helper.scenario_cfg = { - 'options': { - NAME: { - 'traffic_type': '4', - 'topology': 'nsb_test_case.yaml', - 'vnf_config': 'vpe_config', - } - } - } - vpe_approx_vnf.topology = "nsb_test_case.yaml" - vpe_approx_vnf.nfvi_type = "baremetal" - vpe_approx_vnf._provide_config_file = mock.Mock() - vpe_approx_vnf._build_config = mock.MagicMock() - - self.assertIsInstance(vpe_approx_vnf.ssh_helper, mock.Mock) - self.assertIsInstance(vpe_approx_vnf.ssh_helper, mock.Mock) - self.assertIsNone(vpe_approx_vnf._run()) - - @mock.patch("yardstick.network_services.vnf_generic.vnf.sample_vnf.MultiPortConfig") - @mock.patch("yardstick.network_services.vnf_generic.vnf.sample_vnf.Context") - @mock.patch("yardstick.network_services.vnf_generic.vnf.vpe_vnf.ConfigCreate") - @mock.patch("yardstick.network_services.vnf_generic.vnf.vpe_vnf.open") - @mock.patch(SSH_HELPER) - def test_build_config(self, ssh, *args): - mock_ssh(ssh) - vpe_approx_vnf = VpeApproxSetupEnvHelper(mock.MagicMock(), - mock.MagicMock(), mock.MagicMock()) - vpe_approx_vnf.tc_file_name = get_file_abspath(TEST_FILE_YAML) - vpe_approx_vnf.generate_port_pairs = mock.Mock() - vpe_approx_vnf.vnf_cfg = { - 'lb_config': 'SW', - 'lb_count': 1, - 'worker_config': '1C/1T', - 'worker_threads': 1, - } - vpe_approx_vnf.scenario_helper.scenario_cfg = { - 'options': { - NAME: { - 'traffic_type': '4', - 'topology': 'nsb_test_case.yaml', - 'vnf_config': 'vpe_config', - } - } - } - vpe_approx_vnf.topology = "nsb_test_case.yaml" - vpe_approx_vnf.nfvi_type = "baremetal" - vpe_approx_vnf._provide_config_file = mock.Mock() - - vpe_approx_vnf.ssh_helper = mock.MagicMock() - vpe_approx_vnf.scenario_helper = mock.MagicMock() - vpe_approx_vnf.ssh_helper.bin_path = mock.Mock() - vpe_approx_vnf.ssh_helper.upload_config_file = mock.MagicMock() - self.assertIsNone(vpe_approx_vnf._build_vnf_ports()) - - vpe_approx_vnf.ssh_helper.provision_tool = mock.Mock(return_value='tool_path') - vpe_approx_vnf.ssh_helper.all_ports = mock.Mock() - vpe_approx_vnf.vnfd_helper.port_nums = mock.Mock(return_value=[0, 1]) - vpe_approx_vnf.scenario_helper.vnf_cfg = {'lb_config': 'HW'} - - expected = 'sudo tool_path -p 0x3 -f /tmp/vpe_config -s /tmp/vpe_script --hwlb 3' - self.assertEqual(vpe_approx_vnf.build_config(), expected) - - @mock.patch(SSH_HELPER) - def test_wait_for_instantiate(self, ssh): - mock_ssh(ssh) - - mock_process = mock.Mock(autospec=Process) - mock_process.is_alive.return_value = True - mock_process.exitcode = 432 - - mock_q_out = mock.Mock(autospec=Queue) - mock_q_out.get.side_effect = iter(["pipeline>"]) - mock_q_out.qsize.side_effect = range(1, -1, -1) - - mock_resource = mock.MagicMock() - - vpe_approx_vnf = VpeApproxVnf(NAME, self.VNFD_0) - vpe_approx_vnf._vnf_process = mock_process - vpe_approx_vnf.q_out = mock_q_out - vpe_approx_vnf.queue_wrapper = mock.Mock(autospec=QueueFileWrapper) - vpe_approx_vnf.resource_helper.resource = mock_resource - - vpe_approx_vnf.q_out.put("pipeline>") - self.assertEqual(vpe_approx_vnf.wait_for_instantiate(), 432) - - @mock.patch(SSH_HELPER) - def test_wait_for_instantiate_fragmented(self, ssh): - mock_ssh(ssh) - - mock_process = mock.Mock(autospec=Process) - mock_process.is_alive.return_value = True - mock_process.exitcode = 432 - - # test that fragmented pipeline prompt is recognized - mock_q_out = mock.Mock(autospec=Queue) - mock_q_out.get.side_effect = iter(["wow pipel", "ine>"]) - mock_q_out.qsize.side_effect = range(2, -1, -1) - - mock_resource = mock.MagicMock() - - vpe_approx_vnf = VpeApproxVnf(NAME, self.VNFD_0) - vpe_approx_vnf._vnf_process = mock_process - vpe_approx_vnf.q_out = mock_q_out - vpe_approx_vnf.queue_wrapper = mock.Mock(autospec=QueueFileWrapper) - vpe_approx_vnf.resource_helper.resource = mock_resource - - self.assertEqual(vpe_approx_vnf.wait_for_instantiate(), 432) - - @mock.patch(SSH_HELPER) - def test_wait_for_instantiate_crash(self, ssh): - mock_ssh(ssh, exec_result=(1, "", "")) - - mock_process = mock.Mock(autospec=Process) - mock_process.is_alive.return_value = False - mock_process.exitcode = 432 - - mock_resource = mock.MagicMock() - - vpe_approx_vnf = VpeApproxVnf(NAME, self.VNFD_0) - vpe_approx_vnf._vnf_process = mock_process - vpe_approx_vnf.resource_helper.resource = mock_resource - - with self.assertRaises(RuntimeError) as raised: - vpe_approx_vnf.wait_for_instantiate() - - self.assertIn('VNF process died', str(raised.exception)) - - @mock.patch(SSH_HELPER) - def test_wait_for_instantiate_panic(self, ssh): - mock_ssh(ssh, exec_result=(1, "", "")) - - mock_process = mock.Mock(autospec=Process) - mock_process.is_alive.return_value = True - mock_process.exitcode = 432 - - mock_resource = mock.MagicMock() - - vpe_approx_vnf = VpeApproxVnf(NAME, self.VNFD_0) - vpe_approx_vnf._vnf_process = mock_process - vpe_approx_vnf.resource_helper.resource = mock_resource - - vpe_approx_vnf.q_out.put("PANIC") - with self.assertRaises(RuntimeError) as raised: - vpe_approx_vnf.wait_for_instantiate() - - self.assertIn('Error starting', str(raised.exception)) - - @mock.patch(SSH_HELPER) - def test_wait_for_instantiate_panic_fragmented(self, ssh): - mock_ssh(ssh, exec_result=(1, "", "")) - - mock_process = mock.Mock(autospec=Process) - mock_process.is_alive.return_value = True - mock_process.exitcode = 432 - - # test that fragmented PANIC is recognized - mock_q_out = mock.Mock(autospec=Queue) - mock_q_out.get.side_effect = iter(["omg PA", "NIC this is bad"]) - mock_q_out.qsize.side_effect = range(2, -1, -1) - - mock_resource = mock.MagicMock() - - vpe_approx_vnf = VpeApproxVnf(NAME, self.VNFD_0) - vpe_approx_vnf._vnf_process = mock_process - vpe_approx_vnf.q_out = mock_q_out - vpe_approx_vnf.resource_helper.resource = mock_resource - - with self.assertRaises(RuntimeError) as raised: - vpe_approx_vnf.wait_for_instantiate() - - self.assertIn('Error starting', str(raised.exception)) - - @mock.patch(SSH_HELPER) - def test_terminate(self, ssh): - mock_ssh(ssh) - - vpe_approx_vnf = VpeApproxVnf(NAME, self.VNFD_0) - vpe_approx_vnf._vnf_process = mock.MagicMock() - vpe_approx_vnf._resource_collect_stop = mock.Mock() - vpe_approx_vnf.resource_helper = mock.MagicMock() - - self.assertIsNone(vpe_approx_vnf.terminate()) |