Merge "Improve "get_server" function in Kubernetes context"
authorRodolfo Alonso Hernandez <rodolfo.alonso.hernandez@intel.com>
Thu, 12 Jul 2018 16:17:33 +0000 (16:17 +0000)
committerGerrit Code Review <gerrit@opnfv.org>
Thu, 12 Jul 2018 16:17:33 +0000 (16:17 +0000)
23 files changed:
ansible/roles/install_samplevnf/vars/main.yml
ansible/ubuntu_server_baremetal_deploy_samplevnfs.yml
ansible/ubuntu_server_cloudimg_modify_samplevnfs.yml
tests/opnfv/test_cases/opnfv_yardstick_tc087.yaml
tests/opnfv/test_cases/opnfv_yardstick_tc092.yaml
tests/opnfv/test_cases/opnfv_yardstick_tc093.yaml
yardstick/benchmark/contexts/__init__.py
yardstick/benchmark/contexts/dummy.py
yardstick/benchmark/contexts/heat.py
yardstick/benchmark/contexts/kubernetes.py
yardstick/benchmark/contexts/node.py
yardstick/benchmark/contexts/standalone/ovs_dpdk.py
yardstick/benchmark/contexts/standalone/sriov.py
yardstick/benchmark/core/task.py
yardstick/network_services/collector/subscriber.py
yardstick/network_services/vnf_generic/vnf/vpe_vnf.py
yardstick/tests/unit/benchmark/contexts/standalone/test_ovs_dpdk.py
yardstick/tests/unit/benchmark/contexts/standalone/test_sriov.py
yardstick/tests/unit/benchmark/contexts/test_kubernetes.py
yardstick/tests/unit/benchmark/core/test_task.py
yardstick/tests/unit/network_services/collector/test_subscriber.py
yardstick/tests/unit/network_services/vnf_generic/vnf/test_tg_rfc2544_ixia.py
yardstick/tests/unit/network_services/vnf_generic/vnf/test_tg_rfc2544_trex.py

index c92a9b0..e2a3737 100644 (file)
@@ -48,13 +48,11 @@ vnf_build_dirs:
   ACL: vACL
   FW: vFW
   CGNAPT: vCGNAPT
-  PE: vPE
   UDP_Replay: UDP_Replay
   PROX: DPPD-PROX
 vnf_app_names:
   ACL: vACL
   FW: vFW
   CGNAPT: vCGNAPT
-  PE: vPE
   UDP_Replay: UDP_Replay
   PROX: prox
index d858257..3a29a8a 100644 (file)
@@ -45,8 +45,6 @@
       vnf_name: FW
     - role: install_samplevnf
       vnf_name: CGNAPT
-    - role: install_samplevnf
-      vnf_name: PE
     # build shared DPDK for collectd only, required DPDK downloaded already
     - install_dpdk_shared
     - install_rabbitmq
index aab5a74..b27933b 100644 (file)
@@ -55,8 +55,6 @@
       vnf_name: FW
     - role: install_samplevnf
       vnf_name: CGNAPT
-    - role: install_samplevnf
-      vnf_name: PE
     # build shared DPDK for collectd only, required DPDK downloaded already
     - install_dpdk_shared
     - install_rabbitmq
index d744183..13125ad 100644 (file)
@@ -74,7 +74,7 @@ scenarios:
         type: Duration
         duration: 1
       sla:
-        action: monitor
+        action: assert
 
 
 -
@@ -172,7 +172,7 @@ scenarios:
         type: Duration
         duration: 1
       sla:
-        action: monitor
+        action: assert
 
 -
       type: "GeneralHA"
@@ -239,7 +239,7 @@ scenarios:
         type: Duration
         duration: 1
       sla:
-        action: monitor
+        action: assert
 
 
 contexts:
index 85ec510..f2996bc 100644 (file)
@@ -73,7 +73,7 @@ scenarios:
         type: Duration
         duration: 1
       sla:
-        action: monitor
+        action: assert
 
 -
       type: "GeneralHA"
@@ -170,7 +170,7 @@ scenarios:
         type: Duration
         duration: 1
       sla:
-        action: monitor
+        action: assert
 
 -
       type: "GeneralHA"
@@ -237,7 +237,7 @@ scenarios:
         type: Duration
         duration: 1
       sla:
-        action: monitor
+        action: assert
 
 
 contexts:
