aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRodolfo Alonso Hernandez <rodolfo.alonso.hernandez@intel.com>2017-11-23 09:08:14 +0000
committerRodolfo Alonso Hernandez <rodolfo.alonso.hernandez@intel.com>2018-01-03 23:48:31 +0000
commit67bd29933789e7f31c52290fdd43835e54f89eaf (patch)
tree409fad301d97e6b1f2588925cfd52cd2051cbb4e
parentfa3a7b8d6cadbb2d5e9311cb2da040003f9b9140 (diff)
Make GenericVNF an abstract class
GenericVNF class is now an abstract class. Only optional methods are implemented. Mandatory methods: - instantiate - wait_for_instantiate - terminate - scale - collect_kpi. JIRA: YARDSTICK-866 Change-Id: Ia8766f9f98816e11894d1e72b0f3bd573d091d99 Signed-off-by: Rodolfo Alonso Hernandez <rodolfo.alonso.hernandez@intel.com>
-rw-r--r--tests/unit/network_services/vnf_generic/vnf/test_acl_vnf.py26
-rw-r--r--tests/unit/network_services/vnf_generic/vnf/test_base.py287
-rw-r--r--tests/unit/network_services/vnf_generic/vnf/test_cgnapt_vnf.py33
-rw-r--r--tests/unit/network_services/vnf_generic/vnf/test_prox_vnf.py34
-rw-r--r--tests/unit/network_services/vnf_generic/vnf/test_sample_vnf.py47
-rw-r--r--tests/unit/network_services/vnf_generic/vnf/test_tg_ping.py8
-rw-r--r--tests/unit/network_services/vnf_generic/vnf/test_tg_prox.py27
-rw-r--r--tests/unit/network_services/vnf_generic/vnf/test_tg_rfc2544_ixia.py28
-rw-r--r--tests/unit/network_services/vnf_generic/vnf/test_tg_rfc2544_trex.py9
-rw-r--r--tests/unit/network_services/vnf_generic/vnf/test_tg_trex.py15
-rw-r--r--tests/unit/network_services/vnf_generic/vnf/test_udp_replay.py37
-rw-r--r--tests/unit/network_services/vnf_generic/vnf/test_vfw_vnf.py28
-rw-r--r--tests/unit/network_services/vnf_generic/vnf/test_vpe_vnf.py73
-rw-r--r--yardstick/common/exceptions.py40
-rw-r--r--yardstick/network_services/vnf_generic/vnf/acl_vnf.py3
-rw-r--r--yardstick/network_services/vnf_generic/vnf/base.py58
-rw-r--r--yardstick/network_services/vnf_generic/vnf/sample_vnf.py36
-rw-r--r--yardstick/network_services/vnf_generic/vnf/tg_ping.py4
-rw-r--r--yardstick/network_services/vnf_generic/vnf/tg_rfc2544_ixia.py5
-rw-r--r--yardstick/network_services/vnf_generic/vnf/tg_trex.py8
20 files changed, 349 insertions, 457 deletions
diff --git a/tests/unit/network_services/vnf_generic/vnf/test_acl_vnf.py b/tests/unit/network_services/vnf_generic/vnf/test_acl_vnf.py
index e9444b493..2a2647a91 100644
--- a/tests/unit/network_services/vnf_generic/vnf/test_acl_vnf.py
+++ b/tests/unit/network_services/vnf_generic/vnf/test_acl_vnf.py
@@ -15,8 +15,6 @@
# limitations under the License.
#
-from __future__ import absolute_import
-
import unittest
import mock
import os
@@ -241,14 +239,14 @@ class TestAclApproxVnf(unittest.TestCase):
'password': 'r00t',
'VNF model': 'acl_vnf.yaml'}}}
- def test___init__(self, mock_process):
+ def test___init__(self, *args):
vnfd = self.VNFD['vnfd:vnfd-catalog']['vnfd'][0]
acl_approx_vnf = AclApproxVnf(name, vnfd)
self.assertIsNone(acl_approx_vnf._vnf_process)
@mock.patch("yardstick.network_services.vnf_generic.vnf.sample_vnf.time")
@mock.patch(SSH_HELPER)
- def test_collect_kpi(self, ssh, mock_time, mock_process):
+ def test_collect_kpi(self, ssh, *args):
mock_ssh(ssh)
vnfd = self.VNFD['vnfd:vnfd-catalog']['vnfd'][0]
@@ -263,7 +261,7 @@ class TestAclApproxVnf(unittest.TestCase):
@mock.patch("yardstick.network_services.vnf_generic.vnf.sample_vnf.time")
@mock.patch(SSH_HELPER)
- def test_vnf_execute_command(self, ssh, mock_time, mock_process):
+ def test_vnf_execute_command(self, ssh, *args):
mock_ssh(ssh)
vnfd = self.VNFD['vnfd:vnfd-catalog']['vnfd'][0]
@@ -275,7 +273,7 @@ class TestAclApproxVnf(unittest.TestCase):
self.assertEqual("", acl_approx_vnf.vnf_execute(cmd))
@mock.patch(SSH_HELPER)
- def test_get_stats(self, ssh, mock_process):
+ def test_get_stats(self, ssh, *args):
mock_ssh(ssh)
vnfd = self.VNFD['vnfd:vnfd-catalog']['vnfd'][0]
@@ -296,7 +294,7 @@ class TestAclApproxVnf(unittest.TestCase):
@mock.patch("yardstick.network_services.vnf_generic.vnf.acl_vnf.eval")
@mock.patch('yardstick.network_services.vnf_generic.vnf.acl_vnf.open')
@mock.patch(SSH_HELPER)
- def test_run_acl(self, ssh, mock_open, mock_eval, mock_hex, mock_process):
+ def test_run_acl(self, ssh, *args):
mock_ssh(ssh)
vnfd = self.VNFD['vnfd:vnfd-catalog']['vnfd'][0]
@@ -317,7 +315,7 @@ class TestAclApproxVnf(unittest.TestCase):
@mock.patch("yardstick.network_services.vnf_generic.vnf.acl_vnf.find_relative_file")
@mock.patch("yardstick.network_services.vnf_generic.vnf.sample_vnf.Context")
@mock.patch(SSH_HELPER)
- def test_instantiate(self, ssh, mock_context, mock_yang, mock_find, mock_process):
+ def test_instantiate(self, ssh, *args):
mock_ssh(ssh)
vnfd = self.VNFD['vnfd:vnfd-catalog']['vnfd'][0]
@@ -333,16 +331,9 @@ class TestAclApproxVnf(unittest.TestCase):
self.assertIsNone(acl_approx_vnf.instantiate(self.scenario_cfg,
self.context_cfg))
- def test_scale(self, mock_process):
- vnfd = self.VNFD['vnfd:vnfd-catalog']['vnfd'][0]
- acl_approx_vnf = AclApproxVnf(name, vnfd)
- flavor = ""
- with self.assertRaises(NotImplementedError):
- acl_approx_vnf.scale(flavor)
-
@mock.patch("yardstick.network_services.vnf_generic.vnf.sample_vnf.time")
@mock.patch(SSH_HELPER)
- def test_terminate(self, ssh, mock_time, mock_process):
+ def test_terminate(self, ssh, *args):
mock_ssh(ssh)
vnfd = self.VNFD['vnfd:vnfd-catalog']['vnfd'][0]
@@ -355,6 +346,3 @@ class TestAclApproxVnf(unittest.TestCase):
acl_approx_vnf.dpdk_nic_bind = "dpdk_nic_bind.py"
acl_approx_vnf._resource_collect_stop = mock.Mock()
self.assertEqual(None, acl_approx_vnf.terminate())
-
-if __name__ == '__main__':
- unittest.main()
diff --git a/tests/unit/network_services/vnf_generic/vnf/test_base.py b/tests/unit/network_services/vnf_generic/vnf/test_base.py
index f812d67ef..e9488f76f 100644
--- a/tests/unit/network_services/vnf_generic/vnf/test_base.py
+++ b/tests/unit/network_services/vnf_generic/vnf/test_base.py
@@ -17,20 +17,20 @@
# Unittest for yardstick.network_services.vnf_generic.vnf.test_base
-from __future__ import absolute_import
-import unittest
+import multiprocessing
import os
+
import mock
-from multiprocessing import Queue
+import unittest
-from yardstick.network_services.vnf_generic.vnf.base import \
- QueueFileWrapper, GenericVNF, GenericTrafficGen
+from yardstick.network_services.vnf_generic.vnf import base
from yardstick.ssh import SSH
-IP_PIPELINE_CFG_FILE_TPL = """
-arp_route_tbl = ({port0_local_ip_hex},{port0_netmask_hex},1,"""
-"""{port1_local_ip_hex}) ({port1_local_ip_hex},{port1_netmask_hex},0,"""
-"""{port0_local_ip_hex})"""
+
+IP_PIPELINE_CFG_FILE_TPL = ("arp_route_tbl = ({port0_local_ip_hex},"
+ "{port0_netmask_hex},1,{port1_local_ip_hex}) "
+ "({port1_local_ip_hex},{port1_netmask_hex},0,"
+ "{port0_local_ip_hex})")
IP_PIPELINE_ND_CFG_FILE_TPL = """
nd_route_tbl = ({port1_dst_ip_hex6},"""
@@ -38,6 +38,111 @@ nd_route_tbl = ({port1_dst_ip_hex6},"""
_LOCAL_OBJECT = object()
+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'
+ },
+ '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'
+ },
+ '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'
+}
+
+VNFD = {
+ 'vnfd:vnfd-catalog': {
+ 'vnfd': [
+ VNFD_0,
+ ]
+ }
+}
+
class FileAbsPath(object):
def __init__(self, module_file):
@@ -70,17 +175,17 @@ def mock_ssh(mock_ssh_type, spec=None, exec_result=_LOCAL_OBJECT, run_result=_LO
class TestQueueFileWrapper(unittest.TestCase):
def setUp(self):
self.prompt = "pipeline>"
- self.q_in = Queue()
- self.q_out = Queue()
+ self.q_in = multiprocessing.Queue()
+ self.q_out = multiprocessing.Queue()
def test___init__(self):
queue_file_wrapper = \
- QueueFileWrapper(self.q_in, self.q_out, self.prompt)
+ base.QueueFileWrapper(self.q_in, self.q_out, self.prompt)
self.assertEqual(queue_file_wrapper.prompt, self.prompt)
def test_clear(self):
queue_file_wrapper = \
- QueueFileWrapper(self.q_in, self.q_out, self.prompt)
+ base.QueueFileWrapper(self.q_in, self.q_out, self.prompt)
queue_file_wrapper.bufsize = 5
queue_file_wrapper.write("pipeline>")
queue_file_wrapper.close()
@@ -89,167 +194,45 @@ class TestQueueFileWrapper(unittest.TestCase):
def test_close(self):
queue_file_wrapper = \
- QueueFileWrapper(self.q_in, self.q_out, self.prompt)
+ base.QueueFileWrapper(self.q_in, self.q_out, self.prompt)
self.assertEqual(None, queue_file_wrapper.close())
def test_read(self):
queue_file_wrapper = \
- QueueFileWrapper(self.q_in, self.q_out, self.prompt)
+ base.QueueFileWrapper(self.q_in, self.q_out, self.prompt)
queue_file_wrapper.q_in.put("pipeline>")
self.assertEqual("pipeline>", queue_file_wrapper.read(20))
def test_write(self):
queue_file_wrapper = \
- QueueFileWrapper(self.q_in, self.q_out, self.prompt)
+ base.QueueFileWrapper(self.q_in, self.q_out, self.prompt)
queue_file_wrapper.write("pipeline>")
self.assertIsNotNone(queue_file_wrapper.q_out.empty())
class TestGenericVNF(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'
- },
- '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'
- },
- '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'
- }
-
- VNFD = {
- 'vnfd:vnfd-catalog': {
- 'vnfd': [
- VNFD_0,
- ]
- }
- }
-
- def test___init__(self):
- generic_vnf = GenericVNF('vnf1', self.VNFD_0)
- assert generic_vnf.kpi
-
- def test_collect_kpi(self):
- generic_vnf = GenericVNF('vnf1', self.VNFD_0)
- self.assertRaises(NotImplementedError, generic_vnf.collect_kpi)
-
- def test__get_kpi_definition(self):
- vnfd = self.VNFD['vnfd:vnfd-catalog']['vnfd'][0]
- generic_vnf = GenericVNF('vnf1', vnfd)
- kpi = generic_vnf._get_kpi_definition()
- self.assertEqual(kpi, ['packets_in', 'packets_fwd', 'packets_dropped'])
-
- def test_instantiate(self):
- generic_vnf = GenericVNF('vnf1', self.VNFD['vnfd:vnfd-catalog']['vnfd'][0])
- with self.assertRaises(NotImplementedError):
- generic_vnf.instantiate({}, {})
-
- def test_scale(self):
- generic_vnf = GenericVNF('vnf1', self.VNFD['vnfd:vnfd-catalog']['vnfd'][0])
- with self.assertRaises(NotImplementedError):
- generic_vnf.scale()
-
- def test_terminate(self):
- generic_vnf = GenericVNF('vnf1', self.VNFD['vnfd:vnfd-catalog']['vnfd'][0])
- with self.assertRaises(NotImplementedError):
- generic_vnf.terminate()
+ def test_definition(self):
+ """Make sure that the abstract class cannot be instantiated"""
+ with self.assertRaises(TypeError) as exc:
+ # pylint: disable=abstract-class-instantiated
+ base.GenericVNF('vnf1', VNFD['vnfd:vnfd-catalog']['vnfd'][0])
+ msg = ("Can't instantiate abstract class GenericVNF with abstract "
+ "methods collect_kpi, instantiate, scale, terminate, "
+ "wait_for_instantiate")
+ self.assertEqual(msg, str(exc.exception))
class TestGenericTrafficGen(unittest.TestCase):
def test_definition(self):
"""Make sure that the abstract class cannot be instantiated"""
- vnfd = TestGenericVNF.VNFD['vnfd:vnfd-catalog']['vnfd'][0]
+ vnfd = VNFD['vnfd:vnfd-catalog']['vnfd'][0]
name = 'vnf1'
with self.assertRaises(TypeError) as exc:
- GenericTrafficGen(name, vnfd)
+ # pylint: disable=abstract-class-instantiated
+ base.GenericTrafficGen(name, vnfd)
msg = ("Can't instantiate abstract class GenericTrafficGen with "
- "abstract methods run_traffic, terminate")
+ "abstract methods collect_kpi, instantiate, run_traffic, "
+ "scale, terminate")
self.assertEqual(msg, str(exc.exception))
diff --git a/tests/unit/network_services/vnf_generic/vnf/test_cgnapt_vnf.py b/tests/unit/network_services/vnf_generic/vnf/test_cgnapt_vnf.py
index 832509ea7..f2ce18fb3 100644
--- a/tests/unit/network_services/vnf_generic/vnf/test_cgnapt_vnf.py
+++ b/tests/unit/network_services/vnf_generic/vnf/test_cgnapt_vnf.py
@@ -15,14 +15,11 @@
# limitations under the License.
#
-from __future__ import absolute_import
-
+from copy import deepcopy
import os
import unittest
import mock
-from copy import deepcopy
-
from tests.unit import STL_MOCKS
from tests.unit.network_services.vnf_generic.vnf.test_base import mock_ssh
@@ -305,14 +302,14 @@ class TestCgnaptApproxVnf(unittest.TestCase):
def setUp(self):
self.scenario_cfg = deepcopy(self.SCENARIO_CFG)
- def test___init__(self, mock_process):
+ def test___init__(self, *args):
vnfd = self.VNFD['vnfd:vnfd-catalog']['vnfd'][0]
cgnapt_approx_vnf = CgnaptApproxVnf(name, vnfd)
self.assertIsNone(cgnapt_approx_vnf._vnf_process)
@mock.patch('yardstick.network_services.vnf_generic.vnf.sample_vnf.time')
@mock.patch(SSH_HELPER)
- def test_collect_kpi(self, ssh, mock_time, mock_process):
+ def test_collect_kpi(self, ssh, *args):
mock_ssh(ssh)
vnfd = self.VNFD['vnfd:vnfd-catalog']['vnfd'][0]
@@ -328,7 +325,7 @@ class TestCgnaptApproxVnf(unittest.TestCase):
@mock.patch('yardstick.network_services.vnf_generic.vnf.sample_vnf.time')
@mock.patch(SSH_HELPER)
- def test_vnf_execute_command(self, ssh, mock_time, mock_process):
+ def test_vnf_execute_command(self, ssh, *args):
mock_ssh(ssh)
vnfd = self.VNFD['vnfd:vnfd-catalog']['vnfd'][0]
@@ -340,7 +337,7 @@ class TestCgnaptApproxVnf(unittest.TestCase):
self.assertEqual("", cgnapt_approx_vnf.vnf_execute(cmd))
@mock.patch(SSH_HELPER)
- def test_get_stats(self, ssh, mock_process):
+ def test_get_stats(self, ssh, *args):
mock_ssh(ssh)
vnfd = self.VNFD['vnfd:vnfd-catalog']['vnfd'][0]
@@ -362,7 +359,7 @@ class TestCgnaptApproxVnf(unittest.TestCase):
@mock.patch("yardstick.network_services.vnf_generic.vnf.cgnapt_vnf.eval")
@mock.patch('yardstick.network_services.vnf_generic.vnf.cgnapt_vnf.open')
@mock.patch(SSH_HELPER)
- def test_run_vcgnapt(self, ssh, mock_hex, mock_eval, mock_open, mock_process):
+ def test_run_vcgnapt(self, ssh, *args):
mock_ssh(ssh)
vnfd = self.VNFD['vnfd:vnfd-catalog']['vnfd'][0]
@@ -377,7 +374,7 @@ class TestCgnaptApproxVnf(unittest.TestCase):
@mock.patch("yardstick.network_services.vnf_generic.vnf.sample_vnf.Context")
@mock.patch(SSH_HELPER)
- def test_instantiate(self, ssh, mock_context, mock_process):
+ def test_instantiate(self, ssh, *args):
mock_ssh(ssh)
vnfd = self.VNFD['vnfd:vnfd-catalog']['vnfd'][0]
@@ -393,15 +390,9 @@ class TestCgnaptApproxVnf(unittest.TestCase):
self.assertIsNone(cgnapt_approx_vnf.instantiate(self.scenario_cfg,
self.context_cfg))
- def test_scale(self, mock_process):
- vnfd = self.VNFD['vnfd:vnfd-catalog']['vnfd'][0]
- cgnapt_approx_vnf = CgnaptApproxVnf(name, vnfd)
- flavor = ""
- self.assertRaises(NotImplementedError, cgnapt_approx_vnf.scale, flavor)
-
@mock.patch("yardstick.network_services.vnf_generic.vnf.sample_vnf.time")
@mock.patch(SSH_HELPER)
- def test_terminate(self, ssh, mock_time, mock_process):
+ def test_terminate(self, ssh, *args):
mock_ssh(ssh)
vnfd = self.VNFD['vnfd:vnfd-catalog']['vnfd'][0]
@@ -417,7 +408,7 @@ class TestCgnaptApproxVnf(unittest.TestCase):
@mock.patch("yardstick.network_services.vnf_generic.vnf.sample_vnf.time")
@mock.patch(SSH_HELPER)
- def test__vnf_up_post(self, ssh, mock_time, mock_process):
+ def test__vnf_up_post(self, ssh, *args):
mock_ssh(ssh)
vnfd = self.VNFD['vnfd:vnfd-catalog']['vnfd'][0]
@@ -433,7 +424,7 @@ class TestCgnaptApproxVnf(unittest.TestCase):
@mock.patch("yardstick.network_services.vnf_generic.vnf.sample_vnf.time")
@mock.patch(SSH_HELPER)
- def test__vnf_up_post_short(self, ssh, mock_time, mock_process):
+ def test__vnf_up_post_short(self, ssh, *args):
mock_ssh(ssh)
vnfd = self.VNFD['vnfd:vnfd-catalog']['vnfd'][0]
@@ -444,7 +435,3 @@ class TestCgnaptApproxVnf(unittest.TestCase):
cgnapt_approx_vnf.scenario_helper.scenario_cfg = self.scenario_cfg
cgnapt_approx_vnf._resource_collect_stop = mock.Mock()
cgnapt_approx_vnf._vnf_up_post()
-
-
-if __name__ == '__main__':
- unittest.main()
diff --git a/tests/unit/network_services/vnf_generic/vnf/test_prox_vnf.py b/tests/unit/network_services/vnf_generic/vnf/test_prox_vnf.py
index e29e8ddcd..ee6c67eb7 100644
--- a/tests/unit/network_services/vnf_generic/vnf/test_prox_vnf.py
+++ b/tests/unit/network_services/vnf_generic/vnf/test_prox_vnf.py
@@ -15,8 +15,6 @@
# limitations under the License.
#
-from __future__ import absolute_import
-
import errno
import os
import unittest
@@ -316,13 +314,13 @@ class TestProxApproxVnf(unittest.TestCase):
}
@mock.patch(SSH_HELPER)
- def test___init__(self, ssh, mock_time):
+ def test___init__(self, ssh, *args):
mock_ssh(ssh)
prox_approx_vnf = ProxApproxVnf(NAME, self.VNFD0)
self.assertIsNone(prox_approx_vnf._vnf_process)
@mock.patch(SSH_HELPER)
- def test_collect_kpi_no_client(self, ssh, mock_time):
+ def test_collect_kpi_no_client(self, ssh, *args):
mock_ssh(ssh)
prox_approx_vnf = ProxApproxVnf(NAME, self.VNFD0)
@@ -337,7 +335,7 @@ class TestProxApproxVnf(unittest.TestCase):
self.assertEqual(result, expected)
@mock.patch(SSH_HELPER)
- def test_collect_kpi(self, ssh, mock_time):
+ def test_collect_kpi(self, ssh, *args):
mock_ssh(ssh)
resource_helper = mock.MagicMock()
@@ -357,7 +355,7 @@ class TestProxApproxVnf(unittest.TestCase):
self.assertEqual(result, expected)
@mock.patch(SSH_HELPER)
- def test_collect_kpi_error(self, ssh, mock_time):
+ def test_collect_kpi_error(self, ssh, *args):
mock_ssh(ssh)
resource_helper = mock.MagicMock()
@@ -370,7 +368,7 @@ class TestProxApproxVnf(unittest.TestCase):
with self.assertRaises(RuntimeError):
prox_approx_vnf.collect_kpi()
- def _get_file_abspath(self, filename, mock_time):
+ def _get_file_abspath(self, filename, *args):
curr_path = os.path.dirname(os.path.abspath(__file__))
file_path = os.path.join(curr_path, filename)
return file_path
@@ -378,7 +376,7 @@ class TestProxApproxVnf(unittest.TestCase):
@mock.patch('yardstick.benchmark.scenarios.networking.vnf_generic.open', create=True)
@mock.patch('yardstick.network_services.helpers.iniparser.open', create=True)
@mock.patch(SSH_HELPER)
- def test_run_prox(self, ssh, *_):
+ def test_run_prox(self, ssh, *args):
mock_ssh(ssh)
prox_approx_vnf = ProxApproxVnf(NAME, self.VNFD0)
@@ -394,7 +392,7 @@ class TestProxApproxVnf(unittest.TestCase):
self.assertEqual(result, expected)
@mock.patch(SSH_HELPER)
- def bad_test_instantiate(self, ssh, mock_time):
+ def bad_test_instantiate(self, *args):
prox_approx_vnf = ProxApproxVnf(NAME, self.VNFD0)
prox_approx_vnf.scenario_helper = mock.MagicMock()
prox_approx_vnf.setup_helper = mock.MagicMock()
@@ -403,7 +401,7 @@ class TestProxApproxVnf(unittest.TestCase):
prox_approx_vnf.setup_helper.build_config.assert_called_once()
@mock.patch(SSH_HELPER)
- def test_wait_for_instantiate_panic(self, ssh, mock_time):
+ def test_wait_for_instantiate_panic(self, ssh, *args):
mock_ssh(ssh, exec_result=(1, "", ""))
prox_approx_vnf = ProxApproxVnf(NAME, self.VNFD0)
prox_approx_vnf._vnf_process = mock.MagicMock(**{"is_alive.return_value": True})
@@ -413,16 +411,9 @@ class TestProxApproxVnf(unittest.TestCase):
with self.assertRaises(RuntimeError):
prox_approx_vnf.wait_for_instantiate()
- @mock.patch(SSH_HELPER)
- def test_scale(self, ssh, mock_time):
- mock_ssh(ssh)
- prox_approx_vnf = ProxApproxVnf(NAME, self.VNFD0)
- with self.assertRaises(NotImplementedError):
- prox_approx_vnf.scale()
-
@mock.patch('yardstick.network_services.vnf_generic.vnf.prox_helpers.socket')
@mock.patch(SSH_HELPER)
- def test_terminate(self, ssh, mock_socket, mock_time):
+ def test_terminate(self, ssh, *args):
mock_ssh(ssh)
prox_approx_vnf = ProxApproxVnf(NAME, self.VNFD0)
prox_approx_vnf._vnf_process = mock.MagicMock()
@@ -434,7 +425,7 @@ class TestProxApproxVnf(unittest.TestCase):
self.assertIsNone(prox_approx_vnf.terminate())
@mock.patch(SSH_HELPER)
- def test__vnf_up_post(self, ssh, mock_time):
+ def test__vnf_up_post(self, ssh, *args):
mock_ssh(ssh)
prox_approx_vnf = ProxApproxVnf(NAME, self.VNFD0)
prox_approx_vnf.resource_helper = resource_helper = mock.Mock()
@@ -443,7 +434,7 @@ class TestProxApproxVnf(unittest.TestCase):
self.assertEqual(resource_helper.up_post.call_count, 1)
@mock.patch(SSH_HELPER)
- def test_vnf_execute_oserror(self, ssh, mock_time):
+ def test_vnf_execute_oserror(self, ssh, *args):
mock_ssh(ssh)
prox_approx_vnf = ProxApproxVnf(NAME, self.VNFD0)
prox_approx_vnf.resource_helper = resource_helper = mock.Mock()
@@ -457,6 +448,3 @@ class TestProxApproxVnf(unittest.TestCase):
resource_helper.execute.side_effect = OSError(errno.EADDRINUSE, "")
with self.assertRaises(OSError):
prox_approx_vnf.vnf_execute("", _ignore_errors=True)
-
-if __name__ == '__main__':
- unittest.main()
diff --git a/tests/unit/network_services/vnf_generic/vnf/test_sample_vnf.py b/tests/unit/network_services/vnf_generic/vnf/test_sample_vnf.py
index 85b10c5a9..b4306ce61 100644
--- a/tests/unit/network_services/vnf_generic/vnf/test_sample_vnf.py
+++ b/tests/unit/network_services/vnf_generic/vnf/test_sample_vnf.py
@@ -15,10 +15,6 @@
# limitations under the License.
#
-# Unittest for yardstick.network_services.vnf_generic.vnf.sample_vnf
-
-from __future__ import absolute_import
-
import unittest
import mock
from copy import deepcopy
@@ -26,8 +22,8 @@ from copy import deepcopy
from tests.unit.network_services.vnf_generic.vnf.test_base import mock_ssh
from tests.unit import STL_MOCKS
from yardstick.benchmark.contexts.base import Context
+from yardstick.common import exceptions as y_exceptions
from yardstick.network_services.nfvi.resource import ResourceProfile
-from yardstick.network_services.traffic_profile.base import TrafficProfile
from yardstick.network_services.vnf_generic.vnf.base import VnfdHelper
@@ -571,7 +567,7 @@ class TestDpdkVnfSetupEnvHelper(unittest.TestCase):
@mock.patch('yardstick.network_services.vnf_generic.vnf.sample_vnf.open')
@mock.patch('yardstick.network_services.vnf_generic.vnf.sample_vnf.find_relative_file')
@mock.patch('yardstick.network_services.vnf_generic.vnf.sample_vnf.MultiPortConfig')
- def test_build_config(self, mock_multi_port_config_class, mock_find, _):
+ def test_build_config(self, mock_multi_port_config_class, mock_find, *args):
mock_multi_port_config = mock_multi_port_config_class()
vnfd_helper = VnfdHelper(self.VNFD_0)
ssh_helper = mock.Mock()
@@ -610,8 +606,8 @@ class TestDpdkVnfSetupEnvHelper(unittest.TestCase):
@mock.patch('yardstick.network_services.vnf_generic.vnf.sample_vnf.time')
@mock.patch('yardstick.ssh.SSH')
- def test_setup_vnf_environment(self, _, mock_time):
- def execute(cmd, *args, **kwargs):
+ def test_setup_vnf_environment(self, *args):
+ def execute(cmd):
if cmd.startswith('which '):
return exec_failure
return exec_success
@@ -643,7 +639,7 @@ class TestDpdkVnfSetupEnvHelper(unittest.TestCase):
@mock.patch('yardstick.ssh.SSH')
def test__setup_dpdk_short(self, _):
- def execute_side(cmd, *args, **kwargs):
+ def execute_side(cmd):
if 'joined_path' in cmd:
return 0, 'output', ''
return 1, 'bad output', 'error output'
@@ -691,7 +687,7 @@ class TestDpdkVnfSetupEnvHelper(unittest.TestCase):
self.assertEqual(dpdk_setup_helper.socket, 1)
@mock.patch('yardstick.network_services.vnf_generic.vnf.sample_vnf.time')
- def test__detect_and_bind_drivers(self, mock_time):
+ def test__detect_and_bind_drivers(self, *args):
vnfd_helper = VnfdHelper(deepcopy(self.VNFD_0))
ssh_helper = mock.Mock()
# ssh_helper.execute = mock.Mock(return_value = (0, 'text', ''))
@@ -1002,7 +998,7 @@ class TestClientResourceHelper(unittest.TestCase):
@mock.patch('yardstick.network_services.vnf_generic.vnf.sample_vnf.LOG')
@mock.patch('yardstick.network_services.vnf_generic.vnf.sample_vnf.STLError',
new_callable=lambda: MockError)
- def test_get_stats_not_connected(self, mock_state_error, mock_logger):
+ def test_get_stats_not_connected(self, mock_state_error, *args):
vnfd_helper = VnfdHelper(self.VNFD_0)
ssh_helper = mock.Mock()
scenario_helper = mock.Mock()
@@ -1221,7 +1217,7 @@ class TestClientResourceHelper(unittest.TestCase):
@mock.patch('yardstick.network_services.vnf_generic.vnf.sample_vnf.LOG')
@mock.patch('yardstick.network_services.vnf_generic.vnf.sample_vnf.STLError',
new_callable=lambda: MockError)
- def test__connect_with_failures(self, mock_error, mock_logger, mock_time):
+ def test__connect_with_failures(self, mock_error, *args):
vnfd_helper = VnfdHelper(self.VNFD_0)
ssh_helper = mock.Mock()
scenario_helper = mock.Mock()
@@ -1393,7 +1389,7 @@ class TestSampleVNFDeployHelper(unittest.TestCase):
@mock.patch('yardstick.network_services.vnf_generic.vnf.sample_vnf.time')
@mock.patch('subprocess.check_output')
- def test_deploy_vnfs_disabled(self, mock_check_output, mock_time):
+ def test_deploy_vnfs_disabled(self, *args):
vnfd_helper = mock.Mock()
ssh_helper = mock.Mock()
ssh_helper.join_bin_path.return_value = 'joined_path'
@@ -1408,7 +1404,7 @@ class TestSampleVNFDeployHelper(unittest.TestCase):
@mock.patch('yardstick.network_services.vnf_generic.vnf.sample_vnf.time')
@mock.patch('subprocess.check_output')
- def test_deploy_vnfs(self, mock_check_output, mock_time):
+ def test_deploy_vnfs(self, *args):
vnfd_helper = mock.Mock()
ssh_helper = mock.Mock()
ssh_helper.join_bin_path.return_value = 'joined_path'
@@ -1422,7 +1418,7 @@ class TestSampleVNFDeployHelper(unittest.TestCase):
self.assertEqual(ssh_helper.put.call_count, 1)
@mock.patch('subprocess.check_output')
- def test_deploy_vnfs_early_success(self, mock_check_output):
+ def test_deploy_vnfs_early_success(self, *args):
vnfd_helper = mock.Mock()
ssh_helper = mock.Mock()
ssh_helper.join_bin_path.return_value = 'joined_path'
@@ -1700,7 +1696,7 @@ class TestSampleVnf(unittest.TestCase):
self.assertEqual(result, expected)
@mock.patch('yardstick.network_services.vnf_generic.vnf.sample_vnf.Process')
- def test__start_vnf(self, mock_process_type):
+ def test__start_vnf(self, *args):
vnfd = self.VNFD['vnfd:vnfd-catalog']['vnfd'][0]
sample_vnf = SampleVNF('vnf1', vnfd)
sample_vnf._run = mock.Mock()
@@ -1754,7 +1750,7 @@ class TestSampleVnf(unittest.TestCase):
@mock.patch("yardstick.network_services.vnf_generic.vnf.sample_vnf.time")
@mock.patch("yardstick.ssh.SSH")
- def test_wait_for_instantiate_empty_queue(self, ssh, mock_time):
+ def test_wait_for_instantiate_empty_queue(self, ssh, *args):
mock_ssh(ssh, exec_result=(1, "", ""))
queue_size_list = [
@@ -1798,7 +1794,7 @@ class TestSampleVnf(unittest.TestCase):
self.assertIsNotNone(sample_vnf.my_ports)
@mock.patch("yardstick.network_services.vnf_generic.vnf.sample_vnf.time")
- def test_vnf_execute_with_queue_data(self, mock_time):
+ def test_vnf_execute_with_queue_data(self, *args):
queue_size_list = [
1,
1,
@@ -1843,7 +1839,7 @@ class TestSampleVnf(unittest.TestCase):
vnfd = self.VNFD['vnfd:vnfd-catalog']['vnfd'][0]
sample_vnf = SampleVNF('vnf1', vnfd)
sample_vnf.APP_NAME = 'sample1'
- sample_vnf.COLLECT_KPI = '\s(\d+)\D*(\d+)\D*(\d+)'
+ sample_vnf.COLLECT_KPI = r'\s(\d+)\D*(\d+)\D*(\d+)'
sample_vnf.COLLECT_MAP = {
'k1': 3,
'k2': 1,
@@ -1866,7 +1862,7 @@ class TestSampleVnf(unittest.TestCase):
vnfd = self.VNFD['vnfd:vnfd-catalog']['vnfd'][0]
sample_vnf = SampleVNF('vnf1', vnfd)
sample_vnf.APP_NAME = 'sample1'
- sample_vnf.COLLECT_KPI = '\s(\d+)\D*(\d+)\D*(\d+)'
+ sample_vnf.COLLECT_KPI = r'\s(\d+)\D*(\d+)\D*(\d+)'
sample_vnf.get_stats = mock.Mock(return_value='')
expected = {
@@ -1877,6 +1873,12 @@ class TestSampleVnf(unittest.TestCase):
result = sample_vnf.collect_kpi()
self.assertDictEqual(result, expected)
+ def test_scale(self):
+ vnfd = self.VNFD['vnfd:vnfd-catalog']['vnfd'][0]
+ sample_vnf = SampleVNF('vnf1', vnfd)
+ self.assertRaises(y_exceptions.FunctionNotImplemented,
+ sample_vnf.scale)
+
class TestSampleVNFTrafficGen(unittest.TestCase):
@@ -2051,3 +2053,8 @@ class TestSampleVNFTrafficGen(unittest.TestCase):
self.assertEqual(sample_vnf_tg._wait_for_process(), 234)
mock_proc.is_alive.assert_has_calls([mock.call(), mock.call()])
mock_status.assert_has_calls([mock.call(), mock.call()])
+
+ def test_scale(self):
+ sample_vnf_tg = SampleVNFTrafficGen('tg1', self.VNFD_0)
+ self.assertRaises(y_exceptions.FunctionNotImplemented,
+ sample_vnf_tg.scale)
diff --git a/tests/unit/network_services/vnf_generic/vnf/test_tg_ping.py b/tests/unit/network_services/vnf_generic/vnf/test_tg_ping.py
index ab3570740..63b2ac4ab 100644
--- a/tests/unit/network_services/vnf_generic/vnf/test_tg_ping.py
+++ b/tests/unit/network_services/vnf_generic/vnf/test_tg_ping.py
@@ -288,14 +288,6 @@ class TestPingTrafficGen(unittest.TestCase):
self.assertIsNone(ping_traffic_gen.listen_traffic({}))
@mock.patch("yardstick.ssh.SSH")
- def test_scale_negative(self, ssh):
- ssh.from_node.return_value.execute.return_value = 0, "success", ""
- ssh.from_node.return_value.run.return_value = 0, "success", ""
-
- ping_traffic_gen = PingTrafficGen('vnf1', self.VNFD_0)
- ping_traffic_gen.scale()
-
- @mock.patch("yardstick.ssh.SSH")
def test_terminate(self, ssh):
ssh.from_node.return_value.execute.return_value = 0, "success", ""
ssh.from_node.return_value.run.return_value = 0, "success", ""
diff --git a/tests/unit/network_services/vnf_generic/vnf/test_tg_prox.py b/tests/unit/network_services/vnf_generic/vnf/test_tg_prox.py
index 23d448c5e..7b4d79e02 100644
--- a/tests/unit/network_services/vnf_generic/vnf/test_tg_prox.py
+++ b/tests/unit/network_services/vnf_generic/vnf/test_tg_prox.py
@@ -13,14 +13,13 @@
# limitations under the License.
#
-from __future__ import absolute_import
-
import unittest
import mock
from tests.unit.network_services.vnf_generic.vnf.test_base import mock_ssh
from tests.unit import STL_MOCKS
+
SSH_HELPER = 'yardstick.network_services.vnf_generic.vnf.sample_vnf.VnfSshHelper'
NAME = 'vnf__1'
@@ -319,14 +318,14 @@ class TestProxTrafficGen(unittest.TestCase):
'upper_bound': 100.0}}
@mock.patch(SSH_HELPER)
- def test___init__(self, ssh, mock_time):
+ def test___init__(self, ssh, *args):
mock_ssh(ssh)
prox_traffic_gen = ProxTrafficGen(NAME, self.VNFD0)
self.assertIsNone(prox_traffic_gen._tg_process)
self.assertIsNone(prox_traffic_gen._traffic_process)
@mock.patch(SSH_HELPER)
- def test_collect_kpi(self, ssh, mock_time):
+ def test_collect_kpi(self, ssh, *args):
mock_ssh(ssh)
prox_traffic_gen = ProxTrafficGen(NAME, self.VNFD0)
@@ -335,10 +334,12 @@ class TestProxTrafficGen(unittest.TestCase):
prox_traffic_gen._vnf_wrapper.vnf_execute = mock.Mock(return_value="")
self.assertEqual({}, prox_traffic_gen.collect_kpi())
- @mock.patch('yardstick.network_services.vnf_generic.vnf.sample_vnf.CpuSysCores')
+
@mock.patch('yardstick.network_services.vnf_generic.vnf.prox_helpers.find_relative_file')
+ @mock.patch(
+ 'yardstick.network_services.vnf_generic.vnf.sample_vnf.CpuSysCores')
@mock.patch(SSH_HELPER)
- def bad_test_instantiate(self, ssh, mock_find, mock_cpu_sys_cores, mock_time):
+ def bad_test_instantiate(self, ssh, mock_cpu_sys_cores, *args):
mock_ssh(ssh)
mock_cpu_sys_cores.get_core_socket.return_value = {'0': '01234'}
@@ -381,7 +382,7 @@ class TestProxTrafficGen(unittest.TestCase):
prox_traffic_gen.instantiate(scenario_cfg, {})
@mock.patch(SSH_HELPER)
- def test__traffic_runner(self, ssh, mock_time):
+ def test__traffic_runner(self, ssh, *args):
mock_ssh(ssh)
mock_traffic_profile = mock.Mock(autospec=TrafficProfile)
@@ -399,17 +400,9 @@ class TestProxTrafficGen(unittest.TestCase):
sut._connect_client.get_stats = mock.Mock(return_value="0")
sut._traffic_runner(mock_traffic_profile)
- @mock.patch(SSH_HELPER)
- def test_scale(self, ssh, mock_time):
- mock_ssh(ssh, exec_result=(1, "", ""))
- vnfd = self.VNFD['vnfd:vnfd-catalog']['vnfd'][0]
- prox_traffic_gen = ProxTrafficGen(NAME, vnfd)
- with self.assertRaises(NotImplementedError):
- prox_traffic_gen.scale('')
-
@mock.patch('yardstick.network_services.vnf_generic.vnf.prox_helpers.socket')
@mock.patch(SSH_HELPER)
- def test_listen_traffic(self, ssh, mock_socket, mock_time):
+ def test_listen_traffic(self, ssh, *args):
mock_ssh(ssh)
vnfd = self.VNFD['vnfd:vnfd-catalog']['vnfd'][0]
prox_traffic_gen = ProxTrafficGen(NAME, vnfd)
@@ -417,7 +410,7 @@ class TestProxTrafficGen(unittest.TestCase):
@mock.patch('yardstick.network_services.vnf_generic.vnf.prox_helpers.socket')
@mock.patch(SSH_HELPER)
- def test_terminate(self, ssh, mock_socket, mock_time):
+ def test_terminate(self, ssh, *args):
mock_ssh(ssh)
vnfd = self.VNFD['vnfd:vnfd-catalog']['vnfd'][0]
prox_traffic_gen = ProxTrafficGen(NAME, vnfd)
diff --git a/tests/unit/network_services/vnf_generic/vnf/test_tg_rfc2544_ixia.py b/tests/unit/network_services/vnf_generic/vnf/test_tg_rfc2544_ixia.py
index f62a0fb3b..e9f718cb7 100644
--- a/tests/unit/network_services/vnf_generic/vnf/test_tg_rfc2544_ixia.py
+++ b/tests/unit/network_services/vnf_generic/vnf/test_tg_rfc2544_ixia.py
@@ -15,8 +15,6 @@
# limitations under the License.
#
-from __future__ import absolute_import
-
import os
import unittest
import mock
@@ -40,14 +38,14 @@ NAME = "tg__1"
@mock.patch("yardstick.network_services.vnf_generic.vnf.tg_rfc2544_ixia.IxNextgen")
class TestIxiaResourceHelper(unittest.TestCase):
- def test___init___with_custom_rfc_helper(self, mock_ix_nextgen):
+ def test___init___with_custom_rfc_helper(self, *args):
class MyRfcHelper(IxiaRfc2544Helper):
pass
ixia_resource_helper = IxiaResourceHelper(mock.Mock(), MyRfcHelper)
self.assertIsInstance(ixia_resource_helper.rfc_helper, MyRfcHelper)
- def test_stop_collect_with_client(self, mock_ix_nextgen):
+ def test_stop_collect_with_client(self, *args):
mock_client = mock.Mock()
ixia_resource_helper = IxiaResourceHelper(mock.Mock())
@@ -154,16 +152,17 @@ class TestIXIATrafficGen(unittest.TestCase):
'file': '/etc/yardstick/nodes/pod.yaml'},
'schema': 'yardstick:task:0.1'}
- def test___init__(self, mock_ixnextgen):
+ def test___init__(self, *args):
with mock.patch("yardstick.ssh.SSH") as ssh:
ssh_mock = mock.Mock(autospec=ssh.SSH)
ssh_mock.execute = \
mock.Mock(return_value=(0, "", ""))
ssh.from_node.return_value = ssh_mock
vnfd = self.VNFD['vnfd:vnfd-catalog']['vnfd'][0]
- ixnet_traffic_gen = IxiaTrafficGen(NAME, vnfd)
+ # NOTE(ralonsoh): check the object returned.
+ IxiaTrafficGen(NAME, vnfd)
- def test_listen_traffic(self, mock_ixnextgen):
+ def test_listen_traffic(self, *args):
with mock.patch("yardstick.ssh.SSH") as ssh:
ssh_mock = mock.Mock(autospec=ssh.SSH)
ssh_mock.execute = \
@@ -173,7 +172,7 @@ class TestIXIATrafficGen(unittest.TestCase):
ixnet_traffic_gen = IxiaTrafficGen(NAME, vnfd)
self.assertEqual(None, ixnet_traffic_gen.listen_traffic({}))
- def test_instantiate(self, mock_ixnextgen):
+ def test_instantiate(self, *args):
with mock.patch("yardstick.ssh.SSH") as ssh:
ssh_mock = mock.Mock(autospec=ssh.SSH)
ssh_mock.execute = \
@@ -203,7 +202,7 @@ class TestIXIATrafficGen(unittest.TestCase):
IOError,
ixnet_traffic_gen.instantiate(scenario_cfg, {}))
- def test_collect_kpi(self, mock_ixnextgen):
+ def test_collect_kpi(self, *args):
with mock.patch("yardstick.ssh.SSH") as ssh:
ssh_mock = mock.Mock(autospec=ssh.SSH)
ssh_mock.execute = \
@@ -215,7 +214,7 @@ class TestIXIATrafficGen(unittest.TestCase):
restult = ixnet_traffic_gen.collect_kpi()
self.assertEqual({}, restult)
- def test_terminate(self, mock_ixnextgen):
+ def test_terminate(self, *args):
with mock.patch("yardstick.ssh.SSH") as ssh:
vnfd = self.VNFD['vnfd:vnfd-catalog']['vnfd'][0]
ssh_mock = mock.Mock(autospec=ssh.SSH)
@@ -236,19 +235,14 @@ class TestIXIATrafficGen(unittest.TestCase):
file_path = os.path.join(curr_path, filename)
return file_path
- def test_scale(self, mock_ix_nextgen):
- vnfd = self.VNFD['vnfd:vnfd-catalog']['vnfd'][0]
- sut = IxiaTrafficGen('vnf1', vnfd)
- sut.scale()
-
- def test__check_status(self, mock_ix_nextgen):
+ def test__check_status(self, *args):
vnfd = self.VNFD['vnfd:vnfd-catalog']['vnfd'][0]
sut = IxiaTrafficGen('vnf1', vnfd)
sut._check_status()
@mock.patch("yardstick.network_services.vnf_generic.vnf.tg_rfc2544_ixia.time")
@mock.patch("yardstick.ssh.SSH")
- def test_traffic_runner(self, mock_ixnextgen, mock_ssh, mock_time):
+ def test_traffic_runner(self, mock_ssh, *args):
mock_traffic_profile = mock.Mock(autospec=TrafficProfile)
mock_traffic_profile.get_traffic_definition.return_value = "64"
mock_traffic_profile.params = self.TRAFFIC_PROFILE
diff --git a/tests/unit/network_services/vnf_generic/vnf/test_tg_rfc2544_trex.py b/tests/unit/network_services/vnf_generic/vnf/test_tg_rfc2544_trex.py
index 637706fb4..7342cfcdc 100644
--- a/tests/unit/network_services/vnf_generic/vnf/test_tg_rfc2544_trex.py
+++ b/tests/unit/network_services/vnf_generic/vnf/test_tg_rfc2544_trex.py
@@ -331,15 +331,6 @@ class TestTrexTrafficGenRFC(unittest.TestCase):
trex_traffic_gen.resource_helper.ssh_helper = mock.MagicMock()
self.assertIsNone(trex_traffic_gen.resource_helper.generate_cfg())
- def test_scale(self):
- with mock.patch(SSH_HELPER) as ssh:
- ssh_mock = mock.Mock(autospec=ssh.SSH)
- ssh_mock.execute = mock.Mock(return_value=(0, "", ""))
- ssh_mock.run = mock.Mock(return_value=(0, "", ""))
- ssh.from_node.return_value = ssh_mock
- trex_traffic_gen = TrexTrafficGenRFC('vnf1', self.VNFD_0)
- trex_traffic_gen.scale('')
-
def test_terminate(self):
with mock.patch(SSH_HELPER) as ssh:
ssh_mock = mock.Mock(autospec=ssh.SSH)
diff --git a/tests/unit/network_services/vnf_generic/vnf/test_tg_trex.py b/tests/unit/network_services/vnf_generic/vnf/test_tg_trex.py
index a2a5058fc..618071507 100644
--- a/tests/unit/network_services/vnf_generic/vnf/test_tg_trex.py
+++ b/tests/unit/network_services/vnf_generic/vnf/test_tg_trex.py
@@ -15,18 +15,16 @@
# limitations under the License.
#
-from __future__ import absolute_import
-
-import unittest
-
import copy
import mock
-SSH_HELPER = 'yardstick.network_services.vnf_generic.vnf.sample_vnf.VnfSshHelper'
+import unittest
from tests.unit.network_services.vnf_generic.vnf.test_base import mock_ssh
from tests.unit import STL_MOCKS
+
+SSH_HELPER = 'yardstick.network_services.vnf_generic.vnf.sample_vnf.VnfSshHelper'
NAME = 'vnf_1'
STLClient = mock.MagicMock()
@@ -469,13 +467,6 @@ class TestTrexTrafficGen(unittest.TestCase):
self.assertIsNotNone(result)
@mock.patch(SSH_HELPER)
- def test_scale(self, ssh):
- mock_ssh(ssh, exec_result=(1, "", ""))
- vnfd = self.VNFD['vnfd:vnfd-catalog']['vnfd'][0]
- trex_traffic_gen = TrexTrafficGen(NAME, vnfd)
- trex_traffic_gen.scale('')
-
- @mock.patch(SSH_HELPER)
def test_terminate(self, ssh):
mock_ssh(ssh)
vnfd = self.VNFD['vnfd:vnfd-catalog']['vnfd'][0]
diff --git a/tests/unit/network_services/vnf_generic/vnf/test_udp_replay.py b/tests/unit/network_services/vnf_generic/vnf/test_udp_replay.py
index d4d3439f3..635ce2735 100644
--- a/tests/unit/network_services/vnf_generic/vnf/test_udp_replay.py
+++ b/tests/unit/network_services/vnf_generic/vnf/test_udp_replay.py
@@ -15,26 +15,24 @@
# limitations under the License.
#
-from __future__ import absolute_import
-
import unittest
import mock
import os
from tests.unit import STL_MOCKS
-SSH_HELPER = 'yardstick.network_services.vnf_generic.vnf.sample_vnf.VnfSshHelper'
+from tests.unit.network_services.vnf_generic.vnf.test_base import mock_ssh
+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.udp_replay import UdpReplayApproxVnf
- from yardstick.network_services.nfvi.resource import ResourceProfile
from yardstick.network_services.vnf_generic.vnf.sample_vnf import ScenarioHelper
-from tests.unit.network_services.vnf_generic.vnf.test_base import mock_ssh
TEST_FILE_YAML = 'nsb_test_case.yaml'
@@ -329,13 +327,13 @@ class TestUdpReplayApproxVnf(unittest.TestCase):
}
}
- def test___init__(self, _):
+ def test___init__(self, *args):
udp_replay_approx_vnf = UdpReplayApproxVnf(NAME, self.VNFD_0)
self.assertIsNone(udp_replay_approx_vnf._vnf_process)
@mock.patch("yardstick.network_services.vnf_generic.vnf.sample_vnf.time")
@mock.patch(SSH_HELPER)
- def test_collect_kpi(self, ssh, mock_time, _):
+ def test_collect_kpi(self, ssh, *args):
mock_ssh(ssh)
vnfd = self.VNFD_0
@@ -354,7 +352,7 @@ class TestUdpReplayApproxVnf(unittest.TestCase):
self.assertEqual(result, udp_replay_approx_vnf.collect_kpi())
@mock.patch(SSH_HELPER)
- def test_get_stats(self, ssh, _):
+ def test_get_stats(self, ssh, *args):
mock_ssh(ssh)
udp_replay_approx_vnf = UdpReplayApproxVnf(NAME, self.VNFD_0)
@@ -376,7 +374,7 @@ class TestUdpReplayApproxVnf(unittest.TestCase):
@mock.patch("yardstick.network_services.vnf_generic.vnf.sample_vnf.Context")
@mock.patch(SSH_HELPER)
- def test__build_config(self, ssh, mock_context, *_):
+ def test__build_config(self, ssh, mock_context, *args):
mock_ssh(ssh)
udp_replay_approx_vnf = UdpReplayApproxVnf(NAME, self.VNFD_0)
@@ -397,7 +395,7 @@ class TestUdpReplayApproxVnf(unittest.TestCase):
@mock.patch('yardstick.network_services.vnf_generic.vnf.udp_replay.open')
@mock.patch("yardstick.network_services.vnf_generic.vnf.sample_vnf.Context")
@mock.patch(SSH_HELPER)
- def test__build_pipeline_kwargs(self, ssh, mock_context, *_):
+ def test__build_pipeline_kwargs(self, ssh, mock_context, *args):
mock_ssh(ssh)
udp_replay_approx_vnf = UdpReplayApproxVnf(NAME, self.VNFD_0)
udp_replay_approx_vnf.nfvi_context = mock_context
@@ -420,7 +418,7 @@ class TestUdpReplayApproxVnf(unittest.TestCase):
})
@mock.patch(SSH_HELPER)
- def test_run_udp_replay(self, ssh, _):
+ def test_run_udp_replay(self, ssh, *args):
mock_ssh(ssh)
udp_replay_approx_vnf = UdpReplayApproxVnf(NAME, self.VNFD_0)
@@ -434,11 +432,9 @@ class TestUdpReplayApproxVnf(unittest.TestCase):
@mock.patch("yardstick.network_services.vnf_generic.vnf.sample_vnf.Context")
@mock.patch(SSH_HELPER)
- def test_instantiate(self, ssh, *_):
+ def test_instantiate(self, ssh, *args):
mock_ssh(ssh)
- resource = mock.Mock(autospec=ResourceProfile)
-
udp_replay_approx_vnf = UdpReplayApproxVnf(NAME, self.VNFD_0)
udp_replay_approx_vnf.q_out.put("Replay>")
udp_replay_approx_vnf.WAIT_TIME = 0
@@ -456,7 +452,7 @@ class TestUdpReplayApproxVnf(unittest.TestCase):
@mock.patch("yardstick.network_services.vnf_generic.vnf.sample_vnf.Context")
@mock.patch('yardstick.ssh.SSH')
@mock.patch(SSH_HELPER)
- def test_instantiate_panic(self, ssh, resource_ssh, *_):
+ def test_instantiate_panic(self, *args):
udp_replay_approx_vnf = UdpReplayApproxVnf(NAME, self.VNFD_0)
udp_replay_approx_vnf.WAIT_TIME = 0
udp_replay_approx_vnf.q_out.put("some text PANIC some text")
@@ -467,15 +463,9 @@ class TestUdpReplayApproxVnf(unittest.TestCase):
with self.assertRaises(RuntimeError):
udp_replay_approx_vnf.wait_for_instantiate()
- def test_scale(self, _):
- udp_replay_approx_vnf = UdpReplayApproxVnf(NAME, self.VNFD_0)
- flavor = ""
-
- self.assertRaises(NotImplementedError, udp_replay_approx_vnf.scale, flavor)
-
@mock.patch("yardstick.network_services.vnf_generic.vnf.sample_vnf.time")
@mock.patch(SSH_HELPER)
- def test_terminate(self, ssh, mock_time, _):
+ def test_terminate(self, ssh, *args):
mock_ssh(ssh)
udp_replay_approx_vnf = UdpReplayApproxVnf(NAME, self.VNFD_0)
@@ -484,6 +474,3 @@ class TestUdpReplayApproxVnf(unittest.TestCase):
udp_replay_approx_vnf.used_drivers = {"01:01.0": "i40e", "01:01.1": "i40e"}
udp_replay_approx_vnf.dpdk_nic_bind = "dpdk_nic_bind.py"
self.assertEqual(None, udp_replay_approx_vnf.terminate())
-
-if __name__ == '__main__':
- unittest.main()
diff --git a/tests/unit/network_services/vnf_generic/vnf/test_vfw_vnf.py b/tests/unit/network_services/vnf_generic/vnf/test_vfw_vnf.py
index 958099a03..d128db0b4 100644
--- a/tests/unit/network_services/vnf_generic/vnf/test_vfw_vnf.py
+++ b/tests/unit/network_services/vnf_generic/vnf/test_vfw_vnf.py
@@ -15,8 +15,6 @@
# limitations under the License.
#
-from __future__ import absolute_import
-
import unittest
import mock
import os
@@ -32,10 +30,10 @@ if stl_patch:
from yardstick.network_services.vnf_generic.vnf.vfw_vnf import FWApproxVnf
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'
-
name = 'vnf__1'
@@ -239,7 +237,7 @@ class TestFWApproxVnf(unittest.TestCase):
'password': 'r00t',
'VNF model': 'vfw_vnf.yaml'}}}
- def test___init__(self, mock_process):
+ def test___init__(self, *args):
vnfd = self.VNFD['vnfd:vnfd-catalog']['vnfd'][0]
vfw_approx_vnf = FWApproxVnf(name, vnfd)
self.assertIsNone(vfw_approx_vnf._vnf_process)
@@ -260,7 +258,7 @@ pipeline>
@mock.patch("yardstick.network_services.vnf_generic.vnf.sample_vnf.time")
@mock.patch(SSH_HELPER)
- def test_collect_kpi(self, ssh, mock_time, mock_process):
+ def test_collect_kpi(self, ssh, *args):
mock_ssh(ssh)
vnfd = self.VNFD['vnfd:vnfd-catalog']['vnfd'][0]
@@ -282,7 +280,7 @@ pipeline>
@mock.patch("yardstick.network_services.vnf_generic.vnf.sample_vnf.time")
@mock.patch(SSH_HELPER)
- def test_vnf_execute_command(self, ssh, mock_time, mock_process):
+ def test_vnf_execute_command(self, ssh, *args):
mock_ssh(ssh)
vnfd = self.VNFD['vnfd:vnfd-catalog']['vnfd'][0]
@@ -294,7 +292,7 @@ pipeline>
self.assertEqual(vfw_approx_vnf.vnf_execute(cmd), "")
@mock.patch(SSH_HELPER)
- def test_get_stats(self, ssh, mock_process):
+ def test_get_stats(self, ssh, *args):
mock_ssh(ssh)
vnfd = self.VNFD['vnfd:vnfd-catalog']['vnfd'][0]
@@ -314,7 +312,7 @@ pipeline>
@mock.patch("yardstick.network_services.vnf_generic.vnf.vfw_vnf.eval")
@mock.patch("yardstick.network_services.vnf_generic.vnf.vfw_vnf.open")
@mock.patch(SSH_HELPER)
- def test_run_vfw(self, ssh, mock_open, mock_eval, mock_hex, mock_process):
+ def test_run_vfw(self, ssh, *args):
mock_ssh(ssh)
vnfd = self.VNFD['vnfd:vnfd-catalog']['vnfd'][0]
@@ -337,7 +335,7 @@ pipeline>
@mock.patch("yardstick.network_services.vnf_generic.vnf.vfw_vnf.YangModel")
@mock.patch("yardstick.network_services.vnf_generic.vnf.sample_vnf.Context")
@mock.patch(SSH_HELPER)
- def test_instantiate(self, ssh, mock_context, mock_yang, mock_find, mock_process):
+ def test_instantiate(self, ssh, *args):
mock_ssh(ssh)
vnfd = self.VNFD['vnfd:vnfd-catalog']['vnfd'][0]
@@ -351,16 +349,9 @@ pipeline>
self.scenario_cfg.update({"nodes": {"vnf__1": ""}})
self.assertIsNone(vfw_approx_vnf.instantiate(self.scenario_cfg, self.context_cfg))
- def test_scale(self, mock_process):
- vnfd = self.VNFD['vnfd:vnfd-catalog']['vnfd'][0]
- vfw_approx_vnf = FWApproxVnf(name, vnfd)
- flavor = ""
- with self.assertRaises(NotImplementedError):
- vfw_approx_vnf.scale(flavor)
-
@mock.patch("yardstick.network_services.vnf_generic.vnf.sample_vnf.time")
@mock.patch(SSH_HELPER)
- def test_terminate(self, ssh, mock_time, mock_process):
+ def test_terminate(self, ssh, *args):
mock_ssh(ssh)
vnfd = self.VNFD['vnfd:vnfd-catalog']['vnfd'][0]
@@ -372,6 +363,3 @@ pipeline>
vfw_approx_vnf.dpdk_nic_bind = "dpdk_nic_bind.py"
vfw_approx_vnf._resource_collect_stop = mock.Mock()
self.assertIsNone(vfw_approx_vnf.terminate())
-
-if __name__ == '__main__':
- unittest.main()
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
index 4103d7825..55cd4d2e8 100644
--- a/tests/unit/network_services/vnf_generic/vnf/test_vpe_vnf.py
+++ b/tests/unit/network_services/vnf_generic/vnf/test_vpe_vnf.py
@@ -15,15 +15,16 @@
# limitations under the License.
#
-from __future__ import absolute_import
-import six.moves.configparser as configparser
-
-import os
-import unittest
import mock
from multiprocessing import Process, Queue
+import os
+import six.moves.configparser as configparser
+import time
+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
@@ -40,9 +41,6 @@ if stl_patch:
from yardstick.network_services.vnf_generic.vnf.vpe_vnf import \
VpeApproxVnf, VpeApproxSetupEnvHelper
-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
-
TEST_FILE_YAML = 'nsb_test_case.yaml'
@@ -227,28 +225,6 @@ class TestConfigCreate(unittest.TestCase):
self.assertNotEqual(result, '')
def test_create_vpe_config(self):
- uplink_ports = [
- {
- 'index': 0,
- 'dpdk_port_num': 1,
- 'peer_intf': {
- 'dpdk_port_num': 2,
- 'index': 3,
- },
- },
- ]
-
- downlink_ports = [
- {
- 'index': 2,
- 'dpdk_port_num': 3,
- 'peer_intf': {
- 'dpdk_port_num': 0,
- 'index': 1,
- },
- },
- ]
-
vnfd_helper = VnfdHelper(self.VNFD_0)
config_create = ConfigCreate(vnfd_helper, 23)
config_create.downlink_ports = ['xe1']
@@ -260,7 +236,6 @@ class TestConfigCreate(unittest.TestCase):
os.system("git checkout -- %s" % vnf_cfg)
-@mock.patch('yardstick.network_services.vnf_generic.vnf.sample_vnf.time')
class TestVpeApproxVnf(unittest.TestCase):
VNFD_0 = {
@@ -556,12 +531,15 @@ class TestVpeApproxVnf(unittest.TestCase):
},
}
- def test___init__(self, _):
+ 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, _):
+ def test_collect_kpi_sa_not_running(self, ssh):
mock_ssh(ssh)
resource = mock.Mock(autospec=ResourceProfile)
@@ -585,7 +563,7 @@ class TestVpeApproxVnf(unittest.TestCase):
self.assertEqual(vpe_approx_vnf.collect_kpi(), expected)
@mock.patch(SSH_HELPER)
- def test_collect_kpi_sa_running(self, ssh, _):
+ def test_collect_kpi_sa_running(self, ssh):
mock_ssh(ssh)
resource = mock.Mock(autospec=ResourceProfile)
@@ -608,7 +586,7 @@ class TestVpeApproxVnf(unittest.TestCase):
self.assertEqual(vpe_approx_vnf.collect_kpi(), expected)
@mock.patch(SSH_HELPER)
- def test_vnf_execute(self, ssh, _):
+ def test_vnf_execute(self, ssh):
mock_ssh(ssh)
vpe_approx_vnf = VpeApproxVnf(NAME, self.VNFD_0)
vpe_approx_vnf.q_in = mock.MagicMock()
@@ -617,7 +595,7 @@ class TestVpeApproxVnf(unittest.TestCase):
self.assertEqual(vpe_approx_vnf.vnf_execute("quit", 0), '')
@mock.patch(SSH_HELPER)
- def test_run_vpe(self, ssh, _):
+ def test_run_vpe(self, ssh):
mock_ssh(ssh)
vpe_approx_vnf = VpeApproxVnf(NAME, self.VNFD_0)
@@ -651,7 +629,7 @@ class TestVpeApproxVnf(unittest.TestCase):
@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, mock_mul, mock_context, mock_config, mock_open, ssh, _):
+ def test_build_config(self, ssh, *args):
mock_ssh(ssh)
vpe_approx_vnf = VpeApproxSetupEnvHelper(mock.MagicMock(),
mock.MagicMock, mock.MagicMock)
@@ -684,7 +662,7 @@ class TestVpeApproxVnf(unittest.TestCase):
self.assertIsNotNone(vpe_approx_vnf.build_config())
@mock.patch(SSH_HELPER)
- def test_wait_for_instantiate(self, ssh, _):
+ def test_wait_for_instantiate(self, ssh):
mock_ssh(ssh)
mock_process = mock.Mock(autospec=Process)
@@ -707,7 +685,7 @@ class TestVpeApproxVnf(unittest.TestCase):
self.assertEqual(vpe_approx_vnf.wait_for_instantiate(), 432)
@mock.patch(SSH_HELPER)
- def test_wait_for_instantiate_fragmented(self, ssh, _):
+ def test_wait_for_instantiate_fragmented(self, ssh):
mock_ssh(ssh)
mock_process = mock.Mock(autospec=Process)
@@ -730,7 +708,7 @@ class TestVpeApproxVnf(unittest.TestCase):
self.assertEqual(vpe_approx_vnf.wait_for_instantiate(), 432)
@mock.patch(SSH_HELPER)
- def test_wait_for_instantiate_crash(self, ssh, _):
+ def test_wait_for_instantiate_crash(self, ssh):
mock_ssh(ssh, exec_result=(1, "", ""))
mock_process = mock.Mock(autospec=Process)
@@ -749,7 +727,7 @@ class TestVpeApproxVnf(unittest.TestCase):
self.assertIn('VNF process died', str(raised.exception))
@mock.patch(SSH_HELPER)
- def test_wait_for_instantiate_panic(self, ssh, _):
+ def test_wait_for_instantiate_panic(self, ssh):
mock_ssh(ssh, exec_result=(1, "", ""))
mock_process = mock.Mock(autospec=Process)
@@ -769,7 +747,7 @@ class TestVpeApproxVnf(unittest.TestCase):
self.assertIn('Error starting', str(raised.exception))
@mock.patch(SSH_HELPER)
- def test_wait_for_instantiate_panic_fragmented(self, ssh, _):
+ def test_wait_for_instantiate_panic_fragmented(self, ssh):
mock_ssh(ssh, exec_result=(1, "", ""))
mock_process = mock.Mock(autospec=Process)
@@ -793,13 +771,8 @@ class TestVpeApproxVnf(unittest.TestCase):
self.assertIn('Error starting', str(raised.exception))
- def test_scale(self, _):
- vpe_approx_vnf = VpeApproxVnf(NAME, self.VNFD_0)
- with self.assertRaises(NotImplementedError):
- vpe_approx_vnf.scale('')
-
@mock.patch(SSH_HELPER)
- def test_terminate(self, ssh, _):
+ def test_terminate(self, ssh):
mock_ssh(ssh)
vpe_approx_vnf = VpeApproxVnf(NAME, self.VNFD_0)
@@ -808,7 +781,3 @@ class TestVpeApproxVnf(unittest.TestCase):
vpe_approx_vnf.resource_helper = mock.MagicMock()
self.assertIsNone(vpe_approx_vnf.terminate())
-
-
-if __name__ == '__main__':
- unittest.main()
diff --git a/yardstick/common/exceptions.py b/yardstick/common/exceptions.py
index 9c0ec2c19..4780822a4 100644
--- a/yardstick/common/exceptions.py
+++ b/yardstick/common/exceptions.py
@@ -12,8 +12,48 @@
# See the License for the specific language governing permissions and
# limitations under the License.
+from oslo_utils import excutils
+
class ProcessExecutionError(RuntimeError):
def __init__(self, message, returncode):
super(ProcessExecutionError, self).__init__(message)
self.returncode = returncode
+
+
+class YardstickException(Exception):
+ """Base Yardstick Exception.
+
+ To correctly use this class, inherit from it and define
+ a 'message' property. That message will get printf'd
+ with the keyword arguments provided to the constructor.
+
+ Based on NeutronException class.
+ """
+ message = "An unknown exception occurred."
+
+ def __init__(self, **kwargs):
+ try:
+ super(YardstickException, self).__init__(self.message % kwargs)
+ self.msg = self.message % kwargs
+ except Exception: # pylint: disable=broad-except
+ with excutils.save_and_reraise_exception() as ctxt:
+ if not self.use_fatal_exceptions():
+ ctxt.reraise = False
+ # at least get the core message out if something happened
+ super(YardstickException, self).__init__(self.message)
+
+ def __str__(self):
+ return self.msg
+
+ def use_fatal_exceptions(self):
+ """Is the instance using fatal exceptions.
+
+ :returns: Always returns False.
+ """
+ return False
+
+
+class FunctionNotImplemented(YardstickException):
+ message = ('The function "%(function_name)s" is not implemented in '
+ '"%(class_name)" class.')
diff --git a/yardstick/network_services/vnf_generic/vnf/acl_vnf.py b/yardstick/network_services/vnf_generic/vnf/acl_vnf.py
index 3ba38dec2..1390dd02e 100644
--- a/yardstick/network_services/vnf_generic/vnf/acl_vnf.py
+++ b/yardstick/network_services/vnf_generic/vnf/acl_vnf.py
@@ -61,9 +61,6 @@ class AclApproxVnf(SampleVNF):
super(AclApproxVnf, self).__init__(name, vnfd, setup_env_helper_type, resource_helper_type)
self.acl_rules = None
- def scale(self, flavor=""):
- raise NotImplementedError
-
def _start_vnf(self):
yang_model_path = find_relative_file(self.scenario_helper.options['rules'],
self.scenario_helper.task_path)
diff --git a/yardstick/network_services/vnf_generic/vnf/base.py b/yardstick/network_services/vnf_generic/vnf/base.py
index 8ed754dce..a776b0989 100644
--- a/yardstick/network_services/vnf_generic/vnf/base.py
+++ b/yardstick/network_services/vnf_generic/vnf/base.py
@@ -138,76 +138,62 @@ class VnfdHelper(dict):
yield port_name, port_num
-class VNFObject(object):
+@six.add_metaclass(abc.ABCMeta)
+class GenericVNF(object):
+ """Class providing file-like API for generic VNF implementation
+
+ Currently the only class implementing this interface is
+ yardstick/network_services/vnf_generic/vnf/sample_vnf:SampleVNF.
+ """
# centralize network naming convention
UPLINK = PortPairs.UPLINK
DOWNLINK = PortPairs.DOWNLINK
def __init__(self, name, vnfd):
- super(VNFObject, self).__init__()
self.name = name
- self.vnfd_helper = VnfdHelper(vnfd) # fixme: parse this into a structure
-
-
-class GenericVNF(VNFObject):
-
- """ Class providing file-like API for generic VNF implementation """
- def __init__(self, name, vnfd):
- super(GenericVNF, self).__init__(name, vnfd)
+ self.vnfd_helper = VnfdHelper(vnfd)
# List of statistics we can obtain from this VNF
# - ETSI MANO 6.3.1.1 monitoring_parameter
- self.kpi = self._get_kpi_definition()
+ self.kpi = self.vnfd_helper.kpi
# Standard dictionary containing params like thread no, buffer size etc
self.config = {}
self.runs_traffic = False
- def _get_kpi_definition(self):
- """ Get list of KPIs defined in VNFD
-
- :param vnfd:
- :return: list of KPIs, e.g. ['throughput', 'latency']
- """
- return self.vnfd_helper.kpi
-
+ @abc.abstractmethod
def instantiate(self, scenario_cfg, context_cfg):
- """ Prepare VNF for operation and start the VNF process/VM
+ """Prepare VNF for operation and start the VNF process/VM
- :param scenario_cfg:
- :param context_cfg:
+ :param scenario_cfg: Scenario config
+ :param context_cfg: Context config
:return: True/False
"""
- raise NotImplementedError()
+ @abc.abstractmethod
def wait_for_instantiate(self):
- """ Wait for VNF to start
+ """Wait for VNF to start
:return: True/False
"""
- raise NotImplementedError()
+ @abc.abstractmethod
def terminate(self):
- """ Kill all VNF processes
-
- :return:
- """
- raise NotImplementedError()
+ """Kill all VNF processes"""
+ @abc.abstractmethod
def scale(self, flavor=""):
- """
+ """rest
- :param flavor:
+ :param flavor: Name of the flavor.
:return:
"""
- raise NotImplementedError()
+ @abc.abstractmethod
def collect_kpi(self):
- """This method should return a dictionary containing the
- selected KPI at a given point of time.
+ """Return a dict containing the selected KPI at a given point of time
:return: {"kpi": value, "kpi2": value}
"""
- raise NotImplementedError()
@six.add_metaclass(abc.ABCMeta)
diff --git a/yardstick/network_services/vnf_generic/vnf/sample_vnf.py b/yardstick/network_services/vnf_generic/vnf/sample_vnf.py
index 20e5895ee..5eeb6c889 100644
--- a/yardstick/network_services/vnf_generic/vnf/sample_vnf.py
+++ b/yardstick/network_services/vnf_generic/vnf/sample_vnf.py
@@ -28,6 +28,7 @@ from six.moves import cStringIO
from yardstick.benchmark.contexts.base import Context
from yardstick.benchmark.scenarios.networking.vnf_generic import find_relative_file
+from yardstick.common import exceptions as y_exceptions
from yardstick.common.process import check_if_process_failed
from yardstick.network_services.helpers.samplevnf_helper import PortPairs
from yardstick.network_services.helpers.samplevnf_helper import MultiPortConfig
@@ -308,7 +309,7 @@ class DpdkVnfSetupEnvHelper(SetupEnvHelper):
if vpci == v['virtual-interface']['vpci'])
# force to int
intf['virtual-interface']['dpdk_port_num'] = int(dpdk_port_num)
- except:
+ except: # pylint: disable=bare-except
pass
time.sleep(2)
@@ -472,6 +473,11 @@ class ClientResourceHelper(ResourceHelper):
self.client.clear_stats(ports=ports)
def start(self, ports=None, *args, **kwargs):
+ # pylint: disable=keyword-arg-before-vararg
+ # NOTE(ralonsoh): defining keyworded arguments before variable
+ # positional arguments is a bug. This function definition doesn't work
+ # in Python 2, although it works in Python 3. Reference:
+ # https://www.python.org/dev/peps/pep-3102/
if ports is None:
ports = self.all_ports
self.client.start(ports=ports, *args, **kwargs)
@@ -480,8 +486,8 @@ class ClientResourceHelper(ResourceHelper):
if not self._queue.empty():
kpi = self._queue.get()
self._result.update(kpi)
- LOG.debug("Got KPIs from _queue for {0} {1}".format(
- self.scenario_helper.name, self.RESOURCE_WORD))
+ LOG.debug('Got KPIs from _queue for %s %s',
+ self.scenario_helper.name, self.RESOURCE_WORD)
return self._result
def _connect(self, client=None):
@@ -670,7 +676,7 @@ class SampleVNF(GenericVNF):
self.pipeline_kwargs = {}
self.uplink_ports = None
self.downlink_ports = None
- # TODO(esm): make QueueFileWrapper invert-able so that we
+ # NOTE(esm): make QueueFileWrapper invert-able so that we
# never have to manage the queues
self.q_in = Queue()
self.q_out = Queue()
@@ -751,7 +757,7 @@ class SampleVNF(GenericVNF):
if not self._vnf_process.is_alive():
raise RuntimeError("%s VNF process died." % self.APP_NAME)
- # TODO(esm): move to QueueFileWrapper
+ # NOTE(esm): move to QueueFileWrapper
while self.q_out.qsize() > 0:
buf.append(self.q_out.get())
message = ''.join(buf)
@@ -821,12 +827,12 @@ class SampleVNF(GenericVNF):
self._vnf_process.terminate()
# no terminate children here because we share processes with tg
- def get_stats(self, *args, **kwargs):
- """
- Method for checking the statistics
+ def get_stats(self, *args, **kwargs): # pylint: disable=unused-argument
+ """Method for checking the statistics
+
+ This method could be overridden in children classes.
- :return:
- VNF statistics
+ :return: VNF statistics
"""
cmd = 'p {0} stats'.format(self.APP_WORD)
out = self.vnf_execute(cmd)
@@ -849,6 +855,11 @@ class SampleVNF(GenericVNF):
LOG.debug("%s collect KPIs %s", self.APP_NAME, result)
return result
+ def scale(self, flavor=""):
+ """The SampleVNF base class doesn't provide the 'scale' feature"""
+ raise y_exceptions.FunctionNotImplemented(
+ function_name='scale', class_name='SampleVNFTrafficGen')
+
class SampleVNFTrafficGen(GenericTrafficGen):
""" Class providing file-like API for generic traffic generator """
@@ -964,3 +975,8 @@ class SampleVNFTrafficGen(GenericTrafficGen):
self._tg_process.join(PROCESS_JOIN_TIMEOUT)
self._tg_process.terminate()
# no terminate children here because we share processes with vnf
+
+ def scale(self, flavor=""):
+ """A traffic generator VFN doesn't provide the 'scale' feature"""
+ raise y_exceptions.FunctionNotImplemented(
+ function_name='scale', class_name='SampleVNFTrafficGen')
diff --git a/yardstick/network_services/vnf_generic/vnf/tg_ping.py b/yardstick/network_services/vnf_generic/vnf/tg_ping.py
index 5238a5f02..a989543f5 100644
--- a/yardstick/network_services/vnf_generic/vnf/tg_ping.py
+++ b/yardstick/network_services/vnf_generic/vnf/tg_ping.py
@@ -113,10 +113,6 @@ class PingTrafficGen(SampleVNFTrafficGen):
resource_helper_type)
self._result = {}
- def scale(self, flavor=""):
- """ scale vnf-based on flavor input """
- pass
-
def _check_status(self):
return self._tg_process.is_alive()
diff --git a/yardstick/network_services/vnf_generic/vnf/tg_rfc2544_ixia.py b/yardstick/network_services/vnf_generic/vnf/tg_rfc2544_ixia.py
index a8b19cfba..630c8b9c0 100644
--- a/yardstick/network_services/vnf_generic/vnf/tg_rfc2544_ixia.py
+++ b/yardstick/network_services/vnf_generic/vnf/tg_rfc2544_ixia.py
@@ -174,7 +174,7 @@ class IxiaResourceHelper(ClientResourceHelper):
break
self.client.ix_stop_traffic()
- except Exception:
+ except Exception: # pylint: disable=broad-except
LOG.exception("Run Traffic terminated")
self._terminated.value = 1
@@ -201,9 +201,6 @@ class IxiaTrafficGen(SampleVNFTrafficGen):
def _check_status(self):
pass
- def scale(self, flavor=""):
- pass
-
def terminate(self):
self.resource_helper.stop_collect()
super(IxiaTrafficGen, self).terminate()
diff --git a/yardstick/network_services/vnf_generic/vnf/tg_trex.py b/yardstick/network_services/vnf_generic/vnf/tg_trex.py
index 4250cb7a6..0084a124c 100644
--- a/yardstick/network_services/vnf_generic/vnf/tg_trex.py
+++ b/yardstick/network_services/vnf_generic/vnf/tg_trex.py
@@ -126,6 +126,11 @@ class TrexResourceHelper(ClientResourceHelper):
self.ssh_helper.execute(self.MAKE_INSTALL.format(ko_src))
def start(self, ports=None, *args, **kwargs):
+ # pylint: disable=keyword-arg-before-vararg
+ # NOTE(ralonsoh): defining keyworded arguments before variable
+ # positional arguments is a bug. This function definition doesn't work
+ # in Python 2, although it works in Python 3. Reference:
+ # https://www.python.org/dev/peps/pep-3102/
cmd = "sudo fuser -n tcp {0.SYNC_PORT} {0.ASYNC_PORT} -k > /dev/null 2>&1"
self.ssh_helper.execute(cmd.format(self))
@@ -186,9 +191,6 @@ class TrexTrafficGen(SampleVNFTrafficGen):
super(TrexTrafficGen, self)._start_server()
self.resource_helper.start()
- def scale(self, flavor=""):
- pass
-
def terminate(self):
self.resource_helper.terminate()