Bug 1762991 - switch to --disable-fission and fission by default. r=gbrown,webdriver-reviewers,whimboo

Differential Revision: https://phabricator.services.mozilla.com/D144985
This commit is contained in:
Joel Maher 2022-05-10 17:41:03 +00:00
Родитель 541fdba919
Коммит ab1727d3e3
34 изменённых файлов: 266 добавлений и 202 удалений

Просмотреть файл

@ -170,7 +170,7 @@ class ReftestRunner(MozbuildObject):
# Disable fission until geckoview supports fission by default.
# Need fission on Android? Use '--setpref fission.autostart=true'
args.fission = False
args.disableFission = True
# A symlink and some path manipulations are required so that test
# manifests can be found both locally and remotely (via a url)

Просмотреть файл

@ -250,9 +250,9 @@ class ReftestArgumentsParser(argparse.ArgumentParser):
self.add_argument(
"--disable-fission",
action="store_false",
default=True,
dest="fission",
action="store_true",
default=False,
dest="disableFission",
help="Run tests with fission (site isolation) disabled.",
)
@ -415,7 +415,7 @@ class ReftestArgumentsParser(argparse.ArgumentParser):
if not 1 <= options.thisChunk <= options.totalChunks:
self.error("thisChunk must be between 1 and totalChunks")
if options.fission and not options.e10s:
if not options.disableFission and not options.e10s:
self.error("Fission is not supported without e10s.")
if options.logFile:

Просмотреть файл

@ -475,15 +475,14 @@ class RefTest(object):
elif manifests:
prefs["reftest.manifests"] = json.dumps(manifests)
# Unconditionally update the e10s pref.
if options.e10s:
prefs["browser.tabs.remote.autostart"] = True
else:
# Unconditionally update the e10s pref, default True
prefs["browser.tabs.remote.autostart"] = True
if not options.e10s:
prefs["browser.tabs.remote.autostart"] = False
if options.fission:
prefs["fission.autostart"] = True
else:
# default fission to True
prefs["fission.autostart"] = True
if options.disableFission:
prefs["fission.autostart"] = False
if not self.run_by_manifest:

Просмотреть файл

