summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorwym_libra <yimin.wang@huawei.com>2015-12-08 15:47:26 +0800
committerJörgen Karlsson <jorgen.w.karlsson@ericsson.com>2015-12-11 11:29:23 +0000
commit2708ea7280b51bffb71093384dc49664c5440034 (patch)
treed194e4442dc721296010515d99d995edcd2f0592
parent25e75985c846cb39c54148f4b233315f6bcff4a4 (diff)
Add 'nodes' attribute to the scenario definition
Defining the 'nodes' attribute which can include more node not only 'host' and 'target' Design etherpad link: https://etherpad.opnfv.org/p/yardstick_framework JIRA:- Change-Id: Ida18ebcda1c73c88d208aa11a10696d1063134ef Signed-off-by: wym_libra <yimin.wang@huawei.com>
-rw-r--r--tests/unit/cmd/__init__.py0
-rw-r--r--tests/unit/cmd/commands/__init__.py0
-rw-r--r--tests/unit/cmd/commands/test_task.py38
-rwxr-xr-xyardstick/cmd/commands/task.py16
4 files changed, 53 insertions, 1 deletions
diff --git a/tests/unit/cmd/__init__.py b/tests/unit/cmd/__init__.py
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/tests/unit/cmd/__init__.py
diff --git a/tests/unit/cmd/commands/__init__.py b/tests/unit/cmd/commands/__init__.py
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/tests/unit/cmd/commands/__init__.py
diff --git a/tests/unit/cmd/commands/test_task.py b/tests/unit/cmd/commands/test_task.py
new file mode 100644
index 000000000..89813cb98
--- /dev/null
+++ b/tests/unit/cmd/commands/test_task.py
@@ -0,0 +1,38 @@
+#!/usr/bin/env python
+
+##############################################################################
+# Copyright (c) 2015 Huawei Technologies Co.,Ltd and others.
+#
+# All rights reserved. This program and the accompanying materials
+# are made available under the terms of the Apache License, Version 2.0
+# which accompanies this distribution, and is available at
+# http://www.apache.org/licenses/LICENSE-2.0
+##############################################################################
+
+# Unittest for yardstick.cmd.commands.task
+
+import mock
+import unittest
+
+from yardstick.cmd.commands import task
+
+
+class TaskCommandsTestCase(unittest.TestCase):
+
+ @mock.patch('yardstick.cmd.commands.task.Context')
+ def test_parse_nodes_host_target_same_context(self, mock_context):
+ nodes = {
+ "host": "node1.LF",
+ "target": "node2.LF"
+ }
+ scenario_cfg = {"nodes": nodes}
+ server_info = {
+ "ip": "10.20.0.3",
+ "user": "root",
+ "key_filename": "/root/.ssh/id_rsa"
+ }
+ mock_context.get_server.return_value = server_info
+ context_cfg = task.parse_nodes_with_context(scenario_cfg)
+
+ self.assertEqual(context_cfg["host"], server_info)
+ self.assertEqual(context_cfg["target"], server_info)
diff --git a/yardstick/cmd/commands/task.py b/yardstick/cmd/commands/task.py
index 0d7e9e66d..d6cd6984c 100755
--- a/yardstick/cmd/commands/task.py
+++ b/yardstick/cmd/commands/task.py
@@ -287,7 +287,8 @@ def run_one_scenario(scenario_cfg, output_file):
# TODO support get multi hosts/vms info
context_cfg = {}
- context_cfg['host'] = Context.get_server(scenario_cfg["host"])
+ if "host" in scenario_cfg:
+ context_cfg['host'] = Context.get_server(scenario_cfg["host"])
if "target" in scenario_cfg:
if is_ip_addr(scenario_cfg["target"]):
@@ -303,6 +304,8 @@ def run_one_scenario(scenario_cfg, output_file):
context_cfg["target"]["ipaddr"] = \
context_cfg["target"]["ip"]
+ if "nodes" in scenario_cfg:
+ context_cfg["nodes"] = parse_nodes_with_context(scenario_cfg)
runner = base_runner.Runner.get(runner_cfg)
print "Starting runner of type '%s'" % runner_cfg["type"]
@@ -311,6 +314,17 @@ def run_one_scenario(scenario_cfg, output_file):
return runner
+def parse_nodes_with_context(scenario_cfg):
+ '''paras the 'nodes' fields in scenario '''
+ nodes = scenario_cfg["nodes"]
+
+ nodes_cfg = {}
+ for nodename in nodes:
+ nodes_cfg[nodename] = Context.get_server(nodes[nodename])
+
+ return nodes_cfg
+
+
def runner_join(runner):
'''join (wait for) a runner, exit process at runner failure'''
status = runner.join()