diff options
author | Vishal Bhoj <vishal.bhoj@linaro.org> | 2020-05-15 12:22:40 +0530 |
---|---|---|
committer | Vishal Bhoj <vishal.bhoj@linaro.org> | 2020-05-15 19:03:13 +0530 |
commit | 75a0dc7e5d680d072dd4f2ff0bb0027fb19854a3 (patch) | |
tree | 23757e8f729af28e791486ee628062edb8f9a7f2 | |
parent | 018d4b98b37a73742a2bf3335e473ad6895290f9 (diff) |
Signed-off-by: Vishal Bhoj <vishal.bhoj@linaro.org>
-rw-r--r-- | automated/utils/requirements.txt | 1 | ||||
-rwxr-xr-x | automated/utils/test-runner.py | 86 |
2 files changed, 86 insertions, 1 deletions
diff --git a/automated/utils/requirements.txt b/automated/utils/requirements.txt index ee1a8416..78c187c2 100644 --- a/automated/utils/requirements.txt +++ b/automated/utils/requirements.txt @@ -2,3 +2,4 @@ pexpect pyyaml requests pycodestyle +squad_client diff --git a/automated/utils/test-runner.py b/automated/utils/test-runner.py index 33552b58..185bb72a 100755 --- a/automated/utils/test-runner.py +++ b/automated/utils/test-runner.py @@ -18,6 +18,15 @@ from distutils.spawn import find_executable try: + from squad_client.core.api import SquadApi + from squad_client.shortcuts import submit_results + from squad_client.core.models import Squad + from urllib.parse import urlparse +except ImportError as e: + print('squad_client is needed if you want to upload to qa-reports') + + +try: import pexpect import yaml except ImportError as e: @@ -661,6 +670,13 @@ class ResultParser(object): self.results['params'] = {} self.pattern = None self.fixup = None + self.qa_reports_server = args.qa_reports_server + self.qa_reports_token = args.qa_reports_token + self.qa_reports_project = args.qa_reports_project + self.qa_reports_group = args.qa_reports_group + self.qa_reports_env = args.qa_reports_env + self.qa_reports_build_version = args.qa_reports_build_version + with open(os.path.join(self.test['test_path'], "testdef.yaml"), "r") as f: self.testdef = yaml.safe_load(f) self.results['name'] = "" @@ -708,6 +724,7 @@ class ResultParser(object): self.results['metrics'] = self.metrics self.dict_to_json() self.dict_to_csv() + self.send_to_qa_reports() self.logger.info('Result files saved to: %s' % self.test['test_path']) print('--- Printing result.csv ---') with open('%s/result.csv' % self.test['test_path']) as f: @@ -772,6 +789,38 @@ class ResultParser(object): self.logger.debug('lava-run: cmd: {}'.format(cmd)) subprocess.call(shlex.split(cmd)) + def send_to_qa_reports(self): + if None in (self.qa_reports_server, self.qa_reports_token, self.qa_reports_group, self.qa_reports_project, self.qa_reports_build_version, self.qa_reports_env): + self.logger.warning("All parameters for qa reports are not set, results will not be pushed to qa reports") + return + + squad = Squad() + SquadApi.configure( + url=self.qa_reports_server, token=self.qa_reports_token + ) + tests = {} + metrics = {} + for metric in self.metrics: + if metric['measurement'] != "": + metrics[f"{metric['test_case_id']}"] = metric['measurement'] + else: + tests[f"{metric['test_case_id']}"] = metric['result'] + + with open (f"{self.test['test_path']}/stdout.log", "r") as logfile: + log = logfile.read() + + submit_results( + group_project_slug=f"{self.qa_reports_group}/{self.qa_reports_project}", + build_version=self.qa_reports_build_version, + env_slug=self.qa_reports_env, + tests=tests, + metrics=metrics, + log=log, + metadata=self.testdef['metadata'], + attachments=None, + ) + self.logger.info("Results pushed to QA Reports") + def dict_to_json(self): # Save test results to output/test_id/result.json with open('%s/result.json' % self.test['test_path'], 'w') as f: @@ -817,7 +866,6 @@ class ResultParser(object): for metric in self.results['metrics']: writer.writerow(metric) - def get_args(): parser = argparse.ArgumentParser(formatter_class=argparse.RawTextHelpFormatter) parser.add_argument('-o', '--output', default=os.getenv("HOME", "") + '/output', dest='output', @@ -876,6 +924,42 @@ def get_args(): ''')) parser.add_argument('-v', '--verbose', action='store_true', dest='verbose', default=False, help='Set log level to DEBUG.') + parser.add_argument( + "--qa-reports-server", + dest="qa_reports_server", + default=None, + help="qa reports server where the results have to be sent", + ) + parser.add_argument( + "--qa-reports-token", + dest="qa_reports_token", + default=os.environ.get("QA_RERPORTS_TOKEN", None), + help="qa reports token to upload the results to qa_reports_server", + ) + parser.add_argument( + "--qa-reports-project", + dest="qa_reports_project", + default=None, + help="qa reports projects to which the results have to be uploaded", + ) + parser.add_argument( + "--qa-reports-group", + dest="qa_reports_group", + default=None, + help="qa reports group in which the results have to be stored", + ) + parser.add_argument( + "--qa-reports-env", + dest="qa_reports_env", + default=None, + help="qa reports environment for the results that have to be stored", + ) + parser.add_argument( + "--qa-reports-build-version", + dest="qa_reports_build_version", + default=None, + help="qa reports build id for the result set", + ) args = parser.parse_args() return args |