@ -521,9 +521,11 @@ def create_parser_puppeteer():
help="Flag that indicates that tests run in a CI environment.",
)
p.add_argument(
"--enable-fission",
"--disable-fission",
action="store_true",
help="Enable Fission (site isolation) in Gecko.",
default=False,
dest="disable_fission",
help="Disable Fission (site isolation) in Gecko.",
)
p.add_argument(
"--enable-webrender",
@ -597,7 +599,7 @@ def puppeteer_test(
command_context,
binary=None,
ci=False,
enable_fission=False,
disable_fission=False,
enable_webrender=False,
headless=False,
extra_prefs=None,
@ -645,9 +647,8 @@ def puppeteer_test(
exit(EX_USAGE)
options[kv[0]] = kv[1].strip()
if enable_fission:
prefs.update({"fission.autostart": True})
else:
prefs.update({"fission.autostart": True})
if disable_fission:
prefs.update({"fission.autostart": False})
if verbosity == 1:

Просмотреть файл

@ -35,16 +35,16 @@ job-defaults:
optimization:
skip-unless-expanded: null
puppeteer:
puppeteer-no-fission:
description: Puppeteer tests against Firefox CDP-based remote protocol
treeherder:
symbol: remote(pup)
symbol: remote(pup-nofis)
run: # Bug 1651542: Use screenshot feature to warm-up the font cache before the actual test
using: run-task
command: >
cd $GECKO_PATH/ &&
$MOZ_FETCHES_DIR/firefox/firefox --screenshot http://example.org &&
./mach puppeteer-test --ci -vv --binary $MOZ_FETCHES_DIR/firefox/firefox --headless --write-results /builds/worker/results.json --log-tbpl - --log-errorsummary /builds/worker/pup_errorsummary.json --log-raw /builds/worker/pup_raw.log
./mach puppeteer-test --ci -vv --binary $MOZ_FETCHES_DIR/firefox/firefox --headless --disable-fission --write-results /builds/worker/results.json --log-tbpl - --log-errorsummary /builds/worker/pup_errorsummary.json --log-raw /builds/worker/pup_raw.log
puppeteer-fis:
description: Puppeteer tests against Firefox CDP-based remote protocol (Fission)
@ -55,4 +55,4 @@ puppeteer-fis:
command: >
cd $GECKO_PATH/ &&
$MOZ_FETCHES_DIR/firefox/firefox --screenshot http://example.org &&
./mach puppeteer-test --ci -vv --binary $MOZ_FETCHES_DIR/firefox/firefox --headless --enable-fission --write-results /builds/worker/results.json --log-tbpl - --log-errorsummary /builds/worker/pup_errorsummary.json --log-raw /builds/worker/pup_raw.log
./mach puppeteer-test --ci -vv --binary $MOZ_FETCHES_DIR/firefox/firefox --headless --write-results /builds/worker/results.json --log-tbpl - --log-errorsummary /builds/worker/pup_errorsummary.json --log-raw /builds/worker/pup_raw.log

Просмотреть файл

@ -5,7 +5,8 @@
job-defaults:
test-manifest-loader: null # don't load tests in the taskgraph
run-without-variant: false
variants: ["1proc"]
variants:
- 1proc
virtualization: virtual
mozharness:
script:
@ -39,7 +40,10 @@ cppunit:
android-em-7.*: geckoview-test_runner.apk
default: null
tier: default
run-on-projects: built-projects
run-on-projects:
by-variant:
1proc: built-projects
default: []
gtest:
description: "GTests run"
@ -47,12 +51,16 @@ gtest:
treeherder-symbol: GTest
instance-size: xlarge
run-on-projects:
by-test-platform:
.*-devedition.*/.*: [] # don't run on devedition
linux1804-32-qr/debug: ['mozilla-central'] # try and m-c
linux1804-32-qr/opt: [] # try only, shippable on m-c
linux1804-32-shippable-qr/opt: ['mozilla-central'] # try and m-c
default: built-projects
by-variant:
1proc:
by-test-platform:
.*android.*: built-projects
.*-devedition.*/.*: [] # don't run on devedition
linux1804-32-qr/opt: [] # try only, shippable on m-c
linux1804-32-qr/debug: ['mozilla-central'] # try and m-c
linux1804-32-shippable-qr/opt: ['mozilla-central'] # try and m-c
default: built-projects
default: []
target:
by-test-platform:
android-em-7.*: geckoview-test_runner.apk
@ -64,10 +72,13 @@ jittest:
suite: jittest
treeherder-symbol: Jit
run-on-projects:
by-test-platform:
android-hw-.*-aarch64-qr/debug: ['mozilla-central', 'release']
android-hw-.*-arm7-qr/debug: ['mozilla-central', 'release']
default: built-projects
by-variant:
1proc:
by-test-platform:
android-hw-.*-aarch64-qr/debug: ['mozilla-central', 'release']
android-hw-.*-arm7-qr/debug: ['mozilla-central', 'release']
default: built-projects
default: []
chunks:
by-test-platform:
windows.*: 1

Просмотреть файл

@ -63,7 +63,9 @@ test-verify:
loopback-video: true
max-run-time: 10800
allow-software-gl-layers: false
variants: ["fission"]
variants:
- fission
- no-fission
run-without-variant: false
run-on-projects:
by-variant:
@ -74,7 +76,17 @@ test-verify:
# we prefer -qr platforms with fission, no need to run on both
(?!.*(-ccov|-asan|-shippable))(?!.*-qr).*: []
# do not run on mozilla-central, beta or release: usually just confirms earlier results
android.*: []
default: ['integration']
no-fission:
by-test-platform:
# do not run on ccov or asan or shippable
.*(-ccov|-asan|-shippable).*: []
# we prefer -qr platforms with fission, no need to run on both
(?!.*(-ccov|-asan|-shippable))(?!.*-qr).*: []
# do not run on mozilla-central, beta or release: usually just confirms earlier results
android.*: ['integration']
default: []
default: []
built-projects-only: true
target:

Просмотреть файл

@ -262,7 +262,6 @@ mochitest-browser-chrome:
default: [] # we don't run linux opt/debug/asan only with M-swr, now with fission this isn't needed
tier:
by-variant:
fission(-xorigin)?: default
webrender-sw:
by-test-platform:
linux.*64(-asan|-shippable)?-qr/(opt|debug): 1
@ -376,7 +375,8 @@ browser-screenshots:
treeherder-symbol: M(ss)
loopback-video: true
test-manifest-loader: null # don't load tests in the taskgraph
variants: ["fission"]
run-without-variant: false
variants: ["fission", "no-fission"]
run-on-projects:
by-test-platform:
linux1804-64.*/opt: ['trunk']
@ -637,10 +637,7 @@ mochitest-chrome-gpu:
.*-tsan-qr/opt: ['trunk']
android.*/.*: []
default: built-projects
tier:
by-variant:
fission: 2
default: default
tier: default
mozharness:
mochitest-flavor: chrome
extra-options:

Просмотреть файл

@ -55,6 +55,7 @@ job-defaults:
default:
- linux64-chromium
default: []
run-without-variant: false
variants: [fission]
raptor-youtube-playback-v9-power-firefox:
@ -67,10 +68,7 @@ raptor-youtube-playback-v9-power-firefox:
(linux|windows.*64|macos)(?!.*-qr).*: []
default: [mozilla-central]
max-run-time: 2700
tier:
by-variant:
fission: 2
default: 3
tier: 2
mozharness:
extra-options:
- --test=raptor-youtube-playback-v9
@ -86,10 +84,7 @@ raptor-youtube-playback-h264-power-firefox:
(linux|windows.*64|macos)(?!.*-qr).*: []
default: [mozilla-central]
max-run-time: 2700
tier:
by-variant:
fission: 2
default: 3
tier: 2
mozharness:
extra-options:
- --test=raptor-youtube-playback-h264

Просмотреть файл

@ -84,14 +84,11 @@ crashtest:
default: []
max-run-time: 3600
tier:
by-variant:
fission: default
default:
by-test-platform:
windows10-aarch64-qr.*: 2
android-hw-.*-qr/.*: 2
android-em-7.0-x86_64-qr/debug-isolated-process: 3
default: default
by-test-platform:
windows10-aarch64-qr.*: 2
android-hw-.*-qr/.*: 2
android-em-7.0-x86_64-qr/debug-isolated-process: 3
default: default
crashtest-qr:
description: "Crashtest Webrender run"
@ -227,14 +224,11 @@ reftest:
windows10-64-2004.*/opt: false
default: true
tier:
by-variant:
fission: default
default:
by-test-platform:
windows10-aarch64-qr.*: 2
android-hw-.*-qr/.*: 2
android-em-7.0-x86_64-qr/debug-isolated-process: 3
default: default
by-test-platform:
windows10-aarch64-qr.*: 2
android-hw-.*-qr/.*: 2
android-em-7.0-x86_64-qr/debug-isolated-process: 3
default: default
reftest-qr:
description: "Reftest webrender run"

Просмотреть файл

@ -7,6 +7,7 @@
mozharness:
extra-options:
- "--disable-e10s"
- "--disable-fission"
headless:
description: "{description} without a window"
@ -60,6 +61,18 @@ geckoview-e10s-single:
mozharness:
extra-options:
- "--setpref=dom.ipc.processCount=1"
- "--disable-fission"
geckoview-no-fission:
description: "{description} without fission enabled"
component: "Core::DOM: Content Processes"
when:
<<: *gv_e10s_filter
suffix: "nofis"
merge:
mozharness:
extra-options:
- "--disable-fission"
geckoview-fission:
description: "{description} with fission enabled"
@ -67,19 +80,11 @@ geckoview-fission:
when:
<<: *gv_e10s_filter
suffix: "fis"
merge:
mozharness:
extra-options:
- "--enable-fission"
fission:
description: "{description} with fission enabled"
component: "Testing::General"
suffix: "fis"
merge:
mozharness:
extra-options:
- "--setpref=fission.autostart=true"
no-fission:
description: "{description} without fission enabled"
@ -88,7 +93,7 @@ no-fission:
merge:
mozharness:
extra-options:
- "--setpref=fission.autostart=false"
- "--disable-fission"
fission-xorigin:
description: "{description} with cross-origin and fission enabled"
@ -99,7 +104,6 @@ fission-xorigin:
merge:
mozharness:
extra-options:
- "--setpref=fission.autostart=true"
- "--enable-xorigin-tests"
socketprocess:

Просмотреть файл

@ -88,13 +88,10 @@ xpcshell:
default: 5400
allow-software-gl-layers: false
tier:
by-variant:
fission: 2
default:
by-test-platform:
windows10-64-2004-asan.*: 3
android-em-7.0-x86_64-qr/debug-isolated-process: 3
default: default
by-test-platform:
windows10-64-2004-asan.*: 3
android-em-7.0-x86_64-qr/debug-isolated-process: 3
default: default
mozharness:
extra-options:
by-test-platform:
@ -135,7 +132,6 @@ xpcshell-failures:
treeherder-symbol: X-f(X)
run-on-projects:
by-variant:
fission: []
default: ["mozilla-central"]
chunks: 2
max-run-time: 2700

Просмотреть файл

@ -385,7 +385,6 @@ def run_sibling_transforms(config, tasks):
("raptor", lambda t: t["suite"] == "raptor"),
("other", None),
("worker", None),
("fission", None),
# These transforms should always run last as there is never any
# difference in configuration from one chunk to another (other than
# chunk number).

Просмотреть файл

@ -1,49 +0,0 @@
# This Source Code Form is subject to the terms of the Mozilla Public
# License, v. 2.0. If a copy of the MPL was not distributed with this
# file, You can obtain one at http://mozilla.org/MPL/2.0/.
from gecko_taskgraph.transforms.base import TransformSequence
transforms = TransformSequence()
def is_fission_enabled(task):
options = task["mozharness"]["extra-options"]
if "--setpref=fission.autostart=true" in options or "--enable-fission" in options:
return True
return False
def is_fission_disabled(task):
options = task["mozharness"]["extra-options"]
if "--setpref=fission.autostart=false" in options or "--disable-fission" in options:
return True
return False
@transforms.add
def reset_fission_prefs(config, tasks):
"""Verify and simplify fission --setpref use."""
for task in tasks:
variant = task["attributes"].get("unittest_variant", "")
is_fission_variant = "fission" in variant and "no-fission" not in variant
if task["suite"] not in ["gtest", "cppunittest", "jittest"]:
if is_fission_variant:
if is_fission_disabled(task):
raise Exception("Fission task disabled fission: " + str(task))
if not is_fission_enabled(task):
# Ensure fission enabled for fission tasks
task["mozharness"]["extra-options"].append(
"--setpref=fission.autostart=true"
)
else:
if is_fission_enabled(task):
raise Exception("Non-fission task enabled fission: " + str(task))
if not is_fission_disabled(task):
# Ensure fission disabled for non-fission tasks
task["mozharness"]["extra-options"].append(
"--setpref=fission.autostart=false"
)
yield task

Просмотреть файл

@ -421,6 +421,13 @@ class BaseMarionetteArguments(ArgumentParser):
help="Enable python post-mortem debugger when a test fails."
" Pass in the debugger you want to use, eg pdb or ipdb.",
)
self.add_argument(
"--disable-fission",
action="store_true",
dest="disable_fission",
default=False,
help="Disable Fission (site isolation) in Gecko.",
)
self.add_argument(
"-z",
"--headless",
@ -636,6 +643,7 @@ class BaseMarionetteTestRunner(object):
verbose=0,
emulator=False,
headless=False,
disable_fission=False,
**kwargs
):
self._appName = None
@ -680,6 +688,8 @@ class BaseMarionetteTestRunner(object):
self.verbose = verbose
self.headless = headless
self.prefs.update({"fission.autostart": not disable_fission})
# If no repeat has been set, default to 30 extra runs
if self.run_until_failure and repeat is None:
self.repeat = 30

Просмотреть файл

@ -175,8 +175,7 @@ class MochitestRunner(MozbuildObject):
print("using e10s=False for non-geckoview app")
# Disable fission until geckoview supports fission by default.
# Need fission on Android? Use '--setpref fission.autostart=true'
options.fission = False
options["disable_fission"] = True
return runtestsremote.run_test_harness(parser, options)
@ -188,6 +187,10 @@ class MochitestRunner(MozbuildObject):
import runjunit
options = Namespace(**kwargs)
# Disable fission until geckoview supports fission by default.
options["disable_fission"] = True
return runjunit.run_test_harness(parser, options)

Просмотреть файл

@ -157,6 +157,9 @@ def run_geckoview_junit(context, args):
from runjunit import run_test_harness
# Force fission disabled by default for android
args["disable_fission"] = True
logger.info("mach calling runjunit with args: " + str(args))
return run_test_harness(parser, args)

Просмотреть файл

@ -565,9 +565,9 @@ class MochitestArguments(ArgumentContainer):
[
["--disable-fission"],
{
"action": "store_false",
"default": True,
"dest": "fission",
"action": "store_true",
"default": False,
"dest": "disable_fission",
"help": "Run tests with fission (site isolation) disabled.",
},
],
@ -1157,13 +1157,8 @@ class MochitestArguments(ArgumentContainer):
)
# If e10s explicitly disabled and no fission option specified, disable fission
if (
(not options.e10s)
and options.fission
and ("fission.autostart=true" not in options.extraPrefs)
and ("fission.autostart=false" not in options.extraPrefs)
):
options.fission = False
if (not options.e10s) and (not options.disable_fission):
options.disable_fission = True
options.leakThresholds = {
"default": options.defaultLeakThreshold,

Просмотреть файл

@ -156,6 +156,11 @@ class JUnitTestRunner(MochitestDesktop):
# Set preferences
self.merge_base_profiles(self.options, "geckoview-junit")
self.options.extra_prefs.append("fission.autostart=true")
if self.options.disable_fission:
self.options.extra_prefs.pop()
self.options.extra_prefs.append("fission.autostart=false")
prefs = parse_preferences(self.options.extra_prefs)
self.profile.set_preferences(prefs)
@ -242,8 +247,11 @@ class JUnitTestRunner(MochitestDesktop):
env["MOZ_WEBRENDER"] = "1"
# FIXME: When android switches to using Fission by default,
# MOZ_FORCE_DISABLE_FISSION will need to be configured correctly.
if self.options.enable_fission:
if self.options.disable_fission:
env["MOZ_FORCE_DISABLE_FISSION"] = "1"
else:
env["MOZ_FORCE_ENABLE_FISSION"] = "1"
# Add additional env variables
for [key, value] in [p.split("=", 1) for p in self.options.add_env]:
env[key] = value
@ -573,11 +581,11 @@ class JunitArgumentParser(argparse.ArgumentParser):
help="If collecting code coverage, save the report file in this dir.",
)
self.add_argument(
"--enable-fission",
"--disable-fission",
action="store_true",
dest="enable_fission",
dest="disable_fission",
default=False,
help="Run the tests with Fission (site isolation) enabled.",
help="Run the tests without Fission (site isolation) enabled.",
)
self.add_argument(
"--repeat",

Просмотреть файл

@ -3010,16 +3010,14 @@ toolbar#nav-bar {
def runTests(self, options):
"""Prepare, configure, run tests and cleanup"""
self.extraPrefs = parse_preferences(options.extraPrefs)
if "fission.autostart" not in self.extraPrefs:
self.extraPrefs["fission.autostart"] = options.fission
self.extraPrefs["fission.autostart"] = not options.disable_fission
# for test manifest parsing.
mozinfo.update(
{
"a11y_checks": options.a11y_checks,
"e10s": options.e10s,
"fission": self.extraPrefs.get("fission.autostart", True),
"fission": not options.disable_fission,
"headless": options.headless,
# Until the test harness can understand default pref values,
# (https://bugzilla.mozilla.org/show_bug.cgi?id=1577912) this value
@ -3371,7 +3369,7 @@ toolbar#nav-bar {
)
self.log.info(
"runtests.py | Running with fission: {}".format(
mozinfo.info.get("fission", False)
mozinfo.info.get("fission", True)
)
)
self.log.info(

Просмотреть файл

@ -114,12 +114,12 @@ class AndroidEmulatorTest(
},
],
[
["--enable-fission"],
["--disable-fission"],
{
"action": "store_true",
"dest": "enable_fission",
"dest": "disable_fission",
"default": False,
"help": "Run with Fission enabled.",
"help": "Run without Fission enabled.",
},
],
[
@ -187,7 +187,7 @@ class AndroidEmulatorTest(
# GLES3 if we're running WebRender (default)
self.use_gles3 = True
self.disable_e10s = c.get("disable_e10s")
self.enable_fission = c.get("enable_fission")
self.disable_fission = c.get("disable_fission")
self.extra_prefs = c.get("extra_prefs")
def query_abs_dirs(self):
@ -311,6 +311,10 @@ class AndroidEmulatorTest(
else:
self.log("--repeat not supported in {}".format(category), level=WARNING)
# do not add --disable fission if we don't have --disable-e10s
if c["disable_fission"] and category not in ["gtest", "cppunittest"]:
cmd.append("--disable-fission")
cmd.extend(["--setpref={}".format(p) for p in self.extra_prefs])
if not (self.verify_enabled or self.per_test_coverage):
@ -328,8 +332,6 @@ class AndroidEmulatorTest(
elif category not in SUITE_DEFAULT_E10S and c["e10s"]:
cmd.append("--e10s")
if self.enable_fission:
cmd.extend(["--enable-fission"])
if c.get("enable_xorigin_tests"):
cmd.extend(["--enable-xorigin-tests"])

Просмотреть файл

@ -90,12 +90,12 @@ class AndroidHardwareTest(
},
],
[
["--enable-fission"],
["--disable-fission"],
{
"action": "store_true",
"dest": "enable_fission",
"dest": "disable_fission",
"default": False,
"help": "Run with Fission enabled.",
"help": "Run with Fission disabled.",
},
],
[
@ -167,7 +167,7 @@ class AndroidHardwareTest(
self.log_raw_level = c.get("log_raw_level")
self.log_tbpl_level = c.get("log_tbpl_level")
self.disable_e10s = c.get("disable_e10s")
self.enable_fission = c.get("enable_fission")
self.disable_fission = c.get("disable_fission")
self.extra_prefs = c.get("extra_prefs")
self.jittest_flags = c.get("jittest_flags")
@ -295,8 +295,8 @@ class AndroidHardwareTest(
elif category not in SUITE_DEFAULT_E10S and c["e10s"]:
cmd.append("--e10s")
if self.enable_fission:
cmd.extend(["--enable-fission"])
if self.disable_fission and category not in SUITE_NO_E10S:
cmd.append("--disable-fission")
cmd.extend(["--setpref={}".format(p) for p in self.extra_prefs])

Просмотреть файл

@ -296,6 +296,15 @@ class DesktopUnittest(TestingMixin, MercurialScript, MozbaseMixin, CodeCoverageM
"help": "treat harness level timeout as a pass",
},
],
[
["--disable-fission"],
{
"action": "store_true",
"default": False,
"dest": "disable_fission",
"help": "do not run tests with fission enabled.",
},
],
]
+ copy.deepcopy(testing_config_options)
+ copy.deepcopy(code_coverage_config_options)
@ -580,6 +589,14 @@ class DesktopUnittest(TestingMixin, MercurialScript, MozbaseMixin, CodeCoverageM
level=WARNING,
)
# do not add --disable fission if we don't have --disable-e10s
if c["disable_fission"] and suite_category not in [
"gtest",
"cppunittest",
"jittest",
]:
base_cmd.append("--disable-fission")
# Ignore chunking if we have user specified test paths
if not (self.verify_enabled or self.per_test_coverage):
test_paths = self._get_mozharness_test_paths(suite_category, suite)

Просмотреть файл

@ -57,6 +57,15 @@ firefox_ui_tests_config_options = (
"help": "Disable multi-process (e10s) mode when running tests.",
},
],
[
["--disable-fission"],
{
"dest": "disable_fission",
"action": "store_true",
"default": False,
"help": "Disable fission mode when running tests.",
},
],
[
["--setpref"],
{
@ -228,6 +237,9 @@ class FirefoxUIFunctionalTests(TestingMixin, VCSToolsScript, CodeCoverageMixin):
if not self.config.get("e10s"):
cmd.append("--disable-e10s")
if self.config.get("disable_fission"):
cmd.append("--disable-fission")
cmd.extend(["--setpref={}".format(p) for p in self.config.get("extra_prefs")])
if self.symbols_url:

Просмотреть файл

@ -145,6 +145,15 @@ class MarionetteTest(TestingMixin, MercurialScript, TransferMixin, CodeCoverageM
"help": "Permits a software GL implementation (such as LLVMPipe) to use the GL compositor.", # NOQA: E501
},
],
[
["--disable-fission"],
{
"action": "store_true",
"dest": "disable_fission",
"default": False,
"help": "Run the browser without fission enabled",
},
],
]
+ copy.deepcopy(testing_config_options)
+ copy.deepcopy(code_coverage_config_options)
@ -337,6 +346,10 @@ class MarionetteTest(TestingMixin, MercurialScript, TransferMixin, CodeCoverageM
if self.config.get("structured_output"):
cmd.append("--log-raw=-")
if self.config["disable_fission"]:
cmd.append("--disable-fission")
cmd.extend(["--setpref=fission.autostart=false"])
for arg in self.config["suite_definitions"][self.test_suite]["options"]:
cmd.append(arg % config_fmt_args)

Просмотреть файл

@ -56,6 +56,15 @@ telemetry_tests_config_options = (
"help": "Disable multi-process (e10s) mode when running tests.",
},
],
[
["--disable-fission"],
{
"dest": "disable_fission",
"action": "store_true",
"default": False,
"help": "Disable fission mode when running tests.",
},
],
[
["--setpref"],
{
@ -119,6 +128,7 @@ class TelemetryTests(TestingMixin, VCSToolsScript, CodeCoverageMixin):
self.installer_url = self.config.get("installer_url")
self.test_packages_url = self.config.get("test_packages_url")
self.test_url = self.config.get("test_url")
self.disable_fission = self.config.get("disable_fission")
if not self.test_url and not self.test_packages_url:
self.fatal("You must use --test-url, or --test-packages-url")
@ -196,6 +206,8 @@ class TelemetryTests(TestingMixin, VCSToolsScript, CodeCoverageMixin):
if self.symbols_path:
cmd.extend(["--symbols-path", self.symbols_path])
if self.disable_fission:
cmd.append("--disable-fission")
cmd.extend(["--setpref={}".format(p) for p in self.config["extra_prefs"]])
if not self.config["e10s"]:

Просмотреть файл

@ -54,6 +54,15 @@ class WebPlatformTest(TestingMixin, MercurialScript, CodeCoverageMixin, AndroidM
"help": "Run without e10s enabled",
},
],
[
["--disable-fission"],
{
"action": "store_true",
"dest": "disable_fission",
"default": False,
"help": "Run without fission enabled",
},
],
[
["--total-chunks"],
{
@ -281,9 +290,6 @@ class WebPlatformTest(TestingMixin, MercurialScript, CodeCoverageMixin, AndroidM
mozinfo.find_and_update_from_json(dirs["abs_test_install_dir"])
# Default to fission disabled
fission_enabled = "fission.autostart=true" in c["extra_prefs"]
raw_log_file, error_summary_file = self.get_indexed_logs(
dirs["abs_blob_upload_dir"], "wpt"
)
@ -314,7 +320,7 @@ class WebPlatformTest(TestingMixin, MercurialScript, CodeCoverageMixin, AndroidM
self.is_android
or mozinfo.info["tsan"]
or "wdspec" in test_types
or fission_enabled
or not c["disable_fission"]
# Bug 1392106 - skia error 0x80070005: Access is denied.
or is_windows_7
and mozinfo.info["debug"]
@ -344,8 +350,8 @@ class WebPlatformTest(TestingMixin, MercurialScript, CodeCoverageMixin, AndroidM
if c["extra_prefs"]:
cmd.extend(["--setpref={}".format(p) for p in c["extra_prefs"]])
if not fission_enabled and "fission.autostart=false" not in c["extra_prefs"]:
cmd.append("--setpref=fission.autostart=false")
if c["disable_fission"]:
cmd.append("--disable-fission")
if not c["e10s"]:
cmd.append("--disable-e10s")

Просмотреть файл

@ -93,7 +93,7 @@ def browser_kwargs(logger, test_type, run_info_data, config, **kwargs):
"certutil_binary": kwargs["certutil_binary"],
"ca_certificate_path": config.ssl_config["ca_cert_path"],
"e10s": kwargs["gecko_e10s"],
"enable_fission": run_info_data["fission"],
"disable_fission": kwargs["disable_fission"],
"stackfix_dir": kwargs["stackfix_dir"],
"binary_args": kwargs["binary_args"],
"timeout_multiplier": get_timeout_multiplier(test_type,
@ -145,6 +145,7 @@ def executor_kwargs(logger, test_type, test_environment, run_info_data,
executor_kwargs["ccov"] = run_info_data.get("ccov", False)
executor_kwargs["browser_version"] = run_info_data.get("browser_version")
executor_kwargs["debug_test"] = kwargs["debug_test"]
executor_kwargs["disable_fission"] = kwargs["disable_fission"]
return executor_kwargs
@ -174,18 +175,13 @@ def run_info_extras(**kwargs):
pref_value = get_bool_pref_if_exists(pref)
return pref_value if pref_value is not None else False
# Default fission to on, unless we get --[no-]enable-fission or
# --set-pref fission.autostart=[true|false]
enable_fission = [item for item in [kwargs.get("enable_fission"),
get_bool_pref_if_exists("fission.autostart"),
True] if item is not None][0]
# Default fission to on, unless we get --disable-fission
rv = {"e10s": kwargs["gecko_e10s"],
"wasm": kwargs.get("wasm", True),
"verify": kwargs["verify"],
"headless": kwargs.get("headless", False) or "MOZ_HEADLESS" in os.environ,
"fission": enable_fission,
"sessionHistoryInParent": (enable_fission or
"fission": not kwargs.get("disable_fission"),
"sessionHistoryInParent": (not kwargs.get("disable_fission") or
get_bool_pref("fission.sessionHistoryInParent")),
"swgl": get_bool_pref("gfx.webrender.software")}
@ -550,7 +546,7 @@ class FirefoxOutputHandler(OutputHandler):
class ProfileCreator:
def __init__(self, logger, prefs_root, config, test_type, extra_prefs, e10s,
enable_fission, debug_test, browser_channel, binary, certutil_binary,
disable_fission, debug_test, browser_channel, binary, certutil_binary,
ca_certificate_path):
self.logger = logger
self.prefs_root = prefs_root
@ -558,7 +554,7 @@ class ProfileCreator:
self.test_type = test_type
self.extra_prefs = extra_prefs
self.e10s = e10s
self.enable_fission = enable_fission
self.disable_fission = disable_fission
self.debug_test = debug_test
self.browser_channel = browser_channel
self.ca_certificate_path = ca_certificate_path
@ -634,9 +630,8 @@ class ProfileCreator:
if self.e10s:
profile.set_preferences({"browser.tabs.remote.autostart": True})
if self.enable_fission:
profile.set_preferences({"fission.autostart": True})
else:
profile.set_preferences({"fission.autostart": True})
if self.disable_fission:
profile.set_preferences({"fission.autostart": False})
if self.test_type in ("reftest", "print-reftest"):
@ -648,7 +643,7 @@ class ProfileCreator:
# Bug 1262954: winxp + e10s, disable hwaccel
if (self.e10s and platform.system() in ("Windows", "Microsoft") and
"5.1" in platform.version()):
self.profile.set_preferences({"layers.acceleration.disabled": True})
profile.set_preferences({"layers.acceleration.disabled": True})
if self.debug_test:
profile.set_preferences({"devtools.console.stdout.content": True})
@ -710,7 +705,7 @@ class FirefoxBrowser(Browser):
def __init__(self, logger, binary, prefs_root, test_type, extra_prefs=None, debug_info=None,
symbols_path=None, stackwalk_binary=None, certutil_binary=None,
ca_certificate_path=None, e10s=False, enable_fission=True,
ca_certificate_path=None, e10s=False, disable_fission=False,
stackfix_dir=None, binary_args=None, timeout_multiplier=None, leak_check=False,
asan=False, stylo_threads=1, chaos_mode_flags=None, config=None,
browser_channel="nightly", headless=None, preload_browser=False,
@ -740,7 +735,7 @@ class FirefoxBrowser(Browser):
test_type,
extra_prefs,
e10s,
enable_fission,
disable_fission,
debug_test,
browser_channel,
binary,
@ -820,7 +815,7 @@ class FirefoxWdSpecBrowser(WebDriverBrowser):
def __init__(self, logger, binary, prefs_root, webdriver_binary, webdriver_args,
extra_prefs=None, debug_info=None, symbols_path=None, stackwalk_binary=None,
certutil_binary=None, ca_certificate_path=None, e10s=False,
enable_fission=False, stackfix_dir=None, leak_check=False,
disable_fission=False, stackfix_dir=None, leak_check=False,
asan=False, stylo_threads=1, chaos_mode_flags=None, config=None,
browser_channel="nightly", headless=None, debug_test=False, **kwargs):
@ -844,7 +839,7 @@ class FirefoxWdSpecBrowser(WebDriverBrowser):
"wdspec",
extra_prefs,
e10s,
enable_fission,
disable_fission,
debug_test,
browser_channel,
binary,

Просмотреть файл

@ -60,6 +60,7 @@ def browser_kwargs(logger, test_type, run_info_data, config, **kwargs):
run_info_data,
**kwargs),
"e10s": run_info_data["e10s"],
"disable_fission": kwargs["disable_fission"],
# desktop only
"leak_check": False,
"stylo_threads": kwargs["stylo_threads"],
@ -110,9 +111,9 @@ def get_environ(stylo_threads, chaos_mode_flags):
class ProfileCreator(FirefoxProfileCreator):
def __init__(self, logger, prefs_root, config, test_type, extra_prefs,
enable_fission, debug_test, browser_channel, certutil_binary, ca_certificate_path):
disable_fission, debug_test, browser_channel, certutil_binary, ca_certificate_path):
super().__init__(logger, prefs_root, config, test_type, extra_prefs,
True, enable_fission, debug_test, browser_channel, None,
True, disable_fission, debug_test, browser_channel, None,
certutil_binary, ca_certificate_path)
def _set_required_prefs(self, profile):
@ -139,6 +140,10 @@ class ProfileCreator(FirefoxProfileCreator):
"layout.testing.overlay-scrollbars.always-visible": True,
})
profile.set_preferences({"fission.autostart": True})
if self.disable_fission:
profile.set_preferences({"fission.autostart": False})
class FirefoxAndroidBrowser(Browser):
init_timeout = 300
@ -151,7 +156,7 @@ class FirefoxAndroidBrowser(Browser):
binary_args=None, timeout_multiplier=None, leak_check=False, asan=False,
stylo_threads=1, chaos_mode_flags=None, config=None, browser_channel="nightly",
install_fonts=False, tests_root=None, specialpowers_path=None, adb_binary=None,
debug_test=False, **kwargs):
debug_test=False, disable_fission=False, **kwargs):
super().__init__(logger)
self.prefs_root = prefs_root
@ -177,13 +182,14 @@ class FirefoxAndroidBrowser(Browser):
self.tests_root = tests_root
self.specialpowers_path = specialpowers_path
self.adb_binary = adb_binary
self.disable_fission = disable_fission
self.profile_creator = ProfileCreator(logger,
prefs_root,
config,
test_type,
extra_prefs,
False,
disable_fission,
debug_test,
browser_channel,
certutil_binary,
@ -307,7 +313,7 @@ class FirefoxAndroidWdSpecBrowser(FirefoxWdSpecBrowser):
def __init__(self, logger, prefs_root, webdriver_binary, webdriver_args,
extra_prefs=None, debug_info=None, symbols_path=None, stackwalk_binary=None,
certutil_binary=None, ca_certificate_path=None, e10s=False,
enable_fission=False, stackfix_dir=None, leak_check=False,
disable_fission=False, stackfix_dir=None, leak_check=False,
asan=False, stylo_threads=1, chaos_mode_flags=None, config=None,
browser_channel="nightly", headless=None,
package_name="org.mozilla.geckoview.test_runner", device_serial=None,
@ -317,7 +323,7 @@ class FirefoxAndroidWdSpecBrowser(FirefoxWdSpecBrowser):
extra_prefs=extra_prefs, debug_info=debug_info, symbols_path=symbols_path,
stackwalk_binary=stackwalk_binary, certutil_binary=certutil_binary,
ca_certificate_path=ca_certificate_path, e10s=e10s,
enable_fission=enable_fission, stackfix_dir=stackfix_dir,
disable_fission=disable_fission, stackfix_dir=stackfix_dir,
leak_check=leak_check, asan=asan, stylo_threads=stylo_threads,
chaos_mode_flags=chaos_mode_flags, config=config,
browser_channel=browser_channel, headless=headless, **kwargs)

Просмотреть файл

@ -289,10 +289,7 @@ scheme host and port.""")
default=None, help="Don't preload a gecko instance for faster restarts")
gecko_group.add_argument("--disable-e10s", dest="gecko_e10s", action="store_false", default=True,
help="Run tests without electrolysis preferences")
gecko_group.add_argument("--enable-fission", dest="enable_fission", action="store_true", default=None,
help="Enable fission in Gecko (defaults to enabled; "
"this option only exists for backward compatibility).")
gecko_group.add_argument("--no-enable-fission", dest="enable_fission", action="store_false",
gecko_group.add_argument("--disable-fission", dest="disable_fission", action="store_true", default=False,
help="Disable fission in Gecko.")
gecko_group.add_argument("--stackfix-dir", dest="stackfix_dir", action="store",
help="Path to directory containing assertion stack fixing scripts")

Просмотреть файл

@ -479,6 +479,14 @@ class XPCShellRemote(xpcshell.XPCShellTests, object):
self.initDir(self.remoteMinidumpRootDir)
self.initDir(self.remoteLogFolder)
eprefs = options.get("extraPrefs") or []
if options.get("disableFission"):
eprefs.append("fission.autostart=false")
else:
# should be by default, just in case
eprefs.append("fission.autostart=true")
options["extraPrefs"] = eprefs
# data that needs to be passed to the RemoteXPCShellTestThread
self.mobileArgs = {
"device": self.device,

Просмотреть файл

@ -1647,7 +1647,16 @@ class XPCShellTests(object):
self.todoCount = 0
self.setAbsPath()
prefs = self.buildPrefsFile(options.get("extraPrefs") or [])
eprefs = options.get("extraPrefs") or []
# enable fission by default
if options.get("disableFission"):
eprefs.append("fission.autostart=false")
else:
# should be by default, just in case
eprefs.append("fission.autostart=true")
prefs = self.buildPrefsFile(eprefs)
self.buildXpcsRunArgs()
self.event = Event()

Просмотреть файл

@ -313,6 +313,13 @@ def add_common_arguments(parser):
dest="crashAsPass",
help="Harness level crashes will be treated as passing",
)
parser.add_argument(
"--disable-fission",
action="store_true",
default=False,
dest="disableFission",
help="disable fission mode (back to e10s || 1proc)",
)
def add_remote_arguments(parser):

Просмотреть файл

@ -22,6 +22,10 @@ class TelemetryTestRunner(BaseMarionetteTestRunner):
prefs = kwargs.pop("prefs", {})
prefs["fission.autostart"] = True
if kwargs["disable_fission"]:
prefs["fission.autostart"] = False
# Set Firefox Client Telemetry specific preferences
prefs.update(
{