diff options
author | xudan <xudan16@huawei.com> | 2018-04-25 03:35:02 -0400 |
---|---|---|
committer | xudan <xudan16@huawei.com> | 2018-05-07 02:54:02 -0400 |
commit | 27109727907de0a275946765b201fbc0bd71116f (patch) | |
tree | ad8553f952bfead5b69be50d7a3f9a4290dccd80 /dovetail/test_runner.py | |
parent | e112118754bbd297de52538d003fc21273e9cf3d (diff) |
Decoupling Bottlenecks Docker config items from source code
There are some special Docker setting items when creating
Bottlenecks Docker Cntainers.
Move the special settings to config files.
Disable the function to push results to DB.
JIRA: DOVETAIL-645
Change-Id: Icc033222edf74c0fe4853dede2794f4226fd4252
Signed-off-by: xudan <xudan16@huawei.com>
Diffstat (limited to 'dovetail/test_runner.py')
-rw-r--r-- | dovetail/test_runner.py | 90 |
1 files changed, 48 insertions, 42 deletions
diff --git a/dovetail/test_runner.py b/dovetail/test_runner.py index 28988de8..f43b4739 100644 --- a/dovetail/test_runner.py +++ b/dovetail/test_runner.py @@ -118,6 +118,50 @@ class DockerRunner(object): def save_logs(self): pass + @staticmethod + def _render(task_template, **kwargs): + return jinja2.Template(task_template).render(**kwargs) + + @staticmethod + def _add_testcase_info(testcase, config_item=None): + if not config_item: + config_item = {} + config_item['validate_testcase'] = testcase.validate_testcase() + config_item['testcase'] = testcase.name() + config_item['os_insecure'] = os.getenv("OS_INSECURE") + return config_item + + def _update_config(self, testcase): + config_item = None + pod_file = os.path.join(dt_cfg.dovetail_config['config_dir'], + dt_cfg.dovetail_config['pod_file']) + config_file = os.path.join(constants.CONF_PATH, self.config_file_name) + pod_info = dt_utils.read_yaml_file(pod_file, self.logger) + task_template = dt_utils.read_plain_file(config_file, self.logger) + if not task_template: + return None + if pod_info: + try: + process_info = pod_info['process_info'] + except KeyError as e: + process_info = None + else: + process_info = None + if process_info: + for item in process_info: + try: + if item['testcase_name'] == testcase.name(): + config_item = self._add_testcase_info(testcase, item) + break + except KeyError as e: + self.logger.error('Need key {} in {}'.format(e, item)) + if not config_item: + config_item = self._add_testcase_info(testcase) + full_task = self._render(task_template, **config_item) + full_task_yaml = yaml.load(full_task) + dt_cfg.dovetail_config.update(full_task_yaml) + return dt_cfg.dovetail_config + class FunctestRunner(DockerRunner): @@ -156,55 +200,17 @@ class YardstickRunner(DockerRunner): def __init__(self, testcase): self.type = 'yardstick' super(YardstickRunner, self).__init__(testcase) - self._update_yardstick_config(testcase) - - @staticmethod - def _render(task_template, **kwargs): - return jinja2.Template(task_template).render(**kwargs) - - @staticmethod - def _add_testcase_info(testcase, config_item=None): - if not config_item: - config_item = {} - config_item['validate_testcase'] = testcase.validate_testcase() - config_item['testcase'] = testcase.name() - config_item['os_insecure'] = os.getenv("OS_INSECURE") - return config_item - - def _update_yardstick_config(self, testcase): - config_item = None - pod_file = os.path.join(dt_cfg.dovetail_config['config_dir'], - dt_cfg.dovetail_config['pod_file']) - config_file = os.path.join(constants.CONF_PATH, self.config_file_name) - pod_info = dt_utils.read_yaml_file(pod_file, self.logger) - task_template = dt_utils.read_plain_file(config_file, self.logger) - if not (pod_info and task_template): - return None - try: - process_info = pod_info['process_info'] - except KeyError as e: - process_info = None - if process_info: - for item in process_info: - try: - if item['testcase_name'] == testcase.name(): - config_item = self._add_testcase_info(testcase, item) - break - except KeyError as e: - self.logger.error('Need key {} in {}'.format(e, item)) - if not config_item: - config_item = self._add_testcase_info(testcase) - full_task = self._render(task_template, **config_item) - full_task_yaml = yaml.load(full_task) - dt_cfg.dovetail_config.update(full_task_yaml) - return dt_cfg.dovetail_config + self._update_config(testcase) class BottlenecksRunner(DockerRunner): + config_file_name = 'bottlenecks_config.yml' + def __init__(self, testcase): self.type = 'bottlenecks' super(BottlenecksRunner, self).__init__(testcase) + self._update_config(testcase) class ShellRunner(object): |