index a034471..27e78a4 100644 (file)
@@ -75,7 +75,7 @@ scenarios:
         type: Duration
         duration: 1
       sla:
-        action: monitor
+        action: assert
 
 
 -
@@ -208,7 +208,7 @@ scenarios:
         type: Duration
         duration: 1
       sla:
-        action: monitor
+        action: assert
 
 -
       type: "GeneralHA"
@@ -274,7 +274,7 @@ scenarios:
         type: Duration
         duration: 1
       sla:
-        action: monitor
+        action: assert
 
 
 contexts:
index e69de29..d50f08c 100644 (file)
@@ -0,0 +1,20 @@
+# Copyright (c) 2016-2017 Intel Corporation
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+CONTEXT_DUMMY = "Dummy"
+CONTEXT_HEAT = "Heat"
+CONTEXT_KUBERNETES = "Kubernetes"
+CONTEXT_NODE = "Node"
+CONTEXT_STANDALONEOVSDPDK = "StandaloneOvsDpdk"
+CONTEXT_STANDALONESRIOV = "StandaloneSriov"
index 36e8854..9faca4c 100644 (file)
@@ -7,17 +7,18 @@
 # http://www.apache.org/licenses/LICENSE-2.0
 ##############################################################################
 
-from yardstick.benchmark.contexts.base import Context
+from yardstick.benchmark import contexts
+from yardstick.benchmark.contexts import base
 
 
-class DummyContext(Context):
+class DummyContext(base.Context):
     """Class that handle dummy info.
 
     This class is also used to test the abstract class Context because it
     provides a minimal concrete implementation of a subclass.
     """
 
-    __context_type__ = "Dummy"
+    __context_type__ = contexts.CONTEXT_DUMMY
 
     def deploy(self):
         """Don't need to deploy"""
index ac85b6f..f118ffc 100644 (file)
@@ -16,6 +16,7 @@ from collections import OrderedDict
 import ipaddress
 import pkg_resources
 
+from yardstick.benchmark import contexts
 from yardstick.benchmark.contexts.base import Context
 from yardstick.benchmark.contexts.model import Network
 from yardstick.benchmark.contexts.model import PlacementGroup, ServerGroup
@@ -47,7 +48,7 @@ def h_join(*args):
 class HeatContext(Context):
     """Class that represents a context in the logical model"""
 
-    __context_type__ = "Heat"
+    __context_type__ = contexts.CONTEXT_HEAT
 
     def __init__(self):
         self.stack = None
index 9feb006..a6b3eba 100644 (file)
@@ -7,13 +7,13 @@
 # http://www.apache.org/licenses/LICENSE-2.0
 ##############################################################################
 
-from __future__ import absolute_import
 import logging
 import time
 import pkg_resources
 
 import paramiko
 
+from yardstick.benchmark import contexts
 from yardstick.benchmark.contexts.base import Context
 from yardstick.orchestrator import kubernetes
 from yardstick.common import constants
@@ -28,7 +28,7 @@ BITS_LENGTH = 2048
 class KubernetesContext(Context):
     """Class that handle nodes info"""
 
-    __context_type__ = "Kubernetes"
+    __context_type__ = contexts.CONTEXT_KUBERNETES
 
     def __init__(self):
         self.ssh_key = ''
index d3af989..d233e02 100644 (file)
@@ -7,7 +7,6 @@
 # http://www.apache.org/licenses/LICENSE-2.0
 ##############################################################################
 
-from __future__ import absolute_import
 import subprocess
 import os
 import collections
@@ -18,6 +17,7 @@ import six
 import pkg_resources
 
 from yardstick import ssh
+from yardstick.benchmark import contexts
 from yardstick.benchmark.contexts.base import Context
 from yardstick.common.constants import ANSIBLE_DIR, YARDSTICK_ROOT_PATH
 from yardstick.common.ansible_common import AnsibleCommon
@@ -31,7 +31,7 @@ DEFAULT_DISPATCH = 'script'
 class NodeContext(Context):
     """Class that handle nodes info"""
 
-    __context_type__ = "Node"
+    __context_type__ = contexts.CONTEXT_NODE
 
     def __init__(self):
         self.file_path = None
index e6a6f99..88ad598 100644 (file)
@@ -20,11 +20,12 @@ import re
 import time
 
 from yardstick import ssh
-from yardstick.network_services.utils import get_nsb_option
-from yardstick.benchmark.contexts.base import Context
+from yardstick.benchmark import contexts
+from yardstick.benchmark.contexts import base
 from yardstick.benchmark.contexts.standalone import model
 from yardstick.common import exceptions
 from yardstick.network_services import utils
+from yardstick.network_services.utils import get_nsb_option
 
 
 LOG = logging.getLogger(__name__)
@@ -32,12 +33,12 @@ LOG = logging.getLogger(__name__)
 MAIN_BRIDGE = 'br0'
 
 
-class OvsDpdkContext(Context):
+class OvsDpdkContext(base.Context):
     """ This class handles OVS standalone nodes - VM running on Non-Managed NFVi
     Configuration: ovs_dpdk
     """
 
-    __context_type__ = "StandaloneOvsDpdk"
+    __context_type__ = contexts.CONTEXT_STANDALONEOVSDPDK
 
     SUPPORTED_OVS_TO_DPDK_MAP = {
         '2.6.0': '16.07.1',
index 05fac02..3da12a9 100644 (file)
@@ -18,20 +18,21 @@ import logging
 import collections
 
 from yardstick import ssh
-from yardstick.network_services.utils import get_nsb_option
-from yardstick.benchmark.contexts.base import Context
+from yardstick.benchmark import contexts
+from yardstick.benchmark.contexts import base
 from yardstick.benchmark.contexts.standalone import model
+from yardstick.network_services.utils import get_nsb_option
 from yardstick.network_services.utils import PciAddress
 
 LOG = logging.getLogger(__name__)
 
 
-class SriovContext(Context):
+class SriovContext(base.Context):
     """ This class handles SRIOV standalone nodes - VM running on Non-Managed NFVi
     Configuration: sr-iov
     """
 
-    __context_type__ = "StandaloneSriov"
+    __context_type__ = contexts.CONTEXT_STANDALONESRIOV
 
     def __init__(self):
         self.file_path = None
index f050e8d..1dfd6c3 100644 (file)
@@ -22,7 +22,8 @@ import collections
 from six.moves import filter
 from jinja2 import Environment
 
-from yardstick.benchmark.contexts.base import Context
+from yardstick.benchmark import contexts
+from yardstick.benchmark.contexts import base as base_context
 from yardstick.benchmark.runners import base as base_runner
 from yardstick.common.constants import CONF_FILE
 from yardstick.common.yaml_loader import yaml_load
@@ -359,7 +360,7 @@ class Task(object):     # pragma: no cover
             if is_ip_addr(target):
                 context_cfg['target'] = {"ipaddr": target}
             else:
-                context_cfg['target'] = Context.get_server(target)
+                context_cfg['target'] = base_context.Context.get_server(target)
                 if self._is_same_context(cfg["host"], target):
                     context_cfg['target']["ipaddr"] = context_cfg['target']["private_ip"]
                 else:
@@ -367,7 +368,7 @@ class Task(object):     # pragma: no cover
 
         host_name = server_name.get('host', scenario_cfg.get('host'))
         if host_name:
-            context_cfg['host'] = Context.get_server(host_name)
+            context_cfg['host'] = base_context.Context.get_server(host_name)
 
         for item in [server_name, scenario_cfg]:
             try:
@@ -384,7 +385,8 @@ class Task(object):     # pragma: no cover
                     ip_list.append(target)
                     context_cfg['target'] = {}
                 else:
-                    context_cfg['target'] = Context.get_server(target)
+                    context_cfg['target'] = (
+                        base_context.Context.get_server(target))
                     if self._is_same_context(scenario_cfg["host"],
                                              target):
                         ip_list.append(context_cfg["target"]["private_ip"])
@@ -412,7 +414,8 @@ class Task(object):     # pragma: no cover
         with attribute name mapping when using external heat templates
         """
         for context in self.contexts:
-            if context.__context_type__ not in {"Heat", "Kubernetes"}:
+            if context.__context_type__ not in {contexts.CONTEXT_HEAT,
+                                                contexts.CONTEXT_KUBERNETES}:
                 continue
 
             host = context._get_server(host_attr)
@@ -553,19 +556,19 @@ class TaskParser(object):       # pragma: no cover
         elif "contexts" in cfg:
             context_cfgs = cfg["contexts"]
         else:
-            context_cfgs = [{"type": "Dummy"}]
+            context_cfgs = [{"type": contexts.CONTEXT_DUMMY}]
 
-        contexts = []
+        _contexts = []
         for cfg_attrs in context_cfgs:
 
             cfg_attrs['task_id'] = task_id
             # default to Heat context because we are testing OpenStack
-            context_type = cfg_attrs.get("type", "Heat")
-            context = Context.get(context_type)
+            context_type = cfg_attrs.get("type", contexts.CONTEXT_HEAT)
+            context = base_context.Context.get(context_type)
             context.init(cfg_attrs)
             # Update the name in case the context has used the name_suffix
             cfg_attrs['name'] = context.name
-            contexts.append(context)
+            _contexts.append(context)
 
         run_in_parallel = cfg.get("run_in_parallel", False)
 
@@ -578,17 +581,17 @@ class TaskParser(object):       # pragma: no cover
             # relative to task path
             scenario["task_path"] = os.path.dirname(self.path)
 
-            self._change_node_names(scenario, contexts)
+            self._change_node_names(scenario, _contexts)
 
         # TODO we need something better here, a class that represent the file
         return {'scenarios': cfg['scenarios'],
                 'run_in_parallel': run_in_parallel,
                 'meet_precondition': meet_precondition,
-                'contexts': contexts,
+                'contexts': _contexts,
                 'rendered': rendered}
 
     @staticmethod
-    def _change_node_names(scenario, contexts):
+    def _change_node_names(scenario, _contexts):
         """Change the node names in a scenario, depending on the context config
 
         The nodes (VMs or physical servers) are referred in the context section
@@ -627,7 +630,7 @@ class TaskParser(object):       # pragma: no cover
           target: target-k8s
         """
         def qualified_name(name):
-            for context in contexts:
+            for context in _contexts:
                 host_name, ctx_name = context.split_host_name(name)
                 if context.assigned_name == ctx_name:
                     return '{}{}{}'.format(host_name,
@@ -718,7 +721,8 @@ def _is_background_scenario(scenario):
 def parse_nodes_with_context(scenario_cfg):
     """parse the 'nodes' fields in scenario """
     # ensure consistency in node instantiation order
-    return OrderedDict((nodename, Context.get_server(scenario_cfg["nodes"][nodename]))
+    return OrderedDict((nodename, base_context.Context.get_server(
+                        scenario_cfg["nodes"][nodename]))
                        for nodename in sorted(scenario_cfg["nodes"]))
 
 
@@ -734,7 +738,7 @@ def get_networks_from_nodes(nodes):
             network_name = interface.get('network_name')
             if not network_name:
                 continue
-            network = Context.get_network(network_name)
+            network = base_context.Context.get_network(network_name)
             if network:
                 networks[network['name']] = network
     return networks
index 937c266..0c6d977 100644 (file)
@@ -11,7 +11,7 @@
 # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 # See the License for the specific language governing permissions and
 # limitations under the License.
-"""This module implements stub for publishing results in yardstick format."""
+
 import logging
 
 from yardstick.network_services.nfvi.resource import ResourceProfile
@@ -31,12 +31,13 @@ class Collector(object):
         self.bin_path = get_nsb_option('bin_path', '')
         self.resource_profiles = {}
 
-        for ctx_name, nodes in contexts_nodes.items():
-            for node in (node for node in nodes if node.get('collectd')):
+        for ctx_name, nodes in ((ctx_name, nodes) for (ctx_name, nodes)
+                                in contexts_nodes.items() if nodes):
+            for node in (node for node in nodes
+                         if node and node.get('collectd')):
                 name = ".".join([node['name'], ctx_name])
                 self.resource_profiles.update(
-                    {name: ResourceProfile.make_from_node(node, timeout)}
-                    )
+                    {name: ResourceProfile.make_from_node(node, timeout)})
 
     def start(self):
         for resource in self.resource_profiles.values():
index 57ea2ee..bfff45c 100644 (file)
@@ -239,7 +239,7 @@ class ConfigCreate(object):
 
 class VpeApproxSetupEnvHelper(DpdkVnfSetupEnvHelper):
 
-    APP_NAME = 'vPE'
+    APP_NAME = 'vPE_vnf'
     CFG_CONFIG = "/tmp/vpe_config"
     CFG_SCRIPT = "/tmp/vpe_script"
     TM_CONFIG = "/tmp/full_tm_profile_10G.cfg"
@@ -286,7 +286,7 @@ class VpeApproxSetupEnvHelper(DpdkVnfSetupEnvHelper):
 class VpeApproxVnf(SampleVNF):
     """ This class handles vPE VNF model-driver definitions """
 
-    APP_NAME = 'vPE'
+    APP_NAME = 'vPE_vnf'
     APP_WORD = 'vpe'
     COLLECT_KPI = VPE_COLLECT_KPI
     WAIT_TIME = 20
index a4a8359..69779d3 100644 (file)
@@ -19,6 +19,7 @@ import mock
 import six
 import unittest
 
+from yardstick.benchmark import contexts
 from yardstick.benchmark.contexts import base
 from yardstick.benchmark.contexts.standalone import model
 from yardstick.benchmark.contexts.standalone import ovs_dpdk
@@ -82,7 +83,7 @@ class OvsDpdkContextTestCase(unittest.TestCase):
 
     def test_init(self):
         ATTRS = {
-            'name': 'StandaloneOvsDpdk',
+            'name': contexts.CONTEXT_STANDALONEOVSDPDK,
             'task_id': '1234567890',
             'file': 'pod',
             'flavor': {},
index 1690846..74c3156 100644 (file)
@@ -18,6 +18,7 @@ import mock
 import unittest
 
 from yardstick import ssh
+from yardstick.benchmark import contexts
 from yardstick.benchmark.contexts import base
 from yardstick.benchmark.contexts.standalone import model
 from yardstick.benchmark.contexts.standalone import sriov
@@ -30,7 +31,7 @@ class SriovContextTestCase(unittest.TestCase):
     NODES_DUPLICATE_SAMPLE = "nodes_duplicate_sample.yaml"
 
     ATTRS = {
-        'name': 'StandaloneSriov',
+        'name': contexts.CONTEXT_STANDALONESRIOV,
         'task_id': '1234567890',
         'file': 'pod',
         'flavor': {},
index 512468f..b070b24 100644 (file)
@@ -10,6 +10,7 @@
 import mock
 import unittest
 
+from yardstick.benchmark import contexts
 from yardstick.benchmark.contexts import base
 from yardstick.benchmark.contexts import kubernetes
 from yardstick.common import constants
@@ -17,7 +18,7 @@ from yardstick.orchestrator import kubernetes as orchestrator_kubernetes
 
 
 CONTEXT_CFG = {
-    'type': 'Kubernetes',
+    'type': contexts.CONTEXT_KUBERNETES,
     'name': 'k8s',
     'task_id': '1234567890',
     'servers': {
index 0424c77..3523663 100644 (file)
@@ -28,7 +28,7 @@ from yardstick.common import utils
 
 class TaskTestCase(unittest.TestCase):
 
-    @mock.patch.object(task, 'Context')
+    @mock.patch.object(base, 'Context')
     def test_parse_nodes_with_context_same_context(self, mock_context):
         scenario_cfg = {
             "nodes": {
@@ -69,7 +69,7 @@ class TaskTestCase(unittest.TestCase):
                                                            dispatcher2])
         self.assertIsNone(t._do_output(output_config, {}))
 
-    @mock.patch.object(task, 'Context')
+    @mock.patch.object(base, 'Context')
     def test_parse_networks_from_nodes(self, mock_context):
         nodes = {
             'node1': {
@@ -133,7 +133,7 @@ class TaskTestCase(unittest.TestCase):
         self.assertEqual(mock_context.get_network.call_count, expected_get_network_calls)
         self.assertDictEqual(networks, expected)
 
-    @mock.patch.object(task, 'Context')
+    @mock.patch.object(base, 'Context')
     @mock.patch.object(task, 'base_runner')
     def test_run(self, mock_base_runner, *args):
         scenario = {
@@ -156,7 +156,7 @@ class TaskTestCase(unittest.TestCase):
         t._run([scenario], False, "yardstick.out")
         runner.run.assert_called_once()
 
-    @mock.patch.object(task, 'Context')
+    @mock.patch.object(base, 'Context')
     @mock.patch.object(task, 'base_runner')
     def test_run_ProxDuration(self, mock_base_runner, *args):
         scenario = {
index 4271f85..cffa4d4 100644 (file)
 # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 # See the License for the specific language governing permissions and
 # limitations under the License.
-#
 
-import unittest
+import copy
 import mock
+import unittest
 
 from yardstick.network_services.collector import subscriber
 from yardstick import ssh
@@ -38,14 +38,15 @@ class MockVnfAprrox(object):
 
 class CollectorTestCase(unittest.TestCase):
 
-    NODES = {'context1': [{'name': 'node1',
-                           'ip': '1.2.3.4',
-                           'collectd': {
-                               'plugins': {'abc': 12, 'def': 34},
-                               'interval': 987
-                           },
-                           }]
-             }
+    NODES = {
+        'context1': [{'name': 'node1',
+                      'ip': '1.2.3.4',
+                      'collectd': {
+                          'plugins': {'abc': 12, 'def': 34},
+                          'interval': 987}
+                      }
+        ]
+    }
 
     def setUp(self):
         vnf = MockVnfAprrox()
@@ -61,13 +62,29 @@ class CollectorTestCase(unittest.TestCase):
     def tearDown(self):
         self.ssh_patch.stop()
 
-    def test___init__(self, *_):
+    def test___init__(self, *args):
         vnf = MockVnfAprrox()
         collector = subscriber.Collector([vnf], self.NODES)
         self.assertEqual(len(collector.vnfs), 1)
         self.assertEqual(len(collector.nodes), 1)
 
-    def test_start(self, *_):
+    def test___init__no_node_information(self, *args):
+        vnf = MockVnfAprrox()
+        nodes = copy.deepcopy(self.NODES)
+        nodes['context1'].append(None)
+        collector = subscriber.Collector([vnf], nodes)
+        self.assertEqual(len(collector.vnfs), 1)
+        self.assertEqual(len(collector.nodes), 1)
+
+    def test___init__no_node_information_in_context(self, *args):
+        vnf = MockVnfAprrox()
+        nodes = copy.deepcopy(self.NODES)
+        nodes['context1'] = None
+        collector = subscriber.Collector([vnf], nodes)
+        self.assertEqual(len(collector.vnfs), 1)
+        self.assertEqual(len(collector.nodes), 1)
+
+    def test_start(self, *args):
         resource_profile = mock.MagicMock()
         self.collector.resource_profiles = {'key': resource_profile}
         self.collector.bin_path = 'path'
@@ -92,7 +109,7 @@ class CollectorTestCase(unittest.TestCase):
         for resource in self.collector.resource_profiles.values():
             resource.stop.assert_called_once()
 
-    def test_get_kpi(self, *_):
+    def test_get_kpi(self, *args):
         result = self.collector.get_kpi()
 
         self.assertEqual(2, len(result))
index 4ade157..f34faae 100644 (file)
@@ -18,10 +18,11 @@ import mock
 import six
 import unittest
 
+from yardstick.benchmark import contexts
+from yardstick.benchmark.contexts import base as ctx_base
 from yardstick.network_services.libs.ixia_libs.ixnet import ixnet_api
 from yardstick.network_services.traffic_profile import base as tp_base
 from yardstick.network_services.vnf_generic.vnf import tg_rfc2544_ixia
-from yardstick.benchmark.contexts import base as ctx_base
 
 
 TEST_FILE_YAML = 'nsb_test_case.yaml'
@@ -162,7 +163,8 @@ class TestIXIATrafficGen(unittest.TestCase):
                               'nodes': {'tg__1': 'trafficgen_1.yardstick',
                                         'vnf__1': 'vnf.yardstick'},
                               'topology': 'vpe_vnf_topology.yaml'}],
-               'context': {'nfvi_type': 'baremetal', 'type': 'Node',
+               'context': {'nfvi_type': 'baremetal',
+                           'type': contexts.CONTEXT_NODE,
                            'name': 'yardstick',
                            'file': '/etc/yardstick/nodes/pod.yaml'},
                'schema': 'yardstick:task:0.1'}
index 4d3e4ff..ba90dc9 100644 (file)
 import mock
 import unittest
 
+from yardstick.benchmark import contexts
+from yardstick.benchmark.contexts import base as ctx_base
 from yardstick.network_services.traffic_profile import base as tp_base
 from yardstick.network_services.vnf_generic.vnf import sample_vnf
 from yardstick.network_services.vnf_generic.vnf import tg_rfc2544_trex
-from yardstick.benchmark.contexts import base as ctx_base
 
 
 class TestTrexRfcResouceHelper(unittest.TestCase):
@@ -206,7 +207,7 @@ class TestTrexTrafficGenRFC(unittest.TestCase):
         ],
         'context': {
             'nfvi_type': 'baremetal',
-            'type': 'Node',
+            'type': contexts.CONTEXT_NODE,
             'name': 'yardstick',
             'file': '/etc/yardstick/nodes/pod.yaml',
         },