Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(28)

Side by Side Diff: build/android/test_runner.py

Issue 1680233002: Android Add _incremental targets for instrumentation tests (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: add missing dep Created 4 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 #!/usr/bin/env python 1 #!/usr/bin/env python
2 # 2 #
3 # Copyright 2013 The Chromium Authors. All rights reserved. 3 # Copyright 2013 The Chromium Authors. All rights reserved.
4 # Use of this source code is governed by a BSD-style license that can be 4 # Use of this source code is governed by a BSD-style license that can be
5 # found in the LICENSE file. 5 # found in the LICENSE file.
6 6
7 """Runs all types of tests from one unified interface.""" 7 """Runs all types of tests from one unified interface."""
8 8
9 import argparse 9 import argparse
10 import collections 10 import collections
(...skipping 214 matching lines...) Expand 10 before | Expand all | Expand 10 after
225 group.add_argument('--tool', 225 group.add_argument('--tool',
226 dest='tool', 226 dest='tool',
227 help=('Run the test under a tool ' 227 help=('Run the test under a tool '
228 '(use --tool help to list them)')) 228 '(use --tool help to list them)'))
229 group.add_argument('-d', '--device', dest='test_device', 229 group.add_argument('-d', '--device', dest='test_device',
230 help=('Target device for the test suite ' 230 help=('Target device for the test suite '
231 'to run on.')) 231 'to run on.'))
232 group.add_argument('--blacklist-file', help='Device blacklist file.') 232 group.add_argument('--blacklist-file', help='Device blacklist file.')
233 group.add_argument('--enable-device-cache', action='store_true', 233 group.add_argument('--enable-device-cache', action='store_true',
234 help='Cache device state to disk between runs') 234 help='Cache device state to disk between runs')
235 group.add_argument('--incremental-install', action='store_true',
236 help='Use an _incremental apk.')
237 group.add_argument('--enable-concurrent-adb', action='store_true', 235 group.add_argument('--enable-concurrent-adb', action='store_true',
238 help='Run multiple adb commands at the same time, even ' 236 help='Run multiple adb commands at the same time, even '
239 'for the same device.') 237 'for the same device.')
240 group.add_argument('--skip-clear-data', action='store_true', 238 group.add_argument('--skip-clear-data', action='store_true',
241 help='Do not wipe app data between tests. Use this to ' 239 help='Do not wipe app data between tests. Use this to '
242 'speed up local development and never on bots ' 240 'speed up local development and never on bots '
243 '(increases flakiness)') 241 '(increases flakiness)')
244 242
245 243
246 def AddGTestOptions(parser): 244 def AddGTestOptions(parser):
247 """Adds gtest options to |parser|.""" 245 """Adds gtest options to |parser|."""
248 246
249 group = parser.add_argument_group('GTest Options') 247 group = parser.add_argument_group('GTest Options')
250 group.add_argument('-s', '--suite', dest='suite_name', 248 group.add_argument('-s', '--suite', dest='suite_name',
251 nargs='+', metavar='SUITE_NAME', required=True, 249 nargs='+', metavar='SUITE_NAME', required=True,
252 help='Executable name of the test suite to run.') 250 help='Executable name of the test suite to run.')
251 group.add_argument('--test-apk-incremental-install-script',
252 help='Path to install script for the test apk.')
253 group.add_argument('--gtest_also_run_disabled_tests', 253 group.add_argument('--gtest_also_run_disabled_tests',
254 '--gtest-also-run-disabled-tests', 254 '--gtest-also-run-disabled-tests',
255 dest='run_disabled', action='store_true', 255 dest='run_disabled', action='store_true',
256 help='Also run disabled tests if applicable.') 256 help='Also run disabled tests if applicable.')
257 group.add_argument('-a', '--test-arguments', dest='test_arguments', 257 group.add_argument('-a', '--test-arguments', dest='test_arguments',
258 default='', 258 default='',
259 help='Additional arguments to pass to the test.') 259 help='Additional arguments to pass to the test.')
260 group.add_argument('-t', '--shard-timeout', 260 group.add_argument('-t', '--shard-timeout',
261 dest='shard_timeout', type=int, default=120, 261 dest='shard_timeout', type=int, default=120,
262 help='Timeout to wait for each test ' 262 help='Timeout to wait for each test '
(...skipping 126 matching lines...) Expand 10 before | Expand all | Expand 10 after
389 java_or_python_group.add_argument( 389 java_or_python_group.add_argument(
390 '-p', '--python-only', action='store_false', 390 '-p', '--python-only', action='store_false',
391 dest='run_java_tests', default=True, 391 dest='run_java_tests', default=True,
392 help='Run only the host-driven tests.') 392 help='Run only the host-driven tests.')
393 393
394 group.add_argument('--host-driven-root', 394 group.add_argument('--host-driven-root',
395 help='Root of the host-driven tests.') 395 help='Root of the host-driven tests.')
396 group.add_argument('-w', '--wait_debugger', dest='wait_for_debugger', 396 group.add_argument('-w', '--wait_debugger', dest='wait_for_debugger',
397 action='store_true', 397 action='store_true',
398 help='Wait for debugger.') 398 help='Wait for debugger.')
399 group.add_argument('--apk-under-test', dest='apk_under_test', 399 group.add_argument('--apk-under-test',
400 help=('the name of the apk under test.')) 400 help='Path or name of the apk under test.')
401 group.add_argument('--test-apk', dest='test_apk', required=True, 401 group.add_argument('--apk-under-test-incremental-install-script',
402 help=('The name of the apk containing the tests ' 402 help='Path to install script for the --apk-under-test.')
403 '(without the .apk extension; ' 403 group.add_argument('--test-apk', required=True,
404 'e.g. "ContentShellTest").')) 404 help='Path or name of the apk containing the tests '
405 '(name is without the .apk extension; '
406 'e.g. "ContentShellTest").')
407 group.add_argument('--test-apk-incremental-install-script',
408 help='Path to install script for the --test-apk.')
405 group.add_argument('--additional-apk', action='append', 409 group.add_argument('--additional-apk', action='append',
406 dest='additional_apks', default=[], 410 dest='additional_apks', default=[],
407 help='Additional apk that must be installed on ' 411 help='Additional apk that must be installed on '
408 'the device when the tests are run') 412 'the device when the tests are run')
409 group.add_argument('--coverage-dir', 413 group.add_argument('--coverage-dir',
410 help=('Directory in which to place all generated ' 414 help=('Directory in which to place all generated '
411 'EMMA coverage files.')) 415 'EMMA coverage files.'))
412 group.add_argument('--device-flags', dest='device_flags', default='', 416 group.add_argument('--device-flags', dest='device_flags', default='',
413 help='The relative filepath to a file containing ' 417 help='The relative filepath to a file containing '
414 'command-line flags to set on the device') 418 'command-line flags to set on the device')
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after
453 457
454 if os.path.exists(args.test_apk): 458 if os.path.exists(args.test_apk):
455 args.test_apk_path = args.test_apk 459 args.test_apk_path = args.test_apk
456 args.test_apk, _ = os.path.splitext(os.path.basename(args.test_apk)) 460 args.test_apk, _ = os.path.splitext(os.path.basename(args.test_apk))
457 else: 461 else:
458 args.test_apk_path = os.path.join( 462 args.test_apk_path = os.path.join(
459 constants.GetOutDirectory(), 463 constants.GetOutDirectory(),
460 constants.SDK_BUILD_APKS_DIR, 464 constants.SDK_BUILD_APKS_DIR,
461 '%s.apk' % args.test_apk) 465 '%s.apk' % args.test_apk)
462 466
467 jar_basename = args.test_apk
468 if jar_basename.endswith('_incremental'):
469 jar_basename = jar_basename[:-len('_incremental')]
470
463 args.test_apk_jar_path = os.path.join( 471 args.test_apk_jar_path = os.path.join(
464 constants.GetOutDirectory(), 472 constants.GetOutDirectory(),
465 constants.SDK_BUILD_TEST_JAVALIB_DIR, 473 constants.SDK_BUILD_TEST_JAVALIB_DIR,
466 '%s.jar' % args.test_apk) 474 '%s.jar' % jar_basename)
467 args.test_support_apk_path = '%sSupport%s' % ( 475 args.test_support_apk_path = '%sSupport%s' % (
468 os.path.splitext(args.test_apk_path)) 476 os.path.splitext(args.test_apk_path))
469 477
470 args.test_runner = apk_helper.GetInstrumentationName(args.test_apk_path) 478 args.test_runner = apk_helper.GetInstrumentationName(args.test_apk_path)
471 479
472 # TODO(jbudorick): Get rid of InstrumentationOptions. 480 # TODO(jbudorick): Get rid of InstrumentationOptions.
473 return instrumentation_test_options.InstrumentationOptions( 481 return instrumentation_test_options.InstrumentationOptions(
474 args.tool, 482 args.tool,
475 args.annotations, 483 args.annotations,
476 args.exclude_annotations, 484 args.exclude_annotations,
477 args.test_filter, 485 args.test_filter,
478 args.test_data, 486 args.test_data,
479 args.save_perf_json, 487 args.save_perf_json,
480 args.screenshot_failures, 488 args.screenshot_failures,
481 args.wait_for_debugger, 489 args.wait_for_debugger,
482 args.coverage_dir, 490 args.coverage_dir,
483 args.test_apk, 491 args.test_apk,
484 args.test_apk_path, 492 args.test_apk_path,
485 args.test_apk_jar_path, 493 args.test_apk_jar_path,
486 args.test_runner, 494 args.test_runner,
487 args.test_support_apk_path, 495 args.test_support_apk_path,
488 args.device_flags, 496 args.device_flags,
489 args.isolate_file_path, 497 args.isolate_file_path,
490 args.set_asserts, 498 args.set_asserts,
491 args.delete_stale_data, 499 args.delete_stale_data,
492 args.timeout_scale, 500 args.timeout_scale,
493 args.apk_under_test, 501 args.apk_under_test,
494 args.additional_apks, 502 args.additional_apks,
495 args.strict_mode, 503 args.strict_mode,
496 args.skip_clear_data) 504 args.skip_clear_data,
505 args.test_apk_incremental_install_script,
506 args.apk_under_test_incremental_install_script)
497 507
498 508
499 def AddUIAutomatorTestOptions(parser): 509 def AddUIAutomatorTestOptions(parser):
500 """Adds UI Automator test options to |parser|.""" 510 """Adds UI Automator test options to |parser|."""
501 511
502 group = parser.add_argument_group('UIAutomator Test Options') 512 group = parser.add_argument_group('UIAutomator Test Options')
503 AddJavaTestOptions(group) 513 AddJavaTestOptions(group)
504 group.add_argument( 514 group.add_argument(
505 '--package', required=True, choices=constants.PACKAGE_INFO.keys(), 515 '--package', required=True, choices=constants.PACKAGE_INFO.keys(),
506 metavar='PACKAGE', help='Package under test.') 516 metavar='PACKAGE', help='Package under test.')
(...skipping 620 matching lines...) Expand 10 before | Expand all | Expand 10 after
1127 if e.is_infra_error: 1137 if e.is_infra_error:
1128 return constants.INFRA_EXIT_CODE 1138 return constants.INFRA_EXIT_CODE
1129 return constants.ERROR_EXIT_CODE 1139 return constants.ERROR_EXIT_CODE
1130 except: # pylint: disable=W0702 1140 except: # pylint: disable=W0702
1131 logging.exception('Unrecognized error occurred.') 1141 logging.exception('Unrecognized error occurred.')
1132 return constants.ERROR_EXIT_CODE 1142 return constants.ERROR_EXIT_CODE
1133 1143
1134 1144
1135 if __name__ == '__main__': 1145 if __name__ == '__main__':
1136 sys.exit(main()) 1146 sys.exit(main())
OLDNEW
« no previous file with comments | « build/android/pylib/local/device/local_device_test_run.py ('k') | build/config/android/internal_rules.gni » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698