diff options
author | chenjiankun <chenjiankun1@huawei.com> | 2017-01-06 08:01:53 +0000 |
---|---|---|
committer | chenjiankun <chenjiankun1@huawei.com> | 2017-01-09 02:14:26 +0000 |
commit | 52e7c7111a45bd9b89cabdeb446f4b50d7c7a07c (patch) | |
tree | b9ccd4ebc308e3d8a7dd4c62c1537d4ad0518f02 | |
parent | 57011bd0769f54a98b90d489df0f38751ca76c0e (diff) |
Yardstick framework concurrent support
JIRA: YARDSTICK-528
Currently yardstick framework can not support run the same test case at
the same time.
But actually we need to support it.
The reason why framework can't support it is that openstack do not allow
to create stack with the same name.
So I use the task_id to make the stack different.
Change-Id: I9e853793650066dfc56606464f7826f330a1401c
Signed-off-by: chenjiankun <chenjiankun1@huawei.com>
-rw-r--r-- | yardstick/benchmark/core/task.py | 29 |
1 files changed, 28 insertions, 1 deletions
diff --git a/yardstick/benchmark/core/task.py b/yardstick/benchmark/core/task.py index 397ba00b0..8fb117771 100644 --- a/yardstick/benchmark/core/task.py +++ b/yardstick/benchmark/core/task.py @@ -262,7 +262,9 @@ class TaskParser(object): # pragma: no cover else: context_cfgs = [{"type": "Dummy"}] + name_suffix = '-{}'.format(task_id[:8]) for cfg_attrs in context_cfgs: + cfg_attrs['name'] = '{}{}'.format(cfg_attrs['name'], name_suffix) context_type = cfg_attrs.get("type", "Heat") if "Heat" == context_type and "networks" in cfg_attrs: # bugfix: if there are more than one network, @@ -270,7 +272,7 @@ class TaskParser(object): # pragma: no cover # the name of netwrok should follow this rule: # test, test2, test3 ... # sort network with the length of network's name - sorted_networks = sorted(cfg_attrs["networks"].keys()) + sorted_networks = sorted(cfg_attrs["networks"]) # config external_network based on env var cfg_attrs["networks"][sorted_networks[0]]["external_network"] \ = os.environ.get("EXTERNAL_NETWORK", "net04_ext") @@ -286,6 +288,13 @@ class TaskParser(object): # pragma: no cover scenario["tc"] = task_name scenario["task_id"] = task_id + change_server_name(scenario, name_suffix) + + try: + change_server_name(scenario['nodes'], name_suffix) + except KeyError: + pass + # TODO we need something better here, a class that represent the file return cfg["scenarios"], run_in_parallel, meet_precondition @@ -482,3 +491,21 @@ def check_environment(): if e.errno != errno.EEXIST: raise LOG.debug('OPENRC file not found') + + +def change_server_name(scenario, suffix): + try: + scenario['host'] += suffix + except KeyError: + pass + + try: + scenario['target'] += suffix + except KeyError: + pass + + try: + key = 'targets' + scenario[key] = ['{}{}'.format(a, suffix) for a in scenario[key]] + except KeyError: + pass |