From ea54335d54fa362659eff545857c1d0aae9d5045 Mon Sep 17 00:00:00 2001 From: Chase Qi Date: Thu, 21 Sep 2017 16:44:30 +0800 Subject: test-runner: add support for remote execution in LAVA When '-l' or '--lava_run' option specified, test-runner will use lava-test-case to send result to LAVA. It might be possible to detect if it is running in LAVA at running time by checking if 'lava-test-case' exists, but that is not reliable as local environment can also has the util installed. So the above option introduced with 'False' as default value. Change-Id: Ief0c9e75d12c07832214d2d4fa30836df964615a Signed-off-by: Chase Qi --- automated/utils/test-runner.py | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/automated/utils/test-runner.py b/automated/utils/test-runner.py index 5562d64..7783850 100755 --- a/automated/utils/test-runner.py +++ b/automated/utils/test-runner.py @@ -13,6 +13,7 @@ import sys import textwrap import time from uuid import uuid4 +from distutils.spawn import find_executable try: @@ -624,6 +625,10 @@ class ResultParser(object): test_version = subprocess.check_output("git rev-parse HEAD", shell=True).decode('utf-8') self.results['version'] = test_version.rstrip() os.chdir(path) + self.lava_run = args.lava_run + if self.lava_run and not find_executable('lava-test-case'): + self.logger.info("lava-test-case not found, '-l' or '--lava_run' option ignored'") + self.lava_run = False def run(self): self.parse_stdout() @@ -670,6 +675,9 @@ class ResultParser(object): self.metrics.append(data.copy()) + if self.lava_run: + self.send_to_lava(data) + def parse_pattern(self): with open('%s/stdout.log' % self.test['test_path'], 'r') as f: for line in f: @@ -685,6 +693,16 @@ class ResultParser(object): self.metrics.append(data.copy()) + if self.lava_run: + self.send_to_lava(data) + + def send_to_lava(self, data): + cmd = 'lava-test-case {} --result {}'.format(data['test_case_id'], data['result']) + if data['measurement']: + cmd = '{} --measurement {} --units {}'.format(cmd, data['measurement'], data['units']) + self.logger.debug('lava-run: cmd: {}'.format(cmd)) + subprocess.call(shlex.split(cmd)) + 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: @@ -777,6 +795,9 @@ def get_args(): parser.add_argument('-e', '--skip_environment', dest='skip_environment', default=False, action='store_true', help='skip environmental data collection (board name, distro, etc)') + parser.add_argument('-l', '--lava_run', dest='lava_run', + default=False, action='store_true', + help='send test result to LAVA with lava-test-case.') args = parser.parse_args() return args -- cgit v1.2.3