aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorVishal Bhoj <vishal.bhoj@linaro.org>2020-05-15 12:22:40 +0530
committerVishal Bhoj <vishal.bhoj@linaro.org>2020-05-15 19:03:13 +0530
commit75a0dc7e5d680d072dd4f2ff0bb0027fb19854a3 (patch)
tree23757e8f729af28e791486ee628062edb8f9a7f2
parent018d4b98b37a73742a2bf3335e473ad6895290f9 (diff)
Initial support to submit results to qa-reportsHEADmaster
Signed-off-by: Vishal Bhoj <vishal.bhoj@linaro.org>
-rw-r--r--automated/utils/requirements.txt1
-rwxr-xr-xautomated/utils/test-runner.py86
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