diff --git a/taskcluster/ci/test/compiled.yml b/taskcluster/ci/test/compiled.yml index 39c0ceddecee..2948ce31dcef 100644 --- a/taskcluster/ci/test/compiled.yml +++ b/taskcluster/ci/test/compiled.yml @@ -12,6 +12,7 @@ job-defaults: - android/android_common.py - android/androidarm_4_3.py android-hw.*: + - android/android_common.py - android/android_hw.py linux.*: - unittests/linux_unittest.py diff --git a/taskcluster/ci/test/mochitest.yml b/taskcluster/ci/test/mochitest.yml index 339ab87e540f..7619029ee0db 100644 --- a/taskcluster/ci/test/mochitest.yml +++ b/taskcluster/ci/test/mochitest.yml @@ -21,6 +21,7 @@ job-defaults: - android/android_common.py - android/androidarm_4_3.py android-hw.*: + - android/android_common.py - android/android_hw.py linux.*: - unittests/linux_unittest.py diff --git a/testing/mozharness/configs/android/android_common.py b/testing/mozharness/configs/android/android_common.py index ce1afe923cb7..e40aab3ed7c6 100644 --- a/testing/mozharness/configs/android/android_common.py +++ b/testing/mozharness/configs/android/android_common.py @@ -286,6 +286,7 @@ config = { "--log-tbpl-level=%(log_tbpl_level)s", "--test-plugin-path=none", "--deviceSerial=%(device_serial)s", + "%(xpcshell_extra)s", ], }, "cppunittest": { diff --git a/testing/mozharness/configs/android/android_hw.py b/testing/mozharness/configs/android/android_hw.py index 546abef9d0fe..e7d0f47e5cfb 100644 --- a/testing/mozharness/configs/android/android_hw.py +++ b/testing/mozharness/configs/android/android_hw.py @@ -1,38 +1,12 @@ -import os - - -def WebglSuite(name): - return { - "run_filename": "runtestsremote.py", - "testsdir": "mochitest", - "options": [ - "--app=%(app)s", - "--remote-webserver=%(remote_webserver)s", - "--xre-path=%(xre_path)s", - "--utility-path=%(utility_path)s", - "--http-port=%(http_port)s", - "--ssl-port=%(ssl_port)s", - "--certificate-path=%(certs_path)s", - "--symbols-path=%(symbols_path)s", - "--quiet", - "--log-raw=%(raw_log_file)s", - "--log-raw-level=%(log_raw_level)s", - "--log-errorsummary=%(error_summary_file)s", - "--log-tbpl-level=%(log_tbpl_level)s", - "--screenshot-on-fail", - "--subsuite=" + name, - "--deviceSerial=%(device_serial)s", - ] - } - +# mozharness configuration for Android hardware unit tests +# +# This configuration should be combined with suite definitions and other +# mozharness configuration from android_common.py, or similar. config = { "robocop_package_name": "org.mozilla.roboexample.test", "marionette_address": "%(device_ip)s:2828", - "marionette_test_manifest": "unit-tests.ini", "exes": {}, - "log_tbpl_level": "info", - "log_raw_level": "info", "env": { "DISPLAY": ":0.0", "PATH": "%(PATH)s", @@ -49,304 +23,8 @@ config = { # from android_common.py "download_tooltool": True, "download_minidump_stackwalk": True, - # hostutils_manifest_path is relative to branch's root in hg.mozilla.org. - "hostutils_manifest_path": "testing/config/tooltool-manifests/linux64/hostutils.manifest", - "tooltool_cache": "/builds/worker/tooltool_cache", "tooltool_servers": ['https://api.pub.build.mozilla.org/tooltool/'], # minidump_tooltool_manifest_path is relative to workspace/build/tests/ "minidump_tooltool_manifest_path": "config/tooltool-manifests/linux64/releng.manifest", - "find_links": [ - "https://pypi.pub.build.mozilla.org/pub", - ], - "pip_index": False, - "suite_definitions": { - "mochitest": { - "run_filename": "runtestsremote.py", - "testsdir": "mochitest", - "options": [ - "--app=%(app)s", - "--remote-webserver=%(remote_webserver)s", - "--xre-path=%(xre_path)s", - "--utility-path=%(utility_path)s", - "--http-port=%(http_port)s", - "--ssl-port=%(ssl_port)s", - "--certificate-path=%(certs_path)s", - "--symbols-path=%(symbols_path)s", - "--quiet", - "--log-raw=%(raw_log_file)s", - "--log-raw-level=%(log_raw_level)s", - "--log-errorsummary=%(error_summary_file)s", - "--log-tbpl-level=%(log_tbpl_level)s", - "--extra-profile-file=fonts", - "--extra-profile-file=hyphenation", - "--screenshot-on-fail", - "--deviceSerial=%(device_serial)s", - ], - }, - "mochitest-webgl1-core": WebglSuite("webgl1-core"), - "mochitest-webgl2-core": WebglSuite("webgl2-core"), - "mochitest-webgl1-ext": WebglSuite("webgl1-ext"), - "mochitest-webgl2-ext": WebglSuite("webgl2-ext"), - "mochitest-webgl2-deqp": WebglSuite("webgl2-deqp"), - "mochitest-chrome": { - "run_filename": "runtestsremote.py", - "testsdir": "mochitest", - "options": [ - "--app=%(app)s", - "--remote-webserver=%(remote_webserver)s", - "--xre-path=%(xre_path)s", - "--utility-path=%(utility_path)s", - "--http-port=%(http_port)s", - "--ssl-port=%(ssl_port)s", - "--certificate-path=%(certs_path)s", - "--symbols-path=%(symbols_path)s", - "--quiet", - "--log-raw=%(raw_log_file)s", - "--log-raw-level=%(log_raw_level)s", - "--log-errorsummary=%(error_summary_file)s", - "--log-tbpl-level=%(log_tbpl_level)s", - "--extra-profile-file=fonts", - "--extra-profile-file=hyphenation", - "--screenshot-on-fail", - "--flavor=chrome", - "--deviceSerial=%(device_serial)s", - ], - }, - "mochitest-plain-gpu": { - "run_filename": "runtestsremote.py", - "testsdir": "mochitest", - "options": [ - "--app=%(app)s", - "--remote-webserver=%(remote_webserver)s", - "--xre-path=%(xre_path)s", - "--utility-path=%(utility_path)s", - "--http-port=%(http_port)s", - "--ssl-port=%(ssl_port)s", - "--certificate-path=%(certs_path)s", - "--symbols-path=%(symbols_path)s", - "--quiet", - "--log-raw=%(raw_log_file)s", - "--log-raw-level=%(log_raw_level)s", - "--log-errorsummary=%(error_summary_file)s", - "--log-tbpl-level=%(log_tbpl_level)s", - "--screenshot-on-fail", - "--subsuite=gpu", - "--deviceSerial=%(device_serial)s", - ], - }, - "mochitest-plain-clipboard": { - "run_filename": "runtestsremote.py", - "testsdir": "mochitest", - "options": [ - "--app=%(app)s", - "--remote-webserver=%(remote_webserver)s", - "--xre-path=%(xre_path)s", - "--utility-path=%(utility_path)s", - "--http-port=%(http_port)s", - "--ssl-port=%(ssl_port)s", - "--certificate-path=%(certs_path)s", - "--symbols-path=%(symbols_path)s", - "--quiet", - "--log-raw=%(raw_log_file)s", - "--log-raw-level=%(log_raw_level)s", - "--log-errorsummary=%(error_summary_file)s", - "--log-tbpl-level=%(log_tbpl_level)s", - "--screenshot-on-fail", - "--subsuite=clipboard", - "--deviceSerial=%(device_serial)s", - ], - }, - "mochitest-media": { - "run_filename": "runtestsremote.py", - "testsdir": "mochitest", - "options": [ - "--app=%(app)s", - "--remote-webserver=%(remote_webserver)s", - "--xre-path=%(xre_path)s", - "--utility-path=%(utility_path)s", - "--http-port=%(http_port)s", - "--ssl-port=%(ssl_port)s", - "--certificate-path=%(certs_path)s", - "--symbols-path=%(symbols_path)s", - "--quiet", - "--log-raw=%(raw_log_file)s", - "--log-raw-level=%(log_raw_level)s", - "--log-errorsummary=%(error_summary_file)s", - "--log-tbpl-level=%(log_tbpl_level)s", - "--screenshot-on-fail", - "--chunk-by-runtime", - "--subsuite=media", - "--deviceSerial=%(device_serial)s", - ], - }, - "robocop": { - "run_filename": "runrobocop.py", - "testsdir": "mochitest", - "options": [ - "--app=%(app)s", - "--remote-webserver=%(remote_webserver)s", - "--xre-path=%(xre_path)s", - "--utility-path=%(utility_path)s", - "--certificate-path=%(certs_path)s", - "--symbols-path=%(symbols_path)s", - "--quiet", - "--log-raw=%(raw_log_file)s", - "--log-raw-level=%(log_raw_level)s", - "--log-errorsummary=%(error_summary_file)s", - "--log-tbpl-level=%(log_tbpl_level)s", - "--robocop-apk=../../robocop.apk", - "--deviceSerial=%(device_serial)s", - ], - }, - "reftest": { - "run_filename": "remotereftest.py", - "testsdir": "reftest", - "options": [ - "--app=%(app)s", - "--ignore-window-size", - "--remote-webserver=%(remote_webserver)s", - "--xre-path=%(xre_path)s", - "--utility-path=%(utility_path)s", - "--http-port=%(http_port)s", - "--ssl-port=%(ssl_port)s", - "--httpd-path", "%(modules_dir)s", - "--symbols-path=%(symbols_path)s", - "--extra-profile-file=fonts", - "--extra-profile-file=hyphenation", - "--suite=reftest", - "--log-raw=%(raw_log_file)s", - "--log-raw-level=%(log_raw_level)s", - "--log-errorsummary=%(error_summary_file)s", - "--log-tbpl-level=%(log_tbpl_level)s", - "--deviceSerial=%(device_serial)s", - ], - "tests": ["tests/layout/reftests/reftest.list",], - }, - "crashtest": { - "run_filename": "remotereftest.py", - "testsdir": "reftest", - "options": [ - "--app=%(app)s", - "--ignore-window-size", - "--remote-webserver=%(remote_webserver)s", - "--xre-path=%(xre_path)s", - "--utility-path=%(utility_path)s", - "--http-port=%(http_port)s", - "--ssl-port=%(ssl_port)s", - "--httpd-path", - "%(modules_dir)s", - "--symbols-path=%(symbols_path)s", - "--suite=crashtest", - "--log-tbpl-level=%(log_tbpl_level)s", - "--deviceSerial=%(device_serial)s", - ], - "tests": ["tests/testing/crashtest/crashtests.list",], - }, - "jittest": { - "run_filename": "jit_test.py", - "testsdir": "jit-test/jit-test", - "options": [ - "../../bin/js", - "--remote", - "-j", - "1", - "--localLib=../../bin", - "--no-slow", - "--no-progress", - "--format=automation", - "--jitflags=all", - "--deviceSerial=%(device_serial)s", - ], - }, - "jsreftest": { - "run_filename": "remotereftest.py", - "testsdir": "reftest", - "options": [ - "--app=%(app)s", - "--ignore-window-size", - "--remote-webserver=%(remote_webserver)s", "--xre-path=%(xre_path)s", - "--utility-path=%(utility_path)s", "--http-port=%(http_port)s", - "--ssl-port=%(ssl_port)s", "--httpd-path", "%(modules_dir)s", - "--symbols-path=%(symbols_path)s", - "--extra-profile-file=jsreftest/tests/user.js", - "--suite=jstestbrowser", - "--log-tbpl-level=%(log_tbpl_level)s", - "--deviceSerial=%(device_serial)s", - ], - "tests": ["../jsreftest/tests/jstests.list",], - }, - "xpcshell": { - "run_filename": "remotexpcshelltests.py", - "testsdir": "xpcshell", - "install": False, - "options": [ - "--xre-path=%(xre_path)s", - "--testing-modules-dir=%(modules_dir)s", - "--apk=%(installer_path)s", - "--no-logfiles", - "--symbols-path=%(symbols_path)s", - "--manifest=tests/xpcshell.ini", - "--log-raw=%(raw_log_file)s", - "--log-raw-level=%(log_raw_level)s", - "--log-errorsummary=%(error_summary_file)s", - "--log-tbpl-level=%(log_tbpl_level)s", - "--test-plugin-path=none", - "--deviceSerial=%(device_serial)s", - "--remoteTestRoot=/data/local/tests", - ], - }, - "cppunittest": { - "run_filename": "remotecppunittests.py", - "testsdir": "cppunittest", - "install": False, - "options": [ - "--symbols-path=%(symbols_path)s", - "--xre-path=%(xre_path)s", - "--localBinDir=../bin", - "--apk=%(installer_path)s", - ".", - "--deviceSerial=%(device_serial)s", - ], - }, - "marionette": { - "run_filename": os.path.join("harness", "marionette_harness", "runtests.py"), - "testsdir": "marionette", - "options": [ - "--app=fennec", - "--package=%(app)s", - "--address=%(address)s", - "%(test_manifest)s", - "--disable-e10s", - "--gecko-log=%(gecko_log)s", - "--log-raw=%(raw_log_file)s", - "--log-raw-level=%(log_raw_level)s", - "--log-errorsummary=%(error_summary_file)s", - "--log-tbpl-level=%(log_tbpl_level)s", - "--symbols-path=%(symbols_path)s", - "--startup-timeout=300", - "--device=%(device_serial)s", - ], - }, - "geckoview": { - "run_filename": "rungeckoview.py", - "testsdir": "mochitest", - "options": [ - "--utility-path=%(utility_path)s", - "--symbols-path=%(symbols_path)s", - "--deviceSerial=%(device_serial)s", - ], - }, - "geckoview-junit": { - "run_filename": "runjunit.py", - "testsdir": "mochitest", - "options": [ - "--certificate-path=%(certs_path)s", - "--remote-webserver=%(remote_webserver)s", - "--symbols-path=%(symbols_path)s", - "--utility-path=%(utility_path)s", - "--deviceSerial=%(device_serial)s", - ], - }, - - }, # end suite_definitions + "xpcshell_extra": "--remoteTestRoot=/data/local/tests", } diff --git a/testing/mozharness/configs/android/androidarm_4_3.py b/testing/mozharness/configs/android/androidarm_4_3.py index 4d9bcc9bb804..2af6986fc460 100644 --- a/testing/mozharness/configs/android/androidarm_4_3.py +++ b/testing/mozharness/configs/android/androidarm_4_3.py @@ -31,5 +31,5 @@ config = { "name": "test-1", "device_id": "emulator-5554", }, - "marionette_extra": "--emulator" + "marionette_extra": "--emulator", } diff --git a/testing/mozharness/configs/android/androidx86_7_0.py b/testing/mozharness/configs/android/androidx86_7_0.py index 9302234b2396..6ff2a4edd0dd 100644 --- a/testing/mozharness/configs/android/androidx86_7_0.py +++ b/testing/mozharness/configs/android/androidx86_7_0.py @@ -31,5 +31,5 @@ config = { "name": "test-1", "device_id": "emulator-5554", }, - "marionette_extra": "--emulator" + "marionette_extra": "--emulator", } diff --git a/testing/mozharness/scripts/android_emulator_unittest.py b/testing/mozharness/scripts/android_emulator_unittest.py index 25ba9c564f01..3501a1ffc4fc 100644 --- a/testing/mozharness/scripts/android_emulator_unittest.py +++ b/testing/mozharness/scripts/android_emulator_unittest.py @@ -440,6 +440,7 @@ class AndroidEmulatorTest(TestingMixin, BaseScript, MozbaseMixin, CodeCoverageMi # marionette options 'address': c.get('marionette_address'), 'marionette_extra': c.get('marionette_extra', ''), + 'xpcshell_extra': c.get('xpcshell_extra', ''), 'test_manifest': os.path.join( dirs['abs_marionette_tests_dir'], self.config.get('marionette_test_manifest', '') @@ -458,7 +459,9 @@ class AndroidEmulatorTest(TestingMixin, BaseScript, MozbaseMixin, CodeCoverageMi # only query package name if requested cmd.extend([option % {'app': self._query_package_name()}]) else: - cmd.extend([option % str_format_values]) + option = option % str_format_values + if option: + cmd.extend([option]) if not (self.verify_enabled or self.per_test_coverage): if user_paths: diff --git a/testing/mozharness/scripts/android_hardware_unittest.py b/testing/mozharness/scripts/android_hardware_unittest.py index 4625dbe87d2a..56af1fe50ae8 100644 --- a/testing/mozharness/scripts/android_hardware_unittest.py +++ b/testing/mozharness/scripts/android_hardware_unittest.py @@ -399,6 +399,8 @@ class AndroidHardwareTest(TestingMixin, BaseScript, MozbaseMixin, # marionette options 'address': c.get('marionette_address') % {'device_ip': self.device_ip}, 'gecko_log': os.path.join(dirs["abs_blob_upload_dir"], 'gecko.log'), + 'marionette_extra': c.get('marionette_extra', ''), + 'xpcshell_extra': c.get('xpcshell_extra', ''), 'test_manifest': os.path.join( dirs['abs_marionette_tests_dir'], self.config.get('marionette_test_manifest', '') @@ -417,7 +419,9 @@ class AndroidHardwareTest(TestingMixin, BaseScript, MozbaseMixin, # only query package name if requested cmd.extend([option % {'app': self._query_package_name()}]) else: - cmd.extend([option % str_format_values]) + option = option % str_format_values + if option: + cmd.extend([option]) if user_paths: cmd.extend(user_paths.split(':'))