| # Copyright 2019 The Chromium OS Authors. All rights reserved. |
| # Use of this source code is governed by a BSD-style license that can be |
| # found in the LICENSE file. |
| |
| # This file is not auto-generated. Don't delete it. |
| |
| # Boring. |
| import logging |
| import pprint |
| from autotest_lib.client.bin import utils |
| |
| usage = """ |
| 1) To run agains a particular $DUT use |
| test_that --args="module=GtsMediaTestCases test=com.google.android.media.gts.MediaCodecStressTest#testDecodeDecodeCompositeDisplay1080p" $DUT cheets_GTS.tradefed-run-test |
| |
| 2) To run against a lab pool use |
| run_suite.py --board=eve --build=$TRYJOB_BUILD --suite_name arc-gts-test --pool cts --no_wait True --priority CQ --timeout_mins 6160 --retry False --num 1 --suite_min_duts 1 --test_args="{'module' : 'GtsMediaTestCases', 'test' : 'com.google.android.media.gts.MediaCodecStressTest#testDecodeDecodeCompositeDisplay1080p'}" |
| """ |
| |
| def usage_error(): |
| logging.info('Example usage:') |
| logging.info(usage) |
| raise SystemExit |
| |
| pp = pprint.PrettyPrinter() |
| logging.info( |
| '***********************************************************************') |
| |
| # Define the variables that we are going to use and set sensible defaults. |
| gts_module = '' |
| gts_retry = 5 |
| gts_revision = '8-R2-P-6955212' # TODO(ihf): Set this default value from generator. |
| gts_test = '' |
| gts_timeout = 600 |
| |
| # Pull parameters either from run_suite or test_that. |
| if 'args_dict' in vars(): |
| logging.info('Raw test options from run_suite:') |
| pp.pprint(args_dict) |
| elif args: |
| logging.info('Raw test options from test_that:') |
| pp.pprint(args) |
| args_dict = utils.args_to_dict(args) |
| else: |
| usage_error() |
| |
| gts_module = args_dict.get('module', gts_module) |
| gts_revision = args_dict.get('revision', gts_revision) |
| gts_test = args_dict.get('test', gts_test) |
| gts_timeout = float(args_dict.get('timeout', gts_timeout)) |
| gts_retry = int(args_dict.get('max_retry', gts_retry)) |
| |
| # Basic checks for option validity. |
| logging.error('Running module %s with test %s on revision %s', |
| gts_module, gts_test, gts_revision) |
| if not gts_module or not gts_revision or not gts_test: |
| usage_error() |
| |
| # And we are getting ready for tradefed. |
| uri = ('gs://chromeos-arc-images/cts/bundle/android-gts-' + gts_revision + '.zip') |
| run_template = ['run', 'commandAndExit', 'gts', |
| '--include-filter', gts_module + ' ' + gts_test, |
| '--ignore-business-logic-failure'] |
| retry_template = ['run', 'commandAndExit', 'retry', |
| '--retry', '{session_id}'] |
| # Unfortunately super long test names can cause problems. Try to get the |
| # rightmost element and use that as a simplified name. |
| # TODO(ihf): fix pipeline so it works with super long names. |
| simplified_test = gts_test |
| if '#' in gts_test: |
| simplified_test = gts_test.split('#')[-1] |
| elif '.' in gts_test: |
| simplified_test = gts_test.split('.')[-1] |
| tag = 'tradefed-run-test.%s.%s' % (gts_module, simplified_test) |
| |
| # The usual testing stanza. We are suppressing some DEPENDENCIES on purpose. |
| AUTHOR = 'ARC++ Team' |
| NAME = 'cheets_GTS.tradefed-run-test' |
| ATTRIBUTES = '' |
| DEPENDENCIES = 'arc' |
| JOB_RETRIES = 0 |
| TEST_TYPE = 'server' |
| TIME = 'LONG' |
| MAX_RESULT_SIZE_KB = 256000 |
| DOC = ('Run a test of the Android Google Test Suite (GTS) in the ARC++ ' |
| 'container.') |
| |
| # And launch. |
| def run_TS(machine): |
| host_list = [hosts.create_host(machine)] |
| job.run_test( |
| 'cheets_GTS', |
| hosts=host_list, |
| iterations=1, |
| max_retry=gts_retry, |
| needs_push_media=True, |
| tag=tag, |
| test_name=NAME, |
| authkey='gs://chromeos-arc-images/cts/bundle/gts-arc.json', |
| run_template=run_template, |
| retry_template=retry_template, |
| target_module=None, |
| target_plan=None, |
| uri=uri, |
| login_precondition_commands=[ |
| 'lsblk -do NAME,RM | sed -n s/1$//p | xargs -n1 eject' |
| ], |
| precondition_commands=[ |
| 'echo $(({0} % 2 * 2 + 1)) > /proc/sys/kernel/perf_event_paranoid', |
| 'modprobe configs' |
| ], |
| timeout=gts_timeout) |
| |
| parallel_simple(run_TS, machines) |