diff --git a/dom/media/tests/mochitest/mochitest.ini b/dom/media/tests/mochitest/mochitest.ini index 1494a9bdbcca..7a4e0137c06f 100644 --- a/dom/media/tests/mochitest/mochitest.ini +++ b/dom/media/tests/mochitest/mochitest.ini @@ -126,13 +126,13 @@ skip-if = (android_version == '18') # android(Bug 1189784, timeouts on 4.3 emula [test_peerConnection_checkPacketDumpHook.html] skip-if = (android_version == '18') # android(Bug 1189784, timeouts on 4.3 emulator) [test_peerConnection_basicAudioNATSrflx.html] -skip-if = toolkit == 'android' || (verify && (os == 'linux')) # websockets don't work on android (bug 1266217) +skip-if = toolkit == 'android' || (verify && (os == 'linux')) || socketprocess_e10s # websockets don't work on android (bug 1266217, IPV6 is busted in try which causes timeouts in socket process case (bug 1521117)) [test_peerConnection_basicAudioNATRelay.html] -skip-if = toolkit == 'android' || (verify && debug && (os == 'linux')) # websockets don't work on android (bug 1266217) +skip-if = toolkit == 'android' || (verify && debug && (os == 'linux')) || socketprocess_e10s # websockets don't work on android (bug 1266217, IPV6 is busted in try which causes timeouts in socket process case (bug 1521117)) [test_peerConnection_basicAudioNATRelayTCP.html] -skip-if = toolkit == 'android' # websockets don't work on android (bug 1266217) +skip-if = toolkit == 'android' || socketprocess_e10s # websockets don't work on android (bug 1266217, IPV6 is busted in try which causes timeouts in socket process case (bug 1521117)) [test_peerConnection_basicAudioNATRelayTLS.html] -skip-if = true # need pyopenssl on builders, see bug 1323439 # toolkit == 'android' # websockets don't work on android (bug 1266217) +skip-if = true # need pyopenssl on builders, see bug 1323439 # toolkit == 'android' || socketprocess_e10s # websockets don't work on android (bug 1266217), IPV6 is busted in try which causes timeouts in socket process case (bug 1521117) [test_peerConnection_basicAudioRequireEOC.html] skip-if = (android_version == '18') # android(Bug 1189784, timeouts on 4.3 emulator) [test_peerConnection_basicAudioPcmaPcmuOnly.html] @@ -347,7 +347,7 @@ skip-if = (android_version == '18') # android(Bug 1189784, timeouts on 4.3 emula [test_peerConnection_stats.html] skip-if = toolkit == 'android' # android(Bug 1189784, timeouts on 4.3 emulator, Bug 1373858) [test_peerConnection_stats_relayProtocol.html] -skip-if = toolkit == 'android' # android(Bug 1189784, timeouts on 4.3 emulator, Bug 1373858) +skip-if = toolkit == 'android' || socketprocess_e10s # android(Bug 1189784, timeouts on 4.3 emulator, Bug 1373858, Bug 1521117) [test_peerConnection_sender_and_receiver_stats.html] skip-if = (android_version == '18') # android(Bug 1189784, timeouts on 4.3 emulator) [test_peerConnection_trackless_sender_stats.html] diff --git a/taskcluster/ci/config.yml b/taskcluster/ci/config.yml index 53f65f442458..c939aec974bb 100755 --- a/taskcluster/ci/config.yml +++ b/taskcluster/ci/config.yml @@ -18,7 +18,9 @@ treeherder: 'Fxfn-r-e10s': 'Firefox functional tests (remote) with e10s' 'M': 'Mochitests' 'M-sw': 'Mochitests with serviceworker redesign' + 'M-spi': 'Mochitests with socket process' 'M-e10s': 'Mochitests with e10s' + 'M-e10s-spi': 'Mochitests with socket process and e10s' 'M-sw-e10s': 'Mochitests with serviceworker redesign and e10s' 'M-V': 'Mochitests on Valgrind' 'MSI': 'Repack installers into MSIs' diff --git a/taskcluster/ci/test/mochitest.yml b/taskcluster/ci/test/mochitest.yml index 304bf29ef7f6..bd4edf8b5bef 100644 --- a/taskcluster/ci/test/mochitest.yml +++ b/taskcluster/ci/test/mochitest.yml @@ -7,6 +7,7 @@ job-defaults: by-test-platform: linux64/debug: both default: false + socketprocess-e10s: false mozharness: script: by-test-platform: @@ -283,6 +284,10 @@ mochitest-media: macosx64-ccov/debug: 7200 default: 5400 run-on-projects: built-projects + socketprocess-e10s: + by-test-platform: + android.*: false + default: both loopback-video: true virtualization: by-test-platform: diff --git a/taskcluster/docs/attributes.rst b/taskcluster/docs/attributes.rst index ccd96bb3d79b..18ab4499270a 100644 --- a/taskcluster/docs/attributes.rst +++ b/taskcluster/docs/attributes.rst @@ -136,6 +136,12 @@ serviceworker_e10s For test suites which distinguish whether or not they run with the serviceworker e10s redesign enabled. +socketprocess_e10s +================== + +For test suites which distinguish whether or not they run with the socket +process enabled. + e10s ==== diff --git a/taskcluster/taskgraph/transforms/tests.py b/taskcluster/taskgraph/transforms/tests.py index eb628b3162ef..6565a071bd2f 100644 --- a/taskcluster/taskgraph/transforms/tests.py +++ b/taskcluster/taskgraph/transforms/tests.py @@ -223,6 +223,14 @@ test_description_schema = Schema({ 'test-platform', 'project', Any(bool, 'both')), + # Whether to run this task with the socket process enabled (desktop-test + # only). If 'both', run one task with and one task without. Tasks with + # this enabled have have "-spi" appended to the test name and treeherder + # group. + Optional('socketprocess-e10s'): optionally_keyed_by( + 'test-platform', 'project', + Any(bool, 'both')), + # Whether the task should run with WebRender enabled or not. Optional('webrender'): bool, @@ -484,6 +492,7 @@ def set_defaults(config, tests): test.setdefault('docker-image', {'in-tree': 'desktop1604-test'}) test.setdefault('checkout', False) test.setdefault('serviceworker-e10s', False) + test.setdefault('socketprocess-e10s', False) test.setdefault('require-signed-extensions', False) test['mozharness'].setdefault('extra-options', []) @@ -725,6 +734,7 @@ def handle_keyed_by(config, tests): 'chunks', 'serviceworker-e10s', 'e10s', + 'socketprocess-e10s', 'suite', 'run-on-projects', 'os-groups', @@ -854,6 +864,10 @@ def handle_run_on_projects(config, tests): @transforms.add def split_serviceworker_e10s(config, tests): for test in tests: + if test['attributes'].get('socketprocess_e10s'): + yield test + continue + sw = test.pop('serviceworker-e10s') test['serviceworker-e10s'] = False @@ -912,6 +926,39 @@ def split_e10s(config, tests): yield test +@transforms.add +def split_socketprocess_e10s(config, tests): + for test in tests: + if test['attributes'].get('serviceworker_e10s'): + yield test + continue + + sw = test.pop('socketprocess-e10s') + + test['socketprocess-e10s'] = False + test['attributes']['socketprocess_e10s'] = False + + if sw == 'both': + yield copy.deepcopy(test) + sw = True + if sw: + test['description'] += " with socket process enabled" + test['test-name'] += '-spi' + test['try-name'] += '-spi' + test['attributes']['socketprocess_e10s'] = True + group, symbol = split_symbol(test['treeherder-symbol']) + if group != '?': + group += '-spi' + else: + symbol += '-spi' + test['treeherder-symbol'] = join_symbol(group, symbol) + test['mozharness']['extra-options'].append( + '--setpref="media.peerconnection.mtransport_process=true"') + test['mozharness']['extra-options'].append( + '--setpref="network.process.enabled=true"') + yield test + + @transforms.add def split_chunks(config, tests): """Based on the 'chunks' key, split tests up into chunks by duplicating diff --git a/testing/mochitest/runtests.py b/testing/mochitest/runtests.py index c36e61288f27..c475d5934a6e 100644 --- a/testing/mochitest/runtests.py +++ b/testing/mochitest/runtests.py @@ -2551,6 +2551,8 @@ toolbar#nav-bar { "headless": options.headless, "serviceworker_e10s": self.extraPrefs.get( 'dom.serviceWorkers.parent_intercept', False), + "socketprocess_e10s": self.extraPrefs.get( + 'network.process.enabled', False), }) self.setTestRoot(options) @@ -2777,6 +2779,8 @@ toolbar#nav-bar { self.log.info("runtests.py | Running with e10s: {}".format(options.e10s)) self.log.info("runtests.py | Running with serviceworker_e10s: {}".format( mozinfo.info.get('serviceworker_e10s', False))) + self.log.info("runtests.py | Running with socketprocess_e10s: {}".format( + mozinfo.info.get('socketprocess_e10s', False))) self.log.info("runtests.py | Running tests: start.\n") ret, _ = self.runApp( testURL,