From 98294f2c8153f663c3b3a4e4cb98910e9d5cb602 Mon Sep 17 00:00:00 2001 From: Emma Foley Date: Fri, 27 Apr 2018 10:30:20 +0000 Subject: [PATCH] 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 Change-Id: I3d95537a64bde923703421510d27bac0d6dd92bd --- .../network_services/vnf_generic/vnf/vpe_vnf.py | 6 +- .../benchmark/contexts/standalone/test_ovs_dpdk.py | 9 +- .../benchmark/contexts/standalone/test_sriov.py | 9 +- .../tests/unit/benchmark/contexts/test_dummy.py | 8 +- .../tests/unit/benchmark/contexts/test_heat.py | 12 +- .../unit/benchmark/contexts/test_kubernetes.py | 9 +- .../tests/unit/benchmark/contexts/test_node.py | 9 +- yardstick/tests/unit/benchmark/core/test_task.py | 14 +- .../unit/network_services/vnf_generic/__init__.py | 0 .../network_services/vnf_generic/test_vnfdgen.py | 20 ++- .../network_services/vnf_generic/vnf/__init__.py | 0 .../vnf_generic/vnf/acl_1rule.yaml | 0 .../vnf/tc_baremetal_rfc2544_ipv4_1flow_64B.yaml | 0 .../vnf_generic/vnf/test_acl_vnf.py | 6 +- .../network_services/vnf_generic/vnf/test_base.py | 2 - .../vnf_generic/vnf/test_cgnapt_vnf.py | 37 +++-- .../vnf_generic/vnf/test_prox_helpers.py | 7 +- .../vnf_generic/vnf/test_prox_vnf.py | 4 +- .../vnf_generic/vnf/test_router_vnf.py | 6 +- .../vnf_generic/vnf/test_sample_vnf.py | 4 +- .../vnf_generic/vnf/test_tg_ixload.py | 39 ++--- .../vnf_generic/vnf/test_tg_ping.py | 11 +- .../vnf_generic/vnf/test_tg_prox.py | 4 +- .../vnf_generic/vnf/test_tg_rfc2544_ixia.py | 132 ++++++++-------- .../vnf_generic/vnf/test_tg_rfc2544_trex.py | 7 +- .../vnf_generic/vnf/test_tg_trex.py | 170 +++++++++++---------- .../vnf_generic/vnf/test_udp_replay.py | 16 +- .../vnf_generic/vnf/test_vfw_vnf.py | 8 +- .../vnf_generic/vnf/test_vpe_vnf.py | 8 +- 29 files changed, 306 insertions(+), 251 deletions(-) rename {tests => yardstick/tests}/unit/network_services/vnf_generic/__init__.py (100%) rename {tests => yardstick/tests}/unit/network_services/vnf_generic/test_vnfdgen.py (95%) rename {tests => yardstick/tests}/unit/network_services/vnf_generic/vnf/__init__.py (100%) rename {tests => yardstick/tests}/unit/network_services/vnf_generic/vnf/acl_1rule.yaml (100%) rename {tests => yardstick/tests}/unit/network_services/vnf_generic/vnf/tc_baremetal_rfc2544_ipv4_1flow_64B.yaml (100%) rename {tests => yardstick/tests}/unit/network_services/vnf_generic/vnf/test_acl_vnf.py (98%) rename {tests => yardstick/tests}/unit/network_services/vnf_generic/vnf/test_base.py (99%) rename {tests => yardstick/tests}/unit/network_services/vnf_generic/vnf/test_cgnapt_vnf.py (94%) rename {tests => yardstick/tests}/unit/network_services/vnf_generic/vnf/test_prox_helpers.py (99%) rename {tests => yardstick/tests}/unit/network_services/vnf_generic/vnf/test_prox_vnf.py (99%) rename {tests => yardstick/tests}/unit/network_services/vnf_generic/vnf/test_router_vnf.py (98%) rename {tests => yardstick/tests}/unit/network_services/vnf_generic/vnf/test_sample_vnf.py (99%) rename {tests => yardstick/tests}/unit/network_services/vnf_generic/vnf/test_tg_ixload.py (93%) rename {tests => yardstick/tests}/unit/network_services/vnf_generic/vnf/test_tg_ping.py (98%) rename {tests => yardstick/tests}/unit/network_services/vnf_generic/vnf/test_tg_prox.py (99%) rename {tests => yardstick/tests}/unit/network_services/vnf_generic/vnf/test_tg_rfc2544_ixia.py (75%) rename {tests => yardstick/tests}/unit/network_services/vnf_generic/vnf/test_tg_rfc2544_trex.py (98%) rename {tests => yardstick/tests}/unit/network_services/vnf_generic/vnf/test_tg_trex.py (77%) rename {tests => yardstick/tests}/unit/network_services/vnf_generic/vnf/test_udp_replay.py (97%) rename {tests => yardstick/tests}/unit/network_services/vnf_generic/vnf/test_vfw_vnf.py (99%) rename {tests => yardstick/tests}/unit/network_services/vnf_generic/vnf/test_vpe_vnf.py (99%) diff --git a/yardstick/network_services/vnf_generic/vnf/vpe_vnf.py b/yardstick/network_services/vnf_generic/vnf/vpe_vnf.py index 0067f6bf9..9deef5cfa 100644 --- a/yardstick/network_services/vnf_generic/vnf/vpe_vnf.py +++ b/yardstick/network_services/vnf_generic/vnf/vpe_vnf.py @@ -115,7 +115,8 @@ class ConfigCreate(object): pktq = "SWQ{0}{1}".format(self.sw_q, sink) return pktq - def vpe_upstream(self, vnf_cfg, index=0): + def vpe_upstream(self, vnf_cfg, index=0): # pragma: no cover + # NOTE(ralonsoh): this function must be covered in UTs. parser = configparser.ConfigParser() parser.read(os.path.join(vnf_cfg, 'vpe_upstream')) @@ -147,7 +148,8 @@ class ConfigCreate(object): self.n_pipeline += 1 return parser - def vpe_downstream(self, vnf_cfg, index): + def vpe_downstream(self, vnf_cfg, index): # pragma: no cover + # NOTE(ralonsoh): this function must be covered in UTs. parser = configparser.ConfigParser() parser.read(os.path.join(vnf_cfg, 'vpe_downstream')) for pipeline in parser.sections(): diff --git a/yardstick/tests/unit/benchmark/contexts/standalone/test_ovs_dpdk.py b/yardstick/tests/unit/benchmark/contexts/standalone/test_ovs_dpdk.py index bc3bb73cd..6eb438cb1 100644 --- a/yardstick/tests/unit/benchmark/contexts/standalone/test_ovs_dpdk.py +++ b/yardstick/tests/unit/benchmark/contexts/standalone/test_ovs_dpdk.py @@ -19,6 +19,7 @@ import mock import six import unittest +from yardstick.benchmark.contexts import base from yardstick.benchmark.contexts.standalone import model from yardstick.benchmark.contexts.standalone import ovs_dpdk from yardstick.common import exceptions @@ -59,9 +60,11 @@ class OvsDpdkContextTestCase(unittest.TestCase): self.ovs_dpdk = ovs_dpdk.OvsDpdkContext() self.addCleanup(self._remove_contexts) - def _remove_contexts(self): - if self.ovs_dpdk in self.ovs_dpdk.list: - self.ovs_dpdk._delete_context() + @staticmethod + def _remove_contexts(): + for context in base.Context.list: + context._delete_context() + base.Context.list = [] @mock.patch('yardstick.benchmark.contexts.standalone.model.Server') @mock.patch('yardstick.benchmark.contexts.standalone.model.StandaloneContextHelper') diff --git a/yardstick/tests/unit/benchmark/contexts/standalone/test_sriov.py b/yardstick/tests/unit/benchmark/contexts/standalone/test_sriov.py index b426985be..de748e285 100644 --- a/yardstick/tests/unit/benchmark/contexts/standalone/test_sriov.py +++ b/yardstick/tests/unit/benchmark/contexts/standalone/test_sriov.py @@ -18,6 +18,7 @@ import mock import unittest from yardstick import ssh +from yardstick.benchmark.contexts import base from yardstick.benchmark.contexts.standalone import model from yardstick.benchmark.contexts.standalone import sriov @@ -66,9 +67,11 @@ class SriovContextTestCase(unittest.TestCase): self.sriov = sriov.SriovContext() self.addCleanup(self._remove_contexts) - def _remove_contexts(self): - if self.sriov in self.sriov.list: - self.sriov._delete_context() + @staticmethod + def _remove_contexts(): + for context in base.Context.list: + context._delete_context() + base.Context.list = [] @mock.patch.object(model, 'StandaloneContextHelper') @mock.patch.object(model, 'Libvirt') diff --git a/yardstick/tests/unit/benchmark/contexts/test_dummy.py b/yardstick/tests/unit/benchmark/contexts/test_dummy.py index e393001a1..c4113be41 100644 --- a/yardstick/tests/unit/benchmark/contexts/test_dummy.py +++ b/yardstick/tests/unit/benchmark/contexts/test_dummy.py @@ -9,6 +9,7 @@ import unittest +from yardstick.benchmark.contexts import base from yardstick.benchmark.contexts import dummy @@ -20,7 +21,12 @@ class DummyContextTestCase(unittest.TestCase): 'task_id': '1234567890', } self.test_context = dummy.DummyContext() - self.addCleanup(self.test_context._delete_context) + self.addCleanup(self._delete_contexts) + + @staticmethod + def _delete_contexts(): + for context in base.Context.list: + context._delete_context() def test___init__(self): self.assertFalse(self.test_context._flags.no_setup) diff --git a/yardstick/tests/unit/benchmark/contexts/test_heat.py b/yardstick/tests/unit/benchmark/contexts/test_heat.py index 947e6fe22..9c822b3a7 100644 --- a/yardstick/tests/unit/benchmark/contexts/test_heat.py +++ b/yardstick/tests/unit/benchmark/contexts/test_heat.py @@ -8,7 +8,6 @@ ############################################################################## from collections import OrderedDict -from itertools import count import logging import os @@ -31,12 +30,12 @@ class HeatContextTestCase(ut_base.BaseUnitTestCase): def setUp(self): self.test_context = heat.HeatContext() self.addCleanup(self._remove_contexts) - self.mock_context = mock.Mock(spec=heat.HeatContext()) - self.name_iter = ('vnf{:03}'.format(x) for x in count(0, step=3)) - def _remove_contexts(self): - if self.test_context in self.test_context.list: - self.test_context._delete_context() + @staticmethod + def _remove_contexts(): + for context in base.Context.list: + context._delete_context() + base.Context.list = [] def test___init__(self): self.assertIsNone(self.test_context._name) @@ -655,6 +654,7 @@ class HeatContextTestCase(ut_base.BaseUnitTestCase): baz3_server.public_ip = None baz3_server.context.user = 'zab' + self.mock_context = mock.Mock(spec=heat.HeatContext()) self.mock_context._name = 'bar1' self.test_context.stack = mock.Mock() self.mock_context.stack.outputs = { diff --git a/yardstick/tests/unit/benchmark/contexts/test_kubernetes.py b/yardstick/tests/unit/benchmark/contexts/test_kubernetes.py index 4dd9d40d1..0e11a53e1 100644 --- a/yardstick/tests/unit/benchmark/contexts/test_kubernetes.py +++ b/yardstick/tests/unit/benchmark/contexts/test_kubernetes.py @@ -10,6 +10,7 @@ import mock import unittest +from yardstick.benchmark.contexts import base from yardstick.benchmark.contexts import kubernetes @@ -43,9 +44,11 @@ class KubernetesTestCase(unittest.TestCase): self.addCleanup(self._remove_contexts) self.k8s_context.init(context_cfg) - def _remove_contexts(self): - if self.k8s_context in self.k8s_context.list: - self.k8s_context._delete_context() + @staticmethod + def _remove_contexts(): + for context in base.Context.list: + context._delete_context() + base.Context.list = [] @mock.patch.object(kubernetes.KubernetesContext, '_delete_services') @mock.patch.object(kubernetes.KubernetesContext, '_delete_ssh_key') diff --git a/yardstick/tests/unit/benchmark/contexts/test_node.py b/yardstick/tests/unit/benchmark/contexts/test_node.py index 8b232481b..b67be3758 100644 --- a/yardstick/tests/unit/benchmark/contexts/test_node.py +++ b/yardstick/tests/unit/benchmark/contexts/test_node.py @@ -13,6 +13,7 @@ import errno import mock from yardstick.common import constants as consts +from yardstick.benchmark.contexts import base from yardstick.benchmark.contexts import node @@ -33,9 +34,11 @@ class NodeContextTestCase(unittest.TestCase): 'file': self._get_file_abspath(self.NODES_SAMPLE) } - def _remove_contexts(self): - if self.test_context in self.test_context.list: - self.test_context._delete_context() + @staticmethod + def _remove_contexts(): + for context in base.Context.list: + context._delete_context() + base.Context.list = [] def _get_file_abspath(self, filename): curr_path = os.path.dirname(os.path.abspath(__file__)) diff --git a/yardstick/tests/unit/benchmark/core/test_task.py b/yardstick/tests/unit/benchmark/core/test_task.py index e7d2c70b7..7468368df 100644 --- a/yardstick/tests/unit/benchmark/core/test_task.py +++ b/yardstick/tests/unit/benchmark/core/test_task.py @@ -17,6 +17,7 @@ import six import unittest import uuid +from yardstick.benchmark.contexts import base from yardstick.benchmark.contexts import dummy from yardstick.benchmark.core import task from yardstick.common import constants as consts @@ -358,9 +359,10 @@ key2: } @staticmethod - def _remove_context(context): - if context: + def _remove_contexts(): + for context in base.Context.list: context._delete_context() + base.Context.list = [] def test__change_node_names(self): @@ -376,7 +378,7 @@ key2: } my_context = dummy.DummyContext() - self.addCleanup(self._remove_context, my_context) + self.addCleanup(self._remove_contexts) my_context.init(ctx_attrs) expected_scenario = { @@ -419,7 +421,7 @@ key2: } my_context = dummy.DummyContext() - self.addCleanup(self._remove_context, my_context) + self.addCleanup(self._remove_contexts) my_context.init(ctx_attrs) scenario = copy.deepcopy(self.scenario) @@ -435,7 +437,7 @@ key2: } my_context = dummy.DummyContext() - self.addCleanup(self._remove_context, my_context) + self.addCleanup(self._remove_contexts) my_context.init(ctx_attrs) scenario = copy.deepcopy(self.scenario) scenario['options'] = None @@ -450,7 +452,7 @@ key2: } my_context = dummy.DummyContext() - self.addCleanup(self._remove_context, my_context) + self.addCleanup(self._remove_contexts) my_context.init(ctx_attrs) scenario = copy.deepcopy(self.scenario) scenario['options']['server_name'] = None diff --git a/tests/unit/network_services/vnf_generic/__init__.py b/yardstick/tests/unit/network_services/vnf_generic/__init__.py similarity index 100% rename from tests/unit/network_services/vnf_generic/__init__.py rename to yardstick/tests/unit/network_services/vnf_generic/__init__.py diff --git a/tests/unit/network_services/vnf_generic/test_vnfdgen.py b/yardstick/tests/unit/network_services/vnf_generic/test_vnfdgen.py similarity index 95% rename from tests/unit/network_services/vnf_generic/test_vnfdgen.py rename to yardstick/tests/unit/network_services/vnf_generic/test_vnfdgen.py index 2ab14129b..55b1955bc 100644 --- a/tests/unit/network_services/vnf_generic/test_vnfdgen.py +++ b/yardstick/tests/unit/network_services/vnf_generic/test_vnfdgen.py @@ -13,11 +13,8 @@ # limitations under the License. # -# Unittest for yardstick.network_services.vnf_generic.vnfdgen - -from __future__ import absolute_import -import unittest from six.moves import range +import unittest from yardstick.common.yaml_loader import yaml_load from yardstick.network_services.vnf_generic import vnfdgen @@ -202,10 +199,10 @@ TRAFFIC_PROFILE_TPL = """ TRAFFIC_PROFILE = { UPLINK: [{"ipv4": {"outer_l2": - {"framesize": {"64B": '10', "128B": '10', - "256B": '10', "373B": '10', - "570B": '10', "1400B": '10', - "1518B": '40'}}}}]} + {"framesize": {"64B": '10', "128B": '10', + "256B": '10', "373B": '10', + "570B": '10', "1400B": '10', + "1518B": '40'}}}}]} class TestRender(unittest.TestCase): @@ -214,12 +211,14 @@ class TestRender(unittest.TestCase): tmpl = "{{ routing_table }}" self.assertEqual(vnfdgen.render(tmpl, routing_table=None), u'~') - self.assertEqual(yaml_load(vnfdgen.render(tmpl, routing_table=None)), None) + self.assertIsNone( + yaml_load(vnfdgen.render(tmpl, routing_table=None))) def test_render_unicode_dict(self): tmpl = "{{ routing_table }}" - self.assertEqual(yaml_load(vnfdgen.render(tmpl, **NODE_CFG)), NODE_CFG["routing_table"]) + self.assertEqual(yaml_load(vnfdgen.render( + tmpl, **NODE_CFG)), NODE_CFG["routing_table"]) class TestVnfdGen(unittest.TestCase): @@ -266,7 +265,6 @@ class TestVnfdGen(unittest.TestCase): d = {'0': 1, 0: 24, 'b': 2} self.assertRaises(AttributeError, vnfdgen.deepgetitem, d, 0) - def test_generate_tp_single_var(self): """ Function to verify traffic profile generation with imix """ diff --git a/tests/unit/network_services/vnf_generic/vnf/__init__.py b/yardstick/tests/unit/network_services/vnf_generic/vnf/__init__.py similarity index 100% rename from tests/unit/network_services/vnf_generic/vnf/__init__.py rename to yardstick/tests/unit/network_services/vnf_generic/vnf/__init__.py diff --git a/tests/unit/network_services/vnf_generic/vnf/acl_1rule.yaml b/yardstick/tests/unit/network_services/vnf_generic/vnf/acl_1rule.yaml similarity index 100% rename from tests/unit/network_services/vnf_generic/vnf/acl_1rule.yaml rename to yardstick/tests/unit/network_services/vnf_generic/vnf/acl_1rule.yaml diff --git a/tests/unit/network_services/vnf_generic/vnf/tc_baremetal_rfc2544_ipv4_1flow_64B.yaml b/yardstick/tests/unit/network_services/vnf_generic/vnf/tc_baremetal_rfc2544_ipv4_1flow_64B.yaml similarity index 100% rename from tests/unit/network_services/vnf_generic/vnf/tc_baremetal_rfc2544_ipv4_1flow_64B.yaml rename to yardstick/tests/unit/network_services/vnf_generic/vnf/tc_baremetal_rfc2544_ipv4_1flow_64B.yaml diff --git a/tests/unit/network_services/vnf_generic/vnf/test_acl_vnf.py b/yardstick/tests/unit/network_services/vnf_generic/vnf/test_acl_vnf.py similarity index 98% rename from tests/unit/network_services/vnf_generic/vnf/test_acl_vnf.py rename to yardstick/tests/unit/network_services/vnf_generic/vnf/test_acl_vnf.py index efde669d2..f75fa226a 100644 --- a/tests/unit/network_services/vnf_generic/vnf/test_acl_vnf.py +++ b/yardstick/tests/unit/network_services/vnf_generic/vnf/test_acl_vnf.py @@ -17,8 +17,8 @@ import unittest import mock import os -from tests.unit import STL_MOCKS -from tests.unit.network_services.vnf_generic.vnf.test_base import mock_ssh +from yardstick.tests import STL_MOCKS +from yardstick.tests.unit.network_services.vnf_generic.vnf.test_base import mock_ssh from yardstick.common import utils @@ -324,7 +324,7 @@ class TestAclApproxVnf(unittest.TestCase): acl_approx_vnf.resource_helper = mock.MagicMock() acl_approx_vnf._build_config = mock.MagicMock() self.scenario_cfg['vnf_options'] = {'acl': {'cfg': "", - 'rules': ""}} + 'rules': ""}} acl_approx_vnf.q_out.put("pipeline>") acl_approx_vnf.WAIT_TIME = 0 self.scenario_cfg.update({"nodes": {"vnf__1": ""}}) diff --git a/tests/unit/network_services/vnf_generic/vnf/test_base.py b/yardstick/tests/unit/network_services/vnf_generic/vnf/test_base.py similarity index 99% rename from tests/unit/network_services/vnf_generic/vnf/test_base.py rename to yardstick/tests/unit/network_services/vnf_generic/vnf/test_base.py index 9ef6473f0..ebedcb451 100644 --- a/tests/unit/network_services/vnf_generic/vnf/test_base.py +++ b/yardstick/tests/unit/network_services/vnf_generic/vnf/test_base.py @@ -13,8 +13,6 @@ # limitations under the License. # -# Unittest for yardstick.network_services.vnf_generic.vnf.test_base - import multiprocessing import os diff --git a/tests/unit/network_services/vnf_generic/vnf/test_cgnapt_vnf.py b/yardstick/tests/unit/network_services/vnf_generic/vnf/test_cgnapt_vnf.py similarity index 94% rename from tests/unit/network_services/vnf_generic/vnf/test_cgnapt_vnf.py rename to yardstick/tests/unit/network_services/vnf_generic/vnf/test_cgnapt_vnf.py index b7731b649..bd8f53e21 100644 --- a/tests/unit/network_services/vnf_generic/vnf/test_cgnapt_vnf.py +++ b/yardstick/tests/unit/network_services/vnf_generic/vnf/test_cgnapt_vnf.py @@ -15,22 +15,21 @@ from copy import deepcopy import os -import unittest + import mock +import unittest + -from tests.unit import STL_MOCKS -from tests.unit.network_services.vnf_generic.vnf.test_base import mock_ssh from yardstick.common import utils -STLClient = mock.MagicMock() -stl_patch = mock.patch.dict("sys.modules", STL_MOCKS) -stl_patch.start() +from yardstick.tests.unit.network_services.vnf_generic.vnf.test_base import mock_ssh + -if stl_patch: - from yardstick.network_services.vnf_generic.vnf.cgnapt_vnf import CgnaptApproxVnf, \ - CgnaptApproxSetupEnvHelper - from yardstick.network_services.vnf_generic.vnf import cgnapt_vnf - from yardstick.network_services.nfvi.resource import ResourceProfile + +from yardstick.network_services.vnf_generic.vnf.cgnapt_vnf import CgnaptApproxVnf, \ + CgnaptApproxSetupEnvHelper +from yardstick.network_services.vnf_generic.vnf import cgnapt_vnf +from yardstick.network_services.nfvi.resource import ResourceProfile TEST_FILE_YAML = 'nsb_test_case.yaml' SSH_HELPER = 'yardstick.network_services.vnf_generic.vnf.sample_vnf.VnfSshHelper' @@ -409,6 +408,22 @@ class TestCgnaptApproxVnf(unittest.TestCase): self.assertIsNone(cgnapt_approx_vnf.instantiate(self.scenario_cfg, self.context_cfg)) + @mock.patch("yardstick.network_services.vnf_generic.vnf.sample_vnf.time") + @mock.patch(SSH_HELPER) + def test_terminate(self, ssh, *args): + mock_ssh(ssh) + + vnfd = self.VNFD['vnfd:vnfd-catalog']['vnfd'][0] + cgnapt_approx_vnf = CgnaptApproxVnf(name, vnfd) + cgnapt_approx_vnf._vnf_process = mock.MagicMock() + cgnapt_approx_vnf._vnf_process.terminate = mock.Mock() + cgnapt_approx_vnf.used_drivers = {"01:01.0": "i40e", + "01:01.1": "i40e"} + cgnapt_approx_vnf.vnf_execute = mock.MagicMock() + cgnapt_approx_vnf.dpdk_nic_bind = "dpdk_nic_bind.py" + cgnapt_approx_vnf._resource_collect_stop = mock.Mock() + self.assertIsNone(cgnapt_approx_vnf.terminate()) + @mock.patch("yardstick.network_services.vnf_generic.vnf.sample_vnf.time") @mock.patch(SSH_HELPER) def test__vnf_up_post(self, ssh, *args): diff --git a/tests/unit/network_services/vnf_generic/vnf/test_prox_helpers.py b/yardstick/tests/unit/network_services/vnf_generic/vnf/test_prox_helpers.py similarity index 99% rename from tests/unit/network_services/vnf_generic/vnf/test_prox_helpers.py rename to yardstick/tests/unit/network_services/vnf_generic/vnf/test_prox_helpers.py index 301a90cfe..c74a6cf75 100644 --- a/tests/unit/network_services/vnf_generic/vnf/test_prox_helpers.py +++ b/yardstick/tests/unit/network_services/vnf_generic/vnf/test_prox_helpers.py @@ -22,7 +22,7 @@ import time import mock import unittest -from tests.unit import STL_MOCKS +from yardstick.tests import STL_MOCKS from yardstick.common import utils from yardstick.network_services.vnf_generic.vnf.base import VnfdHelper from yardstick.network_services import constants @@ -314,6 +314,7 @@ class TestProxSocketHelper(unittest.TestCase): result = prox.get_socket() self.assertIs(result, mock_sock) + # TODO(elfoley): Split this into three tests @mock.patch('yardstick.network_services.vnf_generic.vnf.prox_helpers.select') def test_get_data(self, mock_select): mock_select.select.side_effect = [[1], [0]] @@ -910,6 +911,7 @@ class TestProxDpdkVnfSetupEnvHelper(unittest.TestCase): result = ProxDpdkVnfSetupEnvHelper._get_tx_port('section1', input_data) self.assertEqual(result, expected) + # TODO(elfoley): Split this into several smaller tests def test_write_prox_config(self): input_data = {} expected = '' @@ -1523,6 +1525,7 @@ class TestProxResourceHelper(unittest.TestCase): result = helper.execute('my_command') self.assertEqual(result, expected) + # TODO(elfoley): Make this a separate test: test_execute_no_client helper.client = object() result = helper.execute('my_command') @@ -1684,6 +1687,7 @@ class TestProxProfileHelper(unittest.TestCase): self.assertIs(result, helper._cpu_topology) self.assertIs(result, helper.cpu_topology) + # TODO(elfoley): Split this test; there are two sets of inputs/outputs def test_test_cores(self): resource_helper = mock.MagicMock() resource_helper.setup_helper.prox_config_data = [] @@ -1741,6 +1745,7 @@ class TestProxProfileHelper(unittest.TestCase): self.assertIs(result, helper._test_cores) self.assertIs(result, helper.test_cores) + # TODO(elfoley): Split this test; there are two sets of inputs/outputs def test_latency_cores(self): resource_helper = mock.MagicMock() resource_helper.setup_helper.prox_config_data = [] diff --git a/tests/unit/network_services/vnf_generic/vnf/test_prox_vnf.py b/yardstick/tests/unit/network_services/vnf_generic/vnf/test_prox_vnf.py similarity index 99% rename from tests/unit/network_services/vnf_generic/vnf/test_prox_vnf.py rename to yardstick/tests/unit/network_services/vnf_generic/vnf/test_prox_vnf.py index 159b1f718..fa2d462ab 100644 --- a/tests/unit/network_services/vnf_generic/vnf/test_prox_vnf.py +++ b/yardstick/tests/unit/network_services/vnf_generic/vnf/test_prox_vnf.py @@ -19,7 +19,7 @@ import unittest import mock from copy import deepcopy -from tests.unit import STL_MOCKS +from yardstick.tests import STL_MOCKS SSH_HELPER = 'yardstick.network_services.vnf_generic.vnf.sample_vnf.VnfSshHelper' @@ -30,7 +30,7 @@ stl_patch.start() if stl_patch: from yardstick.network_services.vnf_generic.vnf.prox_vnf import ProxApproxVnf - from tests.unit.network_services.vnf_generic.vnf.test_base import mock_ssh + from yardstick.tests.unit.network_services.vnf_generic.vnf.test_base import mock_ssh NAME = "vnf__1" diff --git a/tests/unit/network_services/vnf_generic/vnf/test_router_vnf.py b/yardstick/tests/unit/network_services/vnf_generic/vnf/test_router_vnf.py similarity index 98% rename from tests/unit/network_services/vnf_generic/vnf/test_router_vnf.py rename to yardstick/tests/unit/network_services/vnf_generic/vnf/test_router_vnf.py index c6292f258..5574c6770 100644 --- a/tests/unit/network_services/vnf_generic/vnf/test_router_vnf.py +++ b/yardstick/tests/unit/network_services/vnf_generic/vnf/test_router_vnf.py @@ -13,13 +13,11 @@ # limitations under the License. # -from __future__ import absolute_import - import unittest import mock -from tests.unit import STL_MOCKS -from tests.unit.network_services.vnf_generic.vnf.test_base import mock_ssh +from yardstick.tests import STL_MOCKS +from yardstick.tests.unit.network_services.vnf_generic.vnf.test_base import mock_ssh STLClient = mock.MagicMock() diff --git a/tests/unit/network_services/vnf_generic/vnf/test_sample_vnf.py b/yardstick/tests/unit/network_services/vnf_generic/vnf/test_sample_vnf.py similarity index 99% rename from tests/unit/network_services/vnf_generic/vnf/test_sample_vnf.py rename to yardstick/tests/unit/network_services/vnf_generic/vnf/test_sample_vnf.py index ff71bed9d..b46ba657c 100644 --- a/tests/unit/network_services/vnf_generic/vnf/test_sample_vnf.py +++ b/yardstick/tests/unit/network_services/vnf_generic/vnf/test_sample_vnf.py @@ -19,8 +19,8 @@ import unittest import mock import six -from tests.unit.network_services.vnf_generic.vnf.test_base import mock_ssh -from tests.unit import STL_MOCKS +from yardstick.tests.unit.network_services.vnf_generic.vnf.test_base import mock_ssh +from yardstick.tests import STL_MOCKS from yardstick.benchmark.contexts.base import Context from yardstick.common import exceptions as y_exceptions from yardstick.common import utils diff --git a/tests/unit/network_services/vnf_generic/vnf/test_tg_ixload.py b/yardstick/tests/unit/network_services/vnf_generic/vnf/test_tg_ixload.py similarity index 93% rename from tests/unit/network_services/vnf_generic/vnf/test_tg_ixload.py rename to yardstick/tests/unit/network_services/vnf_generic/vnf/test_tg_ixload.py index d831ddd3d..5bebbbf94 100644 --- a/tests/unit/network_services/vnf_generic/vnf/test_tg_ixload.py +++ b/yardstick/tests/unit/network_services/vnf_generic/vnf/test_tg_ixload.py @@ -19,7 +19,7 @@ import mock import unittest import six -from tests.unit import STL_MOCKS +from yardstick.tests import STL_MOCKS from yardstick import ssh from yardstick.common import utils @@ -115,6 +115,18 @@ class TestIxLoadTrafficGen(unittest.TestCase): "flow_number": 10, "frame_size": 64}} + def setUp(self): + self._mock_call = mock.patch.object(subprocess, "call") + self.mock_call = self._mock_call.start() + self._mock_open = mock.patch("yardstick.network_services.vnf_generic.vnf.tg_ixload.open") + self.mock_open = self._mock_open.start() + + self.addCleanup(self._stop_mock) + + def _stop_mock(self): + self._mock_call.stop() + self._mock_open.stop() + def test___init__(self): with mock.patch("yardstick.ssh.SSH") as ssh: ssh_mock = mock.Mock(autospec=ssh.SSH) @@ -149,9 +161,8 @@ class TestIxLoadTrafficGen(unittest.TestCase): @mock.patch.object(utils, 'find_relative_file') @mock.patch.object(utils, 'makedirs') - @mock.patch("yardstick.network_services.vnf_generic.vnf.tg_ixload.call") @mock.patch("yardstick.network_services.vnf_generic.vnf.tg_ixload.shutil") - def test_instantiate(self, shutil, *args): + def test_instantiate(self, *args): with mock.patch("yardstick.ssh.SSH") as ssh: ssh_mock = mock.Mock(autospec=ssh.SSH) ssh_mock.execute = \ @@ -165,7 +176,6 @@ class TestIxLoadTrafficGen(unittest.TestCase): 'ixia_profile': "ixload.cfg", 'task_path': "/path/to/task"} ixload_traffic_gen.RESULTS_MOUNT = "/tmp/result" - shutil.copy = mock.Mock() scenario_cfg.update({'options': {'packetsize': 64, 'traffic_type': 4, 'rfc2544': {'allowed_drop_rate': '0.8 - 1'}, 'vnf__1': {'rules': 'acl_1rule.yaml', @@ -180,13 +190,12 @@ class TestIxLoadTrafficGen(unittest.TestCase): mock_open.return_value = mock.MagicMock() ixload_traffic_gen.instantiate(scenario_cfg, {}) - @mock.patch("yardstick.network_services.vnf_generic.vnf.tg_ixload.call") @mock.patch("yardstick.network_services.vnf_generic.vnf.tg_ixload.open") @mock.patch("yardstick.network_services.vnf_generic.vnf.tg_ixload.min") @mock.patch("yardstick.network_services.vnf_generic.vnf.tg_ixload.max") @mock.patch("yardstick.network_services.vnf_generic.vnf.tg_ixload.len") @mock.patch("yardstick.network_services.vnf_generic.vnf.tg_ixload.shutil") - def test_run_traffic(self, shutil, *args): + def test_run_traffic(self, *args): mock_traffic_profile = mock.Mock(autospec=TrafficProfile) mock_traffic_profile.get_traffic_definition.return_value = "64" mock_traffic_profile.params = self.TRAFFIC_PROFILE @@ -207,17 +216,15 @@ class TestIxLoadTrafficGen(unittest.TestCase): sut.connection = mock.Mock() sut.connection.run = mock.Mock() sut._traffic_runner = mock.Mock(return_value=0) - shutil.copy = mock.Mock() result = sut.run_traffic(mock_traffic_profile) self.assertIsNone(result) - @mock.patch("yardstick.network_services.vnf_generic.vnf.tg_ixload.call") @mock.patch("yardstick.network_services.vnf_generic.vnf.tg_ixload.open") @mock.patch("yardstick.network_services.vnf_generic.vnf.tg_ixload.min") @mock.patch("yardstick.network_services.vnf_generic.vnf.tg_ixload.max") @mock.patch("yardstick.network_services.vnf_generic.vnf.tg_ixload.len") @mock.patch("yardstick.network_services.vnf_generic.vnf.tg_ixload.shutil") - def test_run_traffic_csv(self, shutil, *args): + def test_run_traffic_csv(self, *args): mock_traffic_profile = mock.Mock(autospec=TrafficProfile) mock_traffic_profile.get_traffic_definition.return_value = "64" mock_traffic_profile.params = self.TRAFFIC_PROFILE @@ -238,7 +245,6 @@ class TestIxLoadTrafficGen(unittest.TestCase): sut.connection = mock.Mock() sut.connection.run = mock.Mock() sut._traffic_runner = mock.Mock(return_value=0) - shutil.copy = mock.Mock() subprocess.call(["touch", "/tmp/1.csv"]) sut.rel_bin_path = mock.Mock(return_value="/tmp/*.csv") result = sut.run_traffic(mock_traffic_profile) @@ -251,9 +257,8 @@ class TestIxLoadTrafficGen(unittest.TestCase): ixload_traffic_gen = IxLoadTrafficGen(NAME, vnfd) self.assertIsNone(ixload_traffic_gen.terminate()) - @mock.patch("yardstick.network_services.vnf_generic.vnf.tg_ixload.call") - @mock.patch.object(ssh, 'SSH') - def test_parse_csv_read(self, mock_ssh, *args): + @mock.patch("yardstick.ssh.SSH") + def test_parse_csv_read(self, mock_ssh): vnfd = self.VNFD['vnfd:vnfd-catalog']['vnfd'][0] kpi_data = { 'HTTP Total Throughput (Kbps)': 1, @@ -275,9 +280,8 @@ class TestIxLoadTrafficGen(unittest.TestCase): for key_left, key_right in IxLoadResourceHelper.KPI_LIST.items(): self.assertEqual(result[key_left][-1], int(kpi_data[key_right])) - @mock.patch("yardstick.network_services.vnf_generic.vnf.tg_ixload.call") - @mock.patch.object(ssh, 'SSH') - def test_parse_csv_read_value_error(self, mock_ssh, *args): + @mock.patch("yardstick.ssh.SSH") + def test_parse_csv_read_value_error(self, mock_ssh): vnfd = self.VNFD['vnfd:vnfd-catalog']['vnfd'][0] http_reader = [{ 'HTTP Total Throughput (Kbps)': 1, @@ -297,9 +301,8 @@ class TestIxLoadTrafficGen(unittest.TestCase): ixload_traffic_gen.resource_helper.parse_csv_read(http_reader) self.assertDictEqual(ixload_traffic_gen.resource_helper.result, init_value) - @mock.patch("yardstick.network_services.vnf_generic.vnf.tg_ixload.call") @mock.patch.object(ssh, 'SSH') - def test_parse_csv_read_error(self, mock_ssh, *args): + def test_parse_csv_read_error(self, mock_ssh): vnfd = self.VNFD['vnfd:vnfd-catalog']['vnfd'][0] http_reader = [{ 'HTTP Total Throughput (Kbps)': 1, diff --git a/tests/unit/network_services/vnf_generic/vnf/test_tg_ping.py b/yardstick/tests/unit/network_services/vnf_generic/vnf/test_tg_ping.py similarity index 98% rename from tests/unit/network_services/vnf_generic/vnf/test_tg_ping.py rename to yardstick/tests/unit/network_services/vnf_generic/vnf/test_tg_ping.py index 91a353d0d..14e0db788 100644 --- a/tests/unit/network_services/vnf_generic/vnf/test_tg_ping.py +++ b/yardstick/tests/unit/network_services/vnf_generic/vnf/test_tg_ping.py @@ -13,15 +13,14 @@ # limitations under the License. # -from __future__ import absolute_import - -import unittest -import mock from multiprocessing import Queue import multiprocessing -from tests.unit.network_services.vnf_generic.vnf.test_base import mock_ssh -from tests.unit import STL_MOCKS +import mock +import unittest + +from yardstick.tests.unit.network_services.vnf_generic.vnf.test_base import mock_ssh +from yardstick.tests import STL_MOCKS SSH_HELPER = "yardstick.network_services.vnf_generic.vnf.sample_vnf.VnfSshHelper" diff --git a/tests/unit/network_services/vnf_generic/vnf/test_tg_prox.py b/yardstick/tests/unit/network_services/vnf_generic/vnf/test_tg_prox.py similarity index 99% rename from tests/unit/network_services/vnf_generic/vnf/test_tg_prox.py rename to yardstick/tests/unit/network_services/vnf_generic/vnf/test_tg_prox.py index 2151a3284..f581ec8d9 100644 --- a/tests/unit/network_services/vnf_generic/vnf/test_tg_prox.py +++ b/yardstick/tests/unit/network_services/vnf_generic/vnf/test_tg_prox.py @@ -16,8 +16,8 @@ import unittest import mock -from tests.unit.network_services.vnf_generic.vnf.test_base import mock_ssh -from tests.unit import STL_MOCKS +from yardstick.tests.unit.network_services.vnf_generic.vnf.test_base import mock_ssh +from yardstick.tests import STL_MOCKS SSH_HELPER = 'yardstick.network_services.vnf_generic.vnf.sample_vnf.VnfSshHelper' diff --git a/tests/unit/network_services/vnf_generic/vnf/test_tg_rfc2544_ixia.py b/yardstick/tests/unit/network_services/vnf_generic/vnf/test_tg_rfc2544_ixia.py similarity index 75% rename from tests/unit/network_services/vnf_generic/vnf/test_tg_rfc2544_ixia.py rename to yardstick/tests/unit/network_services/vnf_generic/vnf/test_tg_rfc2544_ixia.py index 61fc012bc..ab757168a 100644 --- a/tests/unit/network_services/vnf_generic/vnf/test_tg_rfc2544_ixia.py +++ b/yardstick/tests/unit/network_services/vnf_generic/vnf/test_tg_rfc2544_ixia.py @@ -19,7 +19,7 @@ import mock import six import unittest -from tests.unit import STL_MOCKS +from yardstick.tests import STL_MOCKS STLClient = mock.MagicMock() stl_patch = mock.patch.dict("sys.modules", STL_MOCKS) @@ -36,7 +36,8 @@ TEST_FILE_YAML = 'nsb_test_case.yaml' NAME = "tg__1" -@mock.patch("yardstick.network_services.vnf_generic.vnf.tg_rfc2544_ixia.IxNextgen") +@mock.patch( + "yardstick.network_services.vnf_generic.vnf.tg_rfc2544_ixia.IxNextgen") class TestIxiaResourceHelper(unittest.TestCase): def test___init___with_custom_rfc_helper(self, *args): class MyRfcHelper(IxiaRfc2544Helper): @@ -55,21 +56,22 @@ class TestIxiaResourceHelper(unittest.TestCase): self.assertEqual(mock_client.ix_stop_traffic.call_count, 1) -@mock.patch("yardstick.network_services.vnf_generic.vnf.tg_rfc2544_ixia.IxNextgen") +@mock.patch( + "yardstick.network_services.vnf_generic.vnf.tg_rfc2544_ixia.IxNextgen") class TestIXIATrafficGen(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'}], + {'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': @@ -84,45 +86,46 @@ class TestIXIATrafficGen(unittest.TestCase): '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'}, + {'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'}, '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'}, + {'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'}, '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', + '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'}]}} + 'benchmark': + {'kpi': ['packets_in', 'packets_fwd', + 'packets_dropped']}, + 'connection-point': [{'type': 'VPORT', 'name': 'xe0'}, + {'type': 'VPORT', 'name': 'xe1'}], + 'id': 'VpeApproxVnf', 'name': 'VPEVnfSsh'}]}} TRAFFIC_PROFILE = { "schema": "isb:traffic_profile:0.1", @@ -135,7 +138,7 @@ class TestIXIATrafficGen(unittest.TestCase): "frame_size": 64}} TC_YAML = {'scenarios': [{'tc_options': - {'rfc2544': {'allowed_drop_rate': '0.8 - 1'}}, + {'rfc2544': {'allowed_drop_rate': '0.8 - 1'}}, 'runner': {'duration': 400, 'interval': 35, 'type': 'Duration'}, 'traffic_options': @@ -184,16 +187,20 @@ class TestIXIATrafficGen(unittest.TestCase): ixnet_traffic_gen = IxiaTrafficGen(NAME, vnfd) scenario_cfg = {'tc': "nsb_test_case", "topology": "", 'ixia_profile': "ixload.cfg"} - scenario_cfg.update({'options': {'packetsize': 64, - 'traffic_type': 4, - 'rfc2544': {'allowed_drop_rate': '0.8 - 1'}, - 'vnf__1': {'rules': 'acl_1rule.yaml', - 'vnf_config': {'lb_config': 'SW', - 'lb_count': 1, - 'worker_config': - '1C/1T', - 'worker_threads': 1}} - }}) + scenario_cfg.update( + { + 'options': { + 'packetsize': 64, + 'traffic_type': 4, + 'rfc2544': { + 'allowed_drop_rate': '0.8 - 1'}, + 'vnf__1': { + 'rules': 'acl_1rule.yaml', + 'vnf_config': { + 'lb_config': 'SW', + 'lb_count': 1, + 'worker_config': '1C/1T', + 'worker_threads': 1}}}}) ixnet_traffic_gen.topology = "" ixnet_traffic_gen.get_ixobj = mock.MagicMock() ixnet_traffic_gen._ixia_traffic_gen = mock.MagicMock() @@ -240,7 +247,8 @@ class TestIXIATrafficGen(unittest.TestCase): sut = IxiaTrafficGen('vnf1', vnfd) sut._check_status() - @mock.patch("yardstick.network_services.vnf_generic.vnf.tg_rfc2544_ixia.time") + @mock.patch( + "yardstick.network_services.vnf_generic.vnf.tg_rfc2544_ixia.time") @mock.patch("yardstick.ssh.SSH") def test_traffic_runner(self, mock_ssh, *args): mock_traffic_profile = mock.Mock(autospec=TrafficProfile) @@ -299,8 +307,10 @@ class TestIXIATrafficGen(unittest.TestCase): }, ] - mock_traffic_profile.execute_traffic.return_value = ['Completed', samples] - mock_traffic_profile.get_drop_percentage.return_value = ['Completed', samples] + mock_traffic_profile.execute_traffic.return_value = [ + 'Completed', samples] + mock_traffic_profile.get_drop_percentage.return_value = [ + 'Completed', samples] sut = IxiaTrafficGen(name, vnfd) sut.vnf_port_pairs = [[[0], [1]]] diff --git a/tests/unit/network_services/vnf_generic/vnf/test_tg_rfc2544_trex.py b/yardstick/tests/unit/network_services/vnf_generic/vnf/test_tg_rfc2544_trex.py similarity index 98% rename from tests/unit/network_services/vnf_generic/vnf/test_tg_rfc2544_trex.py rename to yardstick/tests/unit/network_services/vnf_generic/vnf/test_tg_rfc2544_trex.py index b9a95a945..8b1b8a39c 100644 --- a/tests/unit/network_services/vnf_generic/vnf/test_tg_rfc2544_trex.py +++ b/yardstick/tests/unit/network_services/vnf_generic/vnf/test_tg_rfc2544_trex.py @@ -13,12 +13,10 @@ # limitations under the License. # -from __future__ import absolute_import - import unittest import mock -from tests.unit import STL_MOCKS +from yardstick.tests import STL_MOCKS SSH_HELPER = 'yardstick.network_services.vnf_generic.vnf.sample_vnf.VnfSshHelper' @@ -31,7 +29,8 @@ if stl_patch: TrexRfcResourceHelper from yardstick.network_services.vnf_generic.vnf import tg_rfc2544_trex from yardstick.network_services.traffic_profile.base import TrafficProfile - from tests.unit.network_services.vnf_generic.vnf.test_base import FileAbsPath, mock_ssh + from yardstick.tests.unit.network_services.vnf_generic.vnf.test_base \ + import FileAbsPath, mock_ssh MODULE_PATH = FileAbsPath(__file__) get_file_abspath = MODULE_PATH.get_path diff --git a/tests/unit/network_services/vnf_generic/vnf/test_tg_trex.py b/yardstick/tests/unit/network_services/vnf_generic/vnf/test_tg_trex.py similarity index 77% rename from tests/unit/network_services/vnf_generic/vnf/test_tg_trex.py rename to yardstick/tests/unit/network_services/vnf_generic/vnf/test_tg_trex.py index f80d1f948..aae3d468f 100644 --- a/tests/unit/network_services/vnf_generic/vnf/test_tg_trex.py +++ b/yardstick/tests/unit/network_services/vnf_generic/vnf/test_tg_trex.py @@ -14,12 +14,12 @@ # import copy -import mock +import mock import unittest -from tests.unit.network_services.vnf_generic.vnf.test_base import mock_ssh -from tests.unit import STL_MOCKS +from yardstick.tests.unit.network_services.vnf_generic.vnf.test_base import mock_ssh +from yardstick.tests import STL_MOCKS SSH_HELPER = 'yardstick.network_services.vnf_generic.vnf.sample_vnf.VnfSshHelper' @@ -37,18 +37,18 @@ if stl_patch: class TestTrexTrafficGen(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'}], + {'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': @@ -63,49 +63,50 @@ class TestTrexTrafficGen(unittest.TestCase): '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', - 'vld_id': 'downlink_0', - 'ifname': 'xe0', - 'local_mac': '00:00:00:00:00:02'}, + {'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', + 'vld_id': 'downlink_0', + 'ifname': 'xe0', + 'local_mac': '00:00:00:00:00:02'}, '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', - 'vld_id': 'uplink_0', - 'ifname': 'xe1', - 'local_mac': '00:00:00:00:00:01'}, + {'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', + 'vld_id': 'uplink_0', + 'ifname': 'xe1', + 'local_mac': '00:00:00:00:00:01'}, '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', + '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'}]}} + 'benchmark': + {'kpi': ['packets_in', 'packets_fwd', + 'packets_dropped']}, + 'connection-point': [{'type': 'VPORT', 'name': 'xe0'}, + {'type': 'VPORT', 'name': 'xe1'}], + 'id': 'VpeApproxVnf', 'name': 'VPEVnfSsh'}]}} TRAFFIC_PROFILE = { "schema": "isb:traffic_profile:0.1", @@ -301,7 +302,8 @@ class TestTrexTrafficGen(unittest.TestCase): mock_ssh(ssh) vnfd = self.VNFD['vnfd:vnfd-catalog']['vnfd'][0] trex_traffic_gen = TrexTrafficGen(NAME, vnfd) - self.assertIsInstance(trex_traffic_gen.resource_helper, TrexResourceHelper) + self.assertIsInstance( + trex_traffic_gen.resource_helper, TrexResourceHelper) @mock.patch(SSH_HELPER) def test_collect_kpi(self, ssh): @@ -334,7 +336,8 @@ class TestTrexTrafficGen(unittest.TestCase): trex_traffic_gen.resource_helper.ssh_helper = mock.MagicMock() trex_traffic_gen.setup_helper.setup_vnf_environment = mock.MagicMock() - self.assertIsNone(trex_traffic_gen.instantiate(self.SCENARIO_CFG, self.CONTEXT_CFG)) + self.assertIsNone(trex_traffic_gen.instantiate( + self.SCENARIO_CFG, self.CONTEXT_CFG)) @mock.patch(SSH_HELPER) def test_instantiate_error(self, ssh): @@ -349,7 +352,8 @@ class TestTrexTrafficGen(unittest.TestCase): trex_traffic_gen.ssh_helper = mock.MagicMock() trex_traffic_gen.resource_helper.ssh_helper = mock.MagicMock() trex_traffic_gen.setup_helper.setup_vnf_environment = mock.MagicMock() - self.assertIsNone(trex_traffic_gen.instantiate(self.SCENARIO_CFG, self.CONTEXT_CFG)) + self.assertIsNone(trex_traffic_gen.instantiate( + self.SCENARIO_CFG, self.CONTEXT_CFG)) @mock.patch(SSH_HELPER) def test__start_server(self, ssh): @@ -368,7 +372,8 @@ class TestTrexTrafficGen(unittest.TestCase): trex_traffic_gen = TrexTrafficGen(NAME, vnfd) trex_traffic_gen.ssh_helper = mock.MagicMock() trex_traffic_gen.resource_helper.ssh_helper = mock.MagicMock() - trex_traffic_gen.scenario_helper.scenario_cfg = {"options": {NAME: {"queues_per_port": 2}}} + trex_traffic_gen.scenario_helper.scenario_cfg = { + "options": {NAME: {"queues_per_port": 2}}} self.assertIsNone(trex_traffic_gen._start_server()) @mock.patch(SSH_HELPER) @@ -406,42 +411,43 @@ class TestTrexTrafficGen(unittest.TestCase): vnfd = copy.deepcopy(self.VNFD['vnfd:vnfd-catalog']['vnfd'][0]) vnfd['vdu'][0]['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': 2, - 'bandwidth': '10 Gbps', - 'driver': "i40e", - 'dst_ip': '152.16.100.20', - 'local_iface_name': 'xe0', - 'vld_id': 'downlink_0', - 'ifname': 'xe0', - 'local_mac': '00:00:00:00:00:02'}, + {'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': 2, + 'bandwidth': '10 Gbps', + 'driver': "i40e", + 'dst_ip': '152.16.100.20', + 'local_iface_name': 'xe0', + 'vld_id': 'downlink_0', + 'ifname': 'xe0', + 'local_mac': '00:00:00:00:00:02'}, 'vnfd-connection-point-ref': 'xe0', 'name': 'xe0'}, {'virtual-interface': - {'dst_mac': '00:00:00:00:00:03', - 'vpci': '0000:04:00.0', - 'local_ip': '152.16.40.19', - 'type': 'PCI-PASSTHROUGH', - 'driver': "i40e", - 'netmask': '255.255.255.0', - 'dpdk_port_num': 0, - 'bandwidth': '10 Gbps', - 'dst_ip': '152.16.40.20', - 'local_iface_name': 'xe1', - 'vld_id': 'uplink_0', - 'ifname': 'xe1', - 'local_mac': '00:00:00:00:00:01'}, + {'dst_mac': '00:00:00:00:00:03', + 'vpci': '0000:04:00.0', + 'local_ip': '152.16.40.19', + 'type': 'PCI-PASSTHROUGH', + 'driver': "i40e", + 'netmask': '255.255.255.0', + 'dpdk_port_num': 0, + 'bandwidth': '10 Gbps', + 'dst_ip': '152.16.40.20', + 'local_iface_name': 'xe1', + 'vld_id': 'uplink_0', + 'ifname': 'xe1', + 'local_mac': '00:00:00:00:00:01'}, 'vnfd-connection-point-ref': 'xe1', 'name': 'xe1'}] trex_traffic_gen = TrexTrafficGen(NAME, vnfd) trex_traffic_gen.resource_helper.ssh_helper = mock.MagicMock() trex_traffic_gen.resource_helper.generate_cfg() trex_traffic_gen.resource_helper._build_ports() - self.assertEqual(sorted(trex_traffic_gen.resource_helper.all_ports), [0, 1]) + self.assertEqual( + sorted(trex_traffic_gen.resource_helper.all_ports), [0, 1]) # there is a gap in ordering self.assertEqual(dict(trex_traffic_gen.resource_helper.dpdk_to_trex_port_map), {0: 0, 2: 1}) diff --git a/tests/unit/network_services/vnf_generic/vnf/test_udp_replay.py b/yardstick/tests/unit/network_services/vnf_generic/vnf/test_udp_replay.py similarity index 97% rename from tests/unit/network_services/vnf_generic/vnf/test_udp_replay.py rename to yardstick/tests/unit/network_services/vnf_generic/vnf/test_udp_replay.py index 4cf4320f9..05a0ead71 100644 --- a/tests/unit/network_services/vnf_generic/vnf/test_udp_replay.py +++ b/yardstick/tests/unit/network_services/vnf_generic/vnf/test_udp_replay.py @@ -17,8 +17,8 @@ import unittest import mock import os -from tests.unit import STL_MOCKS -from tests.unit.network_services.vnf_generic.vnf.test_base import mock_ssh +from yardstick.tests import STL_MOCKS +from yardstick.tests.unit.network_services.vnf_generic.vnf.test_base import mock_ssh SSH_HELPER = 'yardstick.network_services.vnf_generic.vnf.sample_vnf.VnfSshHelper' @@ -335,16 +335,18 @@ class TestUdpReplayApproxVnf(unittest.TestCase): mock_ssh(ssh) vnfd = self.VNFD_0 - result = "stats\r\r\n\r\nUDP_Replay stats:\r\n--------------\r\n" \ - "Port\t\tRx Packet\t\tTx Packet\t\tRx Pkt Drop\t\tTx Pkt Drop \r\n"\ - "0\t\t7374156\t\t7374136\t\t\t0\t\t\t0\r\n" \ - "1\t\t7374316\t\t7374315\t\t\t0\t\t\t0\r\n\r\nReplay>\r\r\nReplay>" + get_stats_ret_val = \ + "stats\r\r\n\r\nUDP_Replay stats:\r\n--------------\r\n" \ + "Port\t\tRx Packet\t\tTx Packet\t\tRx Pkt Drop\t\tTx Pkt Drop \r\n"\ + "0\t\t7374156\t\t7374136\t\t\t0\t\t\t0\r\n" \ + "1\t\t7374316\t\t7374315\t\t\t0\t\t\t0\r\n\r\nReplay>\r\r\nReplay>" udp_replay_approx_vnf = UdpReplayApproxVnf(NAME, vnfd) udp_replay_approx_vnf.q_in = mock.MagicMock() udp_replay_approx_vnf.q_out = mock.MagicMock() udp_replay_approx_vnf.q_out.qsize = mock.Mock(return_value=0) udp_replay_approx_vnf.all_ports = ["xe0", "xe1"] - udp_replay_approx_vnf.get_stats = mock.Mock(return_value=result) + udp_replay_approx_vnf.get_stats = mock.Mock(return_value=get_stats_ret_val) + result = {'collect_stats': {}, 'packets_dropped': 0, 'packets_fwd': 14748451, 'packets_in': 14748472} self.assertEqual(result, udp_replay_approx_vnf.collect_kpi()) diff --git a/tests/unit/network_services/vnf_generic/vnf/test_vfw_vnf.py b/yardstick/tests/unit/network_services/vnf_generic/vnf/test_vfw_vnf.py similarity index 99% rename from tests/unit/network_services/vnf_generic/vnf/test_vfw_vnf.py rename to yardstick/tests/unit/network_services/vnf_generic/vnf/test_vfw_vnf.py index aaad66381..ffb5cd6f0 100644 --- a/tests/unit/network_services/vnf_generic/vnf/test_vfw_vnf.py +++ b/yardstick/tests/unit/network_services/vnf_generic/vnf/test_vfw_vnf.py @@ -17,8 +17,8 @@ import unittest import mock import os -from tests.unit import STL_MOCKS -from tests.unit.network_services.vnf_generic.vnf.test_base import mock_ssh +from yardstick.tests import STL_MOCKS +from yardstick.tests.unit.network_services.vnf_generic.vnf.test_base import mock_ssh from yardstick.common import utils @@ -253,9 +253,9 @@ VFW TOTAL: pkts_received: 6007180, "pkts_fw_forwarded": 6007180, "pkts_drop_fw": "CT TOTAL: ct_packets_forwarded" : 6007180, " ct_packets_dropped" : 0, "ct_sessions" : {"active" : 130050, "open_attempt" : 130050, "re-open_attempt" : 0, "established" : 0, "closed" : 0, "timeout" : 0}, "ct_drops" : {"out_of_window" : 0, "invalid_conn" : 0, "invalid_state_transition" : 0 "RST" : 0} Action ID: 00, packetCount: 2954633, byteCount: 177277980 Action ID: 01, packetCount: 3052547, byteCount: 183152820 -pipeline> +pipeline> -pipeline> +pipeline> """ # noqa @mock.patch("yardstick.network_services.vnf_generic.vnf.sample_vnf.time") diff --git a/tests/unit/network_services/vnf_generic/vnf/test_vpe_vnf.py b/yardstick/tests/unit/network_services/vnf_generic/vnf/test_vpe_vnf.py similarity index 99% rename from tests/unit/network_services/vnf_generic/vnf/test_vpe_vnf.py rename to yardstick/tests/unit/network_services/vnf_generic/vnf/test_vpe_vnf.py index 9857e95b6..4fd51f0e3 100644 --- a/tests/unit/network_services/vnf_generic/vnf/test_vpe_vnf.py +++ b/yardstick/tests/unit/network_services/vnf_generic/vnf/test_vpe_vnf.py @@ -21,9 +21,9 @@ 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.tests import STL_MOCKS +from yardstick.tests.unit.network_services.vnf_generic.vnf.test_base import FileAbsPath +from yardstick.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 @@ -631,7 +631,7 @@ class TestVpeApproxVnf(unittest.TestCase): @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("six.moves.builtins.open") @mock.patch(SSH_HELPER) def test_build_config(self, ssh, *args): mock_ssh(ssh) -- 2.16.6