Source code

Revision control

Copy as Markdown

Other Tools

import copy
import os
import pathlib
from unittest import mock
import conftest
import mozunit
import pytest
import six
from talos.config import (
DEFAULTS,
ConfigurationError,
get_active_tests,
get_browser_config,
get_config,
get_configs,
get_test,
)
from talos.test import PageloaderTest
ORIGINAL_DEFAULTS = copy.deepcopy(DEFAULTS)
class mock_test(PageloaderTest):
keys = [
"tpmanifest",
"tpcycles",
"tppagecycles",
"tprender",
"tpchrome",
"tpmozafterpaint",
"fnbpaint",
"tploadnocache",
"firstpaint",
"userready",
"testeventmap",
"base_vs_ref",
"mainthread",
"resolution",
"cycles",
"gecko_profile",
"gecko_profile_interval",
"gecko_profile_entries",
"tptimeout",
"win_counters",
"linux_counters",
"mac_counters",
"tpscrolltest",
"xperf_counters",
"timeout",
"shutdown",
"responsiveness",
"profile_path",
"xperf_providers",
"xperf_user_providers",
"xperf_stackwalk",
"format_pagename",
"filters",
"preferences",
"extensions",
"setup",
"cleanup",
"lower_is_better",
"alert_threshold",
"unit",
"webextensions",
"profile",
"tpmozafterpaint",
"url",
]
tpmozafterpaint = "value"
firstpaint = "value"
userready = "value"
fnbpaint = "value"
class Test_get_active_tests(object):
def test_raises_exception_for_undefined_test(self):
with pytest.raises(ConfigurationError):
get_active_tests({"activeTests": "undefined_test"})
with pytest.raises(ConfigurationError):
get_active_tests({"activeTests": " undefined_test "})
with pytest.raises(ConfigurationError):
get_active_tests({"activeTests": "undef_test:undef_test2:undef_test3"})
class Test_get_test(object):
global_overrides = {
"tpmozafterpaint": "overriden",
"firstpaint": "overriden",
"userready": "overriden",
"fnbpaint": "overriden",
}
config = {"webserver": "test_webserver"}
def test_doesnt_override_specific_keys_unless_they_are_null(self):
test_instance = mock_test()
test_dict = get_test({}, self.global_overrides, [], test_instance)
assert test_dict["tpmozafterpaint"] == "value"
assert test_dict["firstpaint"] == "value"
assert test_dict["userready"] == "value"
assert test_dict["fnbpaint"] == "value"
# nulls still get overriden
test_instance = mock_test(
tpmozafterpaint=None, firstpaint=None, userready=None, fnbpaint=None
)
test_dict = get_test({}, self.global_overrides, [], test_instance)
assert test_dict["tpmozafterpaint"] == "overriden"
assert test_dict["firstpaint"] == "overriden"
assert test_dict["userready"] == "overriden"
assert test_dict["fnbpaint"] == "overriden"
@mock.patch("talos.config.open", create=True)
def test_interpolate_keys(self, mock_open):
mock_open.return_value = mock.MagicMock(readlines=lambda: [])
test_instance = mock_test(
url="${talos}/test_page.html", tpmanifest="${talos}/file.manifest"
)
test_dict = get_test(self.config, self.global_overrides, [], test_instance)
assert test_dict["url"].startswith("http://test_webserver/")
assert "${talos}" not in test_dict["url"]
assert "${talos}" not in test_dict["tpmanifest"]
def test_build_tpmanifest(self, tmpdir):
manifest_file = tmpdir.join("file.manifest").ensure(file=True)
test_instance = mock_test(url="test_page.html", tpmanifest=str(manifest_file))
test_dict = get_test(self.config, self.global_overrides, [], test_instance)
assert test_dict["tpmanifest"].endswith(".develop")
def test_add_counters(self):
test_instance = mock_test(
linux_counters=None,
mac_counters=[],
win_counters=["counter_a"],
xperf_counters=["counter_a", "counter_extra"],
)
counters = ["counter_a", "counter_b", "counter_c"]
test_dict = get_test(
self.config, self.global_overrides, counters, test_instance
)
assert test_dict["linux_counters"] == counters
assert test_dict["mac_counters"] == counters
assert test_dict["win_counters"] == counters
assert set(test_dict["xperf_counters"]) == set(counters + ["counter_extra"])
class Test_get_browser_config(object):
required = (
"extensions",
"browser_path",
"browser_wait",
"extra_args",
"buildid",
"env",
"init_url",
"webserver",
)
optional = [
"bcontroller_config",
"child_process",
"debug",
"debugger",
"debugger_args",
"develop",
"e10s",
"process",
"framework",
"repository",
"sourcestamp",
"symbols_path",
"test_timeout",
"xperf_path",
"error_filename",
"no_upload_results",
"subtests",
"preferences",
]
def test_that_contains_title(self):
config_no_optionals = dict.fromkeys(self.required, "")
config_no_optionals.update(title="is_mandatory")
browser_config = get_browser_config(config_no_optionals)
assert browser_config["title"] == "is_mandatory"
def test_raises_keyerror_for_missing_title(self):
config_missing_title = dict.fromkeys(self.required, "")
with pytest.raises(KeyError):
get_browser_config(config_missing_title)
def test_raises_keyerror_for_required_keys(self):
config_missing_required = dict.fromkeys(self.required, "")
config_missing_required.update(title="is_mandatory")
del config_missing_required["extensions"]
with pytest.raises(KeyError):
get_browser_config(config_missing_required)
def test_doesnt_raise_on_missing_optionals(self):
config_missing_optionals = dict.fromkeys(self.required, "")
config_missing_optionals["title"] = "is_mandatory"
try:
get_browser_config(config_missing_optionals)
except KeyError:
pytest.fail("Must not raise exception on missing optional")
class Test_get_config(object):
@classmethod
def setup_class(cls):
cls.argv = "--suite other-e10s --mainthread -e /some/random/path".split()
cls.argv_unprovided_tests = "-e /some/random/path".split()
cls.argv_unknown_suite = (
"--suite random-unknown-suite -e /some/random/path".split()
)
cls.argv_overrides_defaults = """
--suite other-e10s
--executablePath /some/random/path
--cycles 20
--gecko-profile
--gecko-profile-interval 1000
--gecko-profile-entries 1000
--mainthread
--tpcycles 20
--mozAfterPaint
--firstPaint
--firstNonBlankPaint
--userReady
--tppagecycles 20
""".split()
cls.argv_ts_paint = "--activeTests ts_paint -e /some/random/path".split()
cls.argv_ts_paint_webext = (
"--activeTests ts_paint_webext -e /some/random/path".split()
)
cls.argv_ts_paint_heavy = (
"--activeTests ts_paint_heavy -e /some/random/path".split()
)
cls.argv_sessionrestore = (
"--activeTests sessionrestore -e /some/random/path".split()
)
cls.argv_sessionrestore_no_auto_restore = (
"--activeTests sessionrestore_no_auto_restore -e /some/random/path".split()
)
cls.argv_sessionrestore_many_windows = (
"--activeTests sessionrestore_many_windows -e /some/random/path".split()
)
cls.argv_tresize = "--activeTests tresize -e /some/random/path".split()
cls.argv_cpstartup = "--activeTests cpstartup -e /some/random/path".split()
cls.argv_tabpaint = "--activeTests tabpaint -e /some/random/path".split()
cls.argv_tabswitch = "--activeTests tabswitch -e /some/random/path".split()
cls.argv_tart = "--activeTests tart -e /some/random/path".split()
cls.argv_damp = "--activeTests damp -e /some/random/path".split()
cls.argv_glterrain = "--activeTests glterrain -e /some/random/path".split()
cls.argv_glvideo = "--activeTests glvideo -e /some/random/path".split()
cls.argv_canvas2dvideo = (
"--activeTests canvas2dvideo -e /some/random/path".split()
)
cls.argv_offscreencanvas_webcodecs_main_webgl_h264 = "--activeTests offscreencanvas_webcodecs_main_webgl_h264 -e /some/random/path".split()
cls.argv_offscreencanvas_webcodecs_main_webgl_vp9 = "--activeTests offscreencanvas_webcodecs_main_webgl_vp9 -e /some/random/path".split()
cls.argv_offscreencanvas_webcodecs_main_webgl_av1 = "--activeTests offscreencanvas_webcodecs_main_webgl_av1 -e /some/random/path".split()
cls.argv_offscreencanvas_webcodecs_worker_webgl_h264 = "--activeTests offscreencanvas_webcodecs_worker_webgl_h264 -e /some/random/path".split()
cls.argv_offscreencanvas_webcodecs_worker_webgl_vp9 = "--activeTests offscreencanvas_webcodecs_worker_webgl_vp9 -e /some/random/path".split()
cls.argv_offscreencanvas_webcodecs_worker_webgl_av1 = "--activeTests offscreencanvas_webcodecs_worker_webgl_av1 -e /some/random/path".split()
cls.argv_offscreencanvas_webcodecs_main_2d_h264 = "--activeTests offscreencanvas_webcodecs_main_2d_h264 -e /some/random/path".split()
cls.argv_offscreencanvas_webcodecs_main_2d_vp9 = "--activeTests offscreencanvas_webcodecs_main_2d_vp9 -e /some/random/path".split()
cls.argv_offscreencanvas_webcodecs_main_2d_av1 = "--activeTests offscreencanvas_webcodecs_main_2d_av1 -e /some/random/path".split()
cls.argv_offscreencanvas_webcodecs_worker_2d_h264 = "--activeTests offscreencanvas_webcodecs_worker_2d_h264 -e /some/random/path".split()
cls.argv_offscreencanvas_webcodecs_worker_2d_vp9 = "--activeTests offscreencanvas_webcodecs_worker_2d_vp9 -e /some/random/path".split()
cls.argv_offscreencanvas_webcodecs_worker_2d_av1 = "--activeTests offscreencanvas_webcodecs_worker_2d_av1 -e /some/random/path".split()
cls.argv_tp5n = "--activeTests tp5n -e /some/random/path".split()
cls.argv_tp5o = "--activeTests tp5o -e /some/random/path".split()
cls.argv_tp5o_webext = "--activeTests tp5o_webext -e /some/random/path".split()
cls.argv_tp5o_scroll = "--activeTests tp5o_scroll -e /some/random/path".split()
cls.argv_v8_7 = "--activeTests v8_7 -e /some/random/path".split()
cls.argv_kraken = "--activeTests kraken -e /some/random/path".split()
cls.argv_basic_compositor_video = (
"--activeTests basic_compositor_video -e /some/random/path".split()
)
cls.argv_dromaeo_css = "--activeTests dromaeo_css -e /some/random/path".split()
cls.argv_dromaeo_dom = "--activeTests dromaeo_dom -e /some/random/path".split()
cls.argv_tsvgm = "--activeTests tsvgm -e /some/random/path".split()
cls.argv_tsvgx = "--activeTests tsvgx -e /some/random/path".split()
cls.argv_tsvg_static = "--activeTests tsvg_static -e /some/random/path".split()
cls.argv_tsvgr_opacity = (
"--activeTests tsvgr_opacity -e /some/random/path".split()
)
cls.argv_tscrollx = "--activeTests tscrollx -e /some/random/path".split()
cls.argv_a11yr = "--activeTests a11yr -e /some/random/path".split()
cls.argv_perf_reftest = (
"--activeTests perf_reftest -e /some/random/path".split()
)
cls.argv_perf_reftest_singletons = (
"--activeTests perf_reftest_singletons -e /some/random/path".split()
)
cls.argv_pdfpaint = "--activeTests pdfpaint -e /some/random/path".split()
@classmethod
def teardown_class(cls):
conftest.remove_develop_files()
def test_correctly_overrides_test_valus(self):
config = get_config(self.argv)
assert bool(config) is True
# no null values
null_keys = [key for key, val in six.iteritems(config) if val is None]
assert len(null_keys) == 0
# expected keys are there
assert config["browser_path"] == "/some/random/path"
assert config["suite"] == "other-e10s"
assert config["mainthread"] is True
# default values overriden
config = get_config(self.argv_overrides_defaults)
assert config["basetest"] == ORIGINAL_DEFAULTS["basetest"]
def test_config_has_tests(self):
config = get_config(self.argv)
assert len(config["tests"]) > 0
def test_global_variable_isnt_modified(self):
get_config(self.argv)
assert ORIGINAL_DEFAULTS == DEFAULTS
def test_raises_except_if_unprovided_tests_on_cli(self):
with pytest.raises(ConfigurationError):
get_config(self.argv_unprovided_tests)
with pytest.raises(ConfigurationError):
get_config(self.argv_unknown_suite)
def test_ts_paint_has_expected_attributes(self):
config = get_config(self.argv_ts_paint)
test_config = config["tests"][0]
assert test_config["name"] == "ts_paint"
assert test_config["cycles"] == 20
assert test_config["timeout"] == 150
assert test_config["gecko_profile_startup"] is True
assert test_config["gecko_profile_entries"] == 10000000
assert (
test_config["url"] != "startup_test/tspaint_test.html"
) # interpolation was done
assert test_config["xperf_counters"] == []
# TODO: these don't work; is this a bug?
# assert test_config['win7_counters'] == []
assert test_config["filters"] is not None
assert test_config["tpmozafterpaint"] is True
# assert test_config['mainthread'] is False
# assert test_config['responsiveness'] is False
# assert test_config['unit'] == 'ms'
def test_ts_paint_webext_has_expected_attributes(self):
config = get_config(self.argv_ts_paint_webext)
test_config = config["tests"][0]
assert test_config["name"] == "ts_paint_webext"
assert test_config["cycles"] == 20
assert test_config["timeout"] == 150
assert test_config["gecko_profile_startup"] is True
assert test_config["gecko_profile_entries"] == 10000000
assert (
test_config["url"] != "startup_test/tspaint_test.html"
) # interpolation was done
assert test_config["xperf_counters"] == []
# TODO: these don't work; is this a bug?
# assert test_config['win7_counters'] == []
assert test_config["filters"] is not None
assert test_config["tpmozafterpaint"] is True
# assert test_config['mainthread'] is False
# assert test_config['responsiveness'] is False
# assert test_config['unit'] == 'ms'
# TODO: this isn't overriden
# assert test_config['webextensions'] != '${talos}/webextensions/dummy/dummy-signed.xpi'
assert test_config["preferences"] == {"xpinstall.signatures.required": False}
def test_ts_paint_heavy_has_expected_attributes(self):
config = get_config(self.argv_ts_paint_heavy)
test_config = config["tests"][0]
assert test_config["name"] == "ts_paint_heavy"
assert test_config["cycles"] == 20
assert test_config["timeout"] == 150
assert test_config["gecko_profile_startup"] is True
assert test_config["gecko_profile_entries"] == 10000000
assert (
test_config["url"] != "startup_test/tspaint_test.html"
) # interpolation was done
assert test_config["xperf_counters"] == []
# TODO: this doesn't work; is this a bug?
# assert test_config['win7_counters'] == []
assert test_config["filters"] is not None
assert test_config["tpmozafterpaint"] is True
# assert test_config['mainthread'] is False
# assert test_config['responsiveness'] is False
# assert test_config['unit'] == 'ms'
assert test_config["profile"] == "simple"
def test_sessionrestore_has_expected_attributes(self):
config = get_config(self.argv_sessionrestore)
test_config = config["tests"][0]
assert test_config["name"] == "sessionrestore"
assert test_config["cycles"] == 10
assert test_config["timeout"] == 900
assert test_config["gecko_profile_startup"] is True
assert test_config["gecko_profile_entries"] == 10000000
assert test_config["reinstall"] == [
"sessionstore.jsonlz4",
"sessionstore.js",
"sessionCheckpoints.json",
]
assert test_config["url"] == "about:home"
assert test_config["preferences"] == {"browser.startup.page": 3}
# assert test_config['unit'] == 'ms'
def test_sesssionrestore_no_auto_restore_has_expected_attributes(self):
config = get_config(self.argv_sessionrestore_no_auto_restore)
test_config = config["tests"][0]
assert test_config["name"] == "sessionrestore_no_auto_restore"
assert test_config["cycles"] == 10
assert test_config["timeout"] == 900
assert test_config["gecko_profile_startup"] is True
assert test_config["gecko_profile_entries"] == 10000000
assert test_config["reinstall"] == [
"sessionstore.jsonlz4",
"sessionstore.js",
"sessionCheckpoints.json",
]
assert test_config["url"] == "about:home"
assert test_config["preferences"] == {"browser.startup.page": 1}
# assert test_config['unit'] == 'ms'
def test_sessionrestore_many_windows_has_expected_attributes(self):
config = get_config(self.argv_sessionrestore_many_windows)
test_config = config["tests"][0]
assert test_config["name"] == "sessionrestore_many_windows"
assert test_config["cycles"] == 10
assert test_config["timeout"] == 900
assert test_config["gecko_profile_startup"] is True
assert test_config["gecko_profile_entries"] == 10000000
assert test_config["reinstall"] == [
"sessionstore.jsonlz4",
"sessionstore.js",
"sessionCheckpoints.json",
]
assert test_config["url"] == "about:home"
assert test_config["preferences"] == {"browser.startup.page": 3}
# assert test_config['unit'] == 'ms'
def test_tresize_has_expected_attributes(self):
config = get_config(self.argv_tresize)
test_config = config["tests"][0]
assert test_config["name"] == "tresize"
assert test_config["cycles"] == 20
assert (
test_config["url"] != "startup_test/tresize/addon/content/tresize-test.html"
)
assert test_config["timeout"] == 150
assert test_config["gecko_profile_interval"] == 2
assert test_config["gecko_profile_entries"] == 1000000
assert test_config["tpmozafterpaint"] is True
assert test_config["filters"] is not None
# assert test_config['unit'] == 'ms'
def test_cpstartup_has_expected_attributes(self):
config = get_config(self.argv_cpstartup)
test_config = config["tests"][0]
assert test_config["name"] == "cpstartup"
assert test_config["tpcycles"] == 1
assert (
test_config["tpmanifest"] != "${talos}/tests/cpstartup/cpstartup.manifest"
)
assert test_config["tppagecycles"] == 20
assert test_config["gecko_profile_entries"] == 1000000
assert test_config["tploadnocache"] is True
assert test_config["unit"] == "ms"
assert test_config["preferences"] == {
"addon.test.cpstartup.webserver": "${webserver}",
"browser.link.open_newwindow": 3,
"browser.link.open_newwindow.restriction": 2,
}
def test_tabpaint_has_expected_attributes(self):
config = get_config(self.argv_tabpaint)
test_config = config["tests"][0]
assert test_config["name"] == "tabpaint"
assert test_config["tpcycles"] == 1
assert test_config["tpmanifest"] != "${talos}/tests/tabpaint/tabpaint.manifest"
assert test_config["tppagecycles"] == 20
assert test_config["gecko_profile_entries"] == 1000000
assert test_config["tploadnocache"] is True
assert test_config["unit"] == "ms"
assert test_config["preferences"] == {
"browser.link.open_newwindow": 3,
"browser.link.open_newwindow.restriction": 2,
}
def test_tabswitch_has_expected_attributes(self):
config = get_config(self.argv_tabswitch)
test_config = config["tests"][0]
assert test_config["name"] == "tabswitch"
assert test_config["tpcycles"] == 1
assert (
test_config["tpmanifest"] != "${talos}/tests/tabswitch/tabswitch.manifest"
)
assert test_config["tppagecycles"] == 5
assert test_config["gecko_profile_entries"] == 5000000
assert test_config["tploadnocache"] is True
assert test_config["preferences"] == {
"addon.test.tabswitch.urlfile": os.path.join(
"${talos}", "tests", "tp5o.html"
),
"addon.test.tabswitch.webserver": "${webserver}",
"addon.test.tabswitch.maxurls": -1,
}
assert test_config["unit"] == "ms"
def test_tart_has_expected_attributes(self):
config = get_config(self.argv_tart)
test_config = config["tests"][0]
assert test_config["name"] == "tart"
assert test_config["tpmanifest"] != "${talos}/tests/tart/tart.manifest"
assert test_config["tpcycles"] == 1
assert test_config["tppagecycles"] == 25
assert test_config["tploadnocache"] is True
assert test_config["tpmozafterpaint"] is False
assert test_config["gecko_profile_interval"] == 10
assert test_config["gecko_profile_entries"] == 1000000
assert "win_counters" not in test_config
assert "linux_counters" not in test_config
assert "mac_counters" not in test_config
assert test_config["preferences"] == {
"layout.frame_rate": 0,
"docshell.event_starvation_delay_hint": 1,
"dom.send_after_paint_to_content": False,
}
assert test_config["filters"] is not None
assert test_config["unit"] == "ms"
def test_damp_has_expected_attributes(self):
config = get_config(self.argv_damp)
test_config = config["tests"][0]
assert test_config["name"] == "damp"
assert test_config["tpmanifest"] != "${talos}/tests/devtools/damp.manifest"
assert test_config["cycles"] == 5
assert test_config["tpcycles"] == 1
assert test_config["tppagecycles"] == 5
assert test_config["tploadnocache"] is True
assert test_config["tpmozafterpaint"] is False
assert test_config["gecko_profile_interval"] == 10
assert test_config["gecko_profile_entries"] == 1000000
assert "win_counters" not in test_config
assert "linux_counters" not in test_config
assert "mac_counters" not in test_config
assert test_config["filters"] is not None
assert test_config["preferences"] == {"devtools.memory.enabled": True}
assert test_config["unit"] == "ms"
def test_glterrain_has_expected_attributes(self):
config = get_config(self.argv_glterrain)
test_config = config["tests"][0]
assert test_config["name"] == "glterrain"
assert test_config["tpmanifest"] != "${talos}/tests/webgl/glterrain.manifest"
assert test_config["tpcycles"] == 1
assert test_config["tppagecycles"] == 25
assert test_config["tploadnocache"] is True
assert test_config["tpmozafterpaint"] is False
assert test_config["tpchrome"] is False
assert test_config["gecko_profile_interval"] == 10
assert test_config["gecko_profile_entries"] == 2000000
assert "win_counters" not in test_config
assert "linux_counters" not in test_config
assert "mac_counters" not in test_config
assert test_config["preferences"] == {
"layout.frame_rate": 0,
"docshell.event_starvation_delay_hint": 1,
"dom.send_after_paint_to_content": False,
}
assert test_config["filters"] is not None
assert test_config["unit"] == "frame interval"
def test_glvideo_has_expected_attributes(self):
config = get_config(self.argv_glvideo)
test_config = config["tests"][0]
assert test_config["name"] == "glvideo"
assert test_config["tpmanifest"] != "${talos}/tests/webgl/glvideo.manifest"
assert test_config["tpcycles"] == 1
assert test_config["tppagecycles"] == 5
assert test_config["tploadnocache"] is True
assert test_config["tpmozafterpaint"] is False
assert test_config["tpchrome"] is False
assert test_config["gecko_profile_interval"] == 2
assert test_config["gecko_profile_entries"] == 2000000
assert "win_counters" not in test_config
assert "linux_counters" not in test_config
assert "mac_counters" not in test_config
assert test_config["filters"] is not None
assert test_config["unit"] == "ms"
def test_canvas2dvideo_has_expected_attributes(self):
config = get_config(self.argv_canvas2dvideo)
test_config = config["tests"][0]
assert test_config["name"] == "canvas2dvideo"
assert (
test_config["tpmanifest"]
!= "${talos}/tests/canvas2d/canvas2dvideo.manifest"
)
assert test_config["tpcycles"] == 1
assert test_config["tppagecycles"] == 5
assert test_config["tploadnocache"] is True
assert test_config["tpmozafterpaint"] is False
assert test_config["tpchrome"] is False
assert test_config["gecko_profile_interval"] == 2
assert test_config["gecko_profile_entries"] == 2000000
assert "win_counters" not in test_config
assert "linux_counters" not in test_config
assert "mac_counters" not in test_config
assert test_config["filters"] is not None
assert test_config["unit"] == "ms"
def test_offscreencanvas_webcodecs_main_webgl_h264_has_expected_attributes(self):
config = get_config(self.argv_offscreencanvas_webcodecs_main_webgl_h264)
test_config = config["tests"][0]
assert test_config["name"] == "offscreencanvas_webcodecs_main_webgl_h264"
assert (
test_config["tpmanifest"]
!= "${talos}/tests/offscreencanvas/offscreencanvas_webcodecs_main_webgl_h264.manifest"
)
assert test_config["tpcycles"] == 1
assert test_config["tppagecycles"] == 5
assert test_config["tploadnocache"] is True
assert test_config["tpmozafterpaint"] is False
assert test_config["tpchrome"] is False
assert test_config["gecko_profile_interval"] == 2
assert test_config["gecko_profile_entries"] == 2000000
assert "win_counters" not in test_config
assert "linux_counters" not in test_config
assert "mac_counters" not in test_config
assert test_config["filters"] is not None
assert test_config["unit"] == "ms"
def test_offscreencanvas_webcodecs_main_webgl_vp9_has_expected_attributes(self):
config = get_config(self.argv_offscreencanvas_webcodecs_main_webgl_vp9)
test_config = config["tests"][0]
assert test_config["name"] == "offscreencanvas_webcodecs_main_webgl_vp9"
assert (
test_config["tpmanifest"]
!= "${talos}/tests/offscreencanvas/offscreencanvas_webcodecs_main_webgl_vp9.manifest"
)
assert test_config["tpcycles"] == 1
assert test_config["tppagecycles"] == 5
assert test_config["tploadnocache"] is True
assert test_config["tpmozafterpaint"] is False
assert test_config["tpchrome"] is False
assert test_config["gecko_profile_interval"] == 2
assert test_config["gecko_profile_entries"] == 2000000
assert "win_counters" not in test_config
assert "linux_counters" not in test_config
assert "mac_counters" not in test_config
assert test_config["filters"] is not None
assert test_config["unit"] == "ms"
def test_offscreencanvas_webcodecs_main_webgl_av1_has_expected_attributes(self):
config = get_config(self.argv_offscreencanvas_webcodecs_main_webgl_av1)
test_config = config["tests"][0]
assert test_config["name"] == "offscreencanvas_webcodecs_main_webgl_av1"
assert (
test_config["tpmanifest"]
!= "${talos}/tests/offscreencanvas/offscreencanvas_webcodecs_main_webgl_av1.manifest"
)
assert test_config["tpcycles"] == 1
assert test_config["tppagecycles"] == 5
assert test_config["tploadnocache"] is True
assert test_config["tpmozafterpaint"] is False
assert test_config["tpchrome"] is False
assert test_config["gecko_profile_interval"] == 2
assert test_config["gecko_profile_entries"] == 2000000
assert "win_counters" not in test_config
assert "linux_counters" not in test_config
assert "mac_counters" not in test_config
assert test_config["filters"] is not None
assert test_config["unit"] == "ms"
def test_offscreencanvas_webcodecs_worker_webgl_h264_has_expected_attributes(self):
config = get_config(self.argv_offscreencanvas_webcodecs_worker_webgl_h264)
test_config = config["tests"][0]
assert test_config["name"] == "offscreencanvas_webcodecs_worker_webgl_h264"
assert (
test_config["tpmanifest"]
!= "${talos}/tests/offscreencanvas/offscreencanvas_webcodecs_worker_webgl_h264.manifest"
)
assert test_config["tpcycles"] == 1
assert test_config["tppagecycles"] == 5
assert test_config["tploadnocache"] is True
assert test_config["tpmozafterpaint"] is False
assert test_config["tpchrome"] is False
assert test_config["gecko_profile_interval"] == 2
assert test_config["gecko_profile_entries"] == 2000000
assert "win_counters" not in test_config
assert "linux_counters" not in test_config
assert "mac_counters" not in test_config
assert test_config["filters"] is not None
assert test_config["unit"] == "ms"
def test_offscreencanvas_webcodecs_worker_webgl_vp9_has_expected_attributes(self):
config = get_config(self.argv_offscreencanvas_webcodecs_worker_webgl_vp9)
test_config = config["tests"][0]
assert test_config["name"] == "offscreencanvas_webcodecs_worker_webgl_vp9"
assert (
test_config["tpmanifest"]
!= "${talos}/tests/offscreencanvas/offscreencanvas_webcodecs_worker_webgl_vp9.manifest"
)
assert test_config["tpcycles"] == 1
assert test_config["tppagecycles"] == 5
assert test_config["tploadnocache"] is True
assert test_config["tpmozafterpaint"] is False
assert test_config["tpchrome"] is False
assert test_config["gecko_profile_interval"] == 2
assert test_config["gecko_profile_entries"] == 2000000
assert "win_counters" not in test_config
assert "linux_counters" not in test_config
assert "mac_counters" not in test_config
assert test_config["filters"] is not None
assert test_config["unit"] == "ms"
def test_offscreencanvas_webcodecs_worker_webgl_av1_has_expected_attributes(self):
config = get_config(self.argv_offscreencanvas_webcodecs_worker_webgl_av1)
test_config = config["tests"][0]
assert test_config["name"] == "offscreencanvas_webcodecs_worker_webgl_av1"
assert (
test_config["tpmanifest"]
!= "${talos}/tests/offscreencanvas/offscreencanvas_webcodecs_worker_webgl_av1.manifest"
)
assert test_config["tpcycles"] == 1
assert test_config["tppagecycles"] == 5
assert test_config["tploadnocache"] is True
assert test_config["tpmozafterpaint"] is False
assert test_config["tpchrome"] is False
assert test_config["gecko_profile_interval"] == 2
assert test_config["gecko_profile_entries"] == 2000000
assert "win_counters" not in test_config
assert "linux_counters" not in test_config
assert "mac_counters" not in test_config
assert test_config["filters"] is not None
assert test_config["unit"] == "ms"
def test_offscreencanvas_webcodecs_main_2d_h264_has_expected_attributes(self):
config = get_config(self.argv_offscreencanvas_webcodecs_main_2d_h264)
test_config = config["tests"][0]
assert test_config["name"] == "offscreencanvas_webcodecs_main_2d_h264"
assert (
test_config["tpmanifest"]
!= "${talos}/tests/offscreencanvas/offscreencanvas_webcodecs_main_2d_h264.manifest"
)
assert test_config["tpcycles"] == 1
assert test_config["tppagecycles"] == 5
assert test_config["tploadnocache"] is True
assert test_config["tpmozafterpaint"] is False
assert test_config["tpchrome"] is False
assert test_config["gecko_profile_interval"] == 2
assert test_config["gecko_profile_entries"] == 2000000
assert "win_counters" not in test_config
assert "linux_counters" not in test_config
assert "mac_counters" not in test_config
assert test_config["filters"] is not None
assert test_config["unit"] == "ms"
def test_offscreencanvas_webcodecs_main_2d_vp9_has_expected_attributes(self):
config = get_config(self.argv_offscreencanvas_webcodecs_main_2d_vp9)
test_config = config["tests"][0]
assert test_config["name"] == "offscreencanvas_webcodecs_main_2d_vp9"
assert (
test_config["tpmanifest"]
!= "${talos}/tests/offscreencanvas/offscreencanvas_webcodecs_main_2d_vp9.manifest"
)
assert test_config["tpcycles"] == 1
assert test_config["tppagecycles"] == 5
assert test_config["tploadnocache"] is True
assert test_config["tpmozafterpaint"] is False
assert test_config["tpchrome"] is False
assert test_config["gecko_profile_interval"] == 2
assert test_config["gecko_profile_entries"] == 2000000
assert "win_counters" not in test_config
assert "linux_counters" not in test_config
assert "mac_counters" not in test_config
assert test_config["filters"] is not None
assert test_config["unit"] == "ms"
def test_offscreencanvas_webcodecs_main_2d_av1_has_expected_attributes(self):
config = get_config(self.argv_offscreencanvas_webcodecs_main_2d_av1)
test_config = config["tests"][0]
assert test_config["name"] == "offscreencanvas_webcodecs_main_2d_av1"
assert (
test_config["tpmanifest"]
!= "${talos}/tests/offscreencanvas/offscreencanvas_webcodecs_main_2d_av1.manifest"
)
assert test_config["tpcycles"] == 1
assert test_config["tppagecycles"] == 5
assert test_config["tploadnocache"] is True
assert test_config["tpmozafterpaint"] is False
assert test_config["tpchrome"] is False
assert test_config["gecko_profile_interval"] == 2
assert test_config["gecko_profile_entries"] == 2000000
assert "win_counters" not in test_config
assert "linux_counters" not in test_config
assert "mac_counters" not in test_config
assert test_config["filters"] is not None
assert test_config["unit"] == "ms"
def test_offscreencanvas_webcodecs_worker_2d_h264_has_expected_attributes(self):
config = get_config(self.argv_offscreencanvas_webcodecs_worker_2d_h264)
test_config = config["tests"][0]
assert test_config["name"] == "offscreencanvas_webcodecs_worker_2d_h264"
assert (
test_config["tpmanifest"]
!= "${talos}/tests/offscreencanvas/offscreencanvas_webcodecs_worker_2d_h264.manifest"
)
assert test_config["tpcycles"] == 1
assert test_config["tppagecycles"] == 5
assert test_config["tploadnocache"] is True
assert test_config["tpmozafterpaint"] is False
assert test_config["tpchrome"] is False
assert test_config["gecko_profile_interval"] == 2
assert test_config["gecko_profile_entries"] == 2000000
assert "win_counters" not in test_config
assert "linux_counters" not in test_config
assert "mac_counters" not in test_config
assert test_config["filters"] is not None
assert test_config["unit"] == "ms"
def test_offscreencanvas_webcodecs_worker_2d_vp9_has_expected_attributes(self):
config = get_config(self.argv_offscreencanvas_webcodecs_worker_2d_vp9)
test_config = config["tests"][0]
assert test_config["name"] == "offscreencanvas_webcodecs_worker_2d_vp9"
assert (
test_config["tpmanifest"]
!= "${talos}/tests/offscreencanvas/offscreencanvas_webcodecs_worker_2d_vp9.manifest"
)
assert test_config["tpcycles"] == 1
assert test_config["tppagecycles"] == 5
assert test_config["tploadnocache"] is True
assert test_config["tpmozafterpaint"] is False
assert test_config["tpchrome"] is False
assert test_config["gecko_profile_interval"] == 2
assert test_config["gecko_profile_entries"] == 2000000
assert "win_counters" not in test_config
assert "linux_counters" not in test_config
assert "mac_counters" not in test_config
assert test_config["filters"] is not None
assert test_config["unit"] == "ms"
def test_offscreencanvas_webcodecs_worker_2d_av1_has_expected_attributes(self):
config = get_config(self.argv_offscreencanvas_webcodecs_worker_2d_av1)
test_config = config["tests"][0]
assert test_config["name"] == "offscreencanvas_webcodecs_worker_2d_av1"
assert (
test_config["tpmanifest"]
!= "${talos}/tests/offscreencanvas/offscreencanvas_webcodecs_worker_2d_av1.manifest"
)
assert test_config["tpcycles"] == 1
assert test_config["tppagecycles"] == 5
assert test_config["tploadnocache"] is True
assert test_config["tpmozafterpaint"] is False
assert test_config["tpchrome"] is False
assert test_config["gecko_profile_interval"] == 2
assert test_config["gecko_profile_entries"] == 2000000
assert "win_counters" not in test_config
assert "linux_counters" not in test_config
assert "mac_counters" not in test_config
assert test_config["filters"] is not None
assert test_config["unit"] == "ms"
@mock.patch("talos.config.build_manifest", conftest.patched_build_manifest)
def test_tp5n_has_expected_attributes(self):
config = get_config(self.argv_tp5n)
test_config = config["tests"][0]
assert test_config["name"] == "tp5n"
assert test_config["resolution"] == 20
assert test_config["tpmanifest"] != "${talos}/tests/tp5n/tp5n.manifest"
assert test_config["tpcycles"] == 1
assert test_config["tppagecycles"] == 1
assert test_config["cycles"] == 1
assert test_config["tpmozafterpaint"] is True
assert test_config["tptimeout"] == 5000
assert test_config["mainthread"] is True
assert test_config["win_counters"] == []
assert test_config["linux_counters"] == []
assert test_config["mac_counters"] == []
assert test_config["xperf_counters"] == [
"main_startup_fileio",
"main_startup_netio",
"main_normal_fileio",
"main_normal_netio",
"nonmain_startup_fileio",
"nonmain_normal_fileio",
"nonmain_normal_netio",
"mainthread_readcount",
"mainthread_readbytes",
"mainthread_writecount",
"mainthread_writebytes",
]
assert test_config["xperf_providers"] == [
"PROC_THREAD",
"LOADER",
"HARD_FAULTS",
"FILENAME",
"FILE_IO",
"FILE_IO_INIT",
]
assert test_config["xperf_user_providers"] == [
"Mozilla Generic Provider",
"Microsoft-Windows-TCPIP",
]
assert test_config["xperf_stackwalk"] == [
"FileCreate",
"FileRead",
"FileWrite",
"FileFlush",
"FileClose",
]
assert test_config["filters"] is not None
assert test_config["timeout"] == 1800
assert test_config["preferences"] == {
"extensions.enabledScopes": "",
"talos.logfile": "browser_output.txt",
}
assert test_config["unit"] == "ms"
@mock.patch("talos.config.build_manifest", conftest.patched_build_manifest)
def test_tp5o_has_expected_attributes(self):
config = get_config(self.argv_tp5o)
test_config = config["tests"][0]
assert test_config["name"] == "tp5o"
assert test_config["tpcycles"] == 1
assert test_config["tppagecycles"] == 25
assert test_config["cycles"] == 1
assert test_config["tpmozafterpaint"] is True
assert test_config["tptimeout"] == 5000
assert test_config["mainthread"] is False
assert test_config["tpmanifest"] != "${talos}/tests/tp5n/tp5o.manifest"
assert test_config["win_counters"] == ["% Processor Time"]
assert test_config["linux_counters"] == ["XRes"]
assert test_config["mac_counters"] == []
assert test_config["responsiveness"] is True
assert test_config["gecko_profile_interval"] == 2
assert test_config["gecko_profile_entries"] == 4000000
assert test_config["filters"] is not None
assert test_config["timeout"] == 1800
assert test_config["unit"] == "ms"
@mock.patch("talos.config.build_manifest", conftest.patched_build_manifest)
def test_tp5o_webext_has_expected_attributes(self):
config = get_config(self.argv_tp5o_webext)
test_config = config["tests"][0]
assert test_config["name"] == "tp5o_webext"
assert test_config["tpcycles"] == 1
assert test_config["tppagecycles"] == 25
assert test_config["cycles"] == 1
assert test_config["tpmozafterpaint"] is True
assert test_config["tptimeout"] == 5000
assert test_config["mainthread"] is False
assert test_config["tpmanifest"] != "${talos}/tests/tp5n/tp5o.manifest"
assert test_config["win_counters"] == ["% Processor Time"]
assert test_config["linux_counters"] == ["XRes"]
assert test_config["mac_counters"] == []
assert test_config["responsiveness"] is True
assert test_config["gecko_profile_interval"] == 2
assert test_config["gecko_profile_entries"] == 4000000
assert test_config["filters"] is not None
assert test_config["timeout"] == 1800
assert test_config["unit"] == "ms"
assert test_config["webextensions"] == "${talos}/webextensions/dummy/dummy.xpi"
assert test_config["preferences"] == {"xpinstall.signatures.required": False}
@mock.patch("talos.config.build_manifest", conftest.patched_build_manifest)
def test_tp5o_scroll_has_expected_attributes(self):
config = get_config(self.argv_tp5o_scroll)
test_config = config["tests"][0]
assert test_config["name"] == "tp5o_scroll"
assert test_config["tpmanifest"] != "${talos}/tests/tp5n/tp5o.manifest"
assert test_config["tpcycles"] == 1
assert test_config["tppagecycles"] == 12
assert test_config["gecko_profile_interval"] == 2
assert test_config["gecko_profile_entries"] == 2000000
assert test_config["tpscrolltest"] is True
assert test_config["tpmozafterpaint"] is False
assert test_config["preferences"] == {
"layout.frame_rate": 0,
"docshell.event_starvation_delay_hint": 1,
"dom.send_after_paint_to_content": False,
"layout.css.scroll-behavior.spring-constant": "'10'",
"toolkit.framesRecording.bufferSize": 10000,
}
assert test_config["filters"] is not None
assert test_config["unit"] == "1/FPS"
def test_v8_7_has_expected_attributes(self):
config = get_config(self.argv_v8_7)
test_config = config["tests"][0]
assert test_config["name"] == "v8_7"
assert test_config["tpmanifest"] != "${talos}/tests/v8_7/v8.manifest"
assert test_config["gecko_profile_interval"] == 1
assert test_config["gecko_profile_entries"] == 1000000
assert test_config["tpcycles"] == 1
assert test_config["resolution"] == 20
assert test_config["tpmozafterpaint"] is False
assert test_config["preferences"] == {"dom.send_after_paint_to_content": False}
assert test_config["filters"] is not None
assert test_config["unit"] == "score"
assert test_config["lower_is_better"] is False
def test_kraken_has_expected_attributes(self):
config = get_config(self.argv_kraken)
test_config = config["tests"][0]
assert test_config["name"] == "kraken"
assert test_config["tpmanifest"] != "${talos}/tests/kraken/kraken.manifest"
assert test_config["tpcycles"] == 1
assert test_config["tppagecycles"] == 1
assert test_config["gecko_profile_interval"] == 1
assert test_config["gecko_profile_entries"] == 5000000
assert test_config["tpmozafterpaint"] is False
assert test_config["tpchrome"] is False
assert test_config["preferences"] == {"dom.send_after_paint_to_content": False}
assert test_config["filters"] is not None
assert test_config["unit"] == "score"
def test_basic_compositor_video_has_expected_attributes(self):
config = get_config(self.argv_basic_compositor_video)
test_config = config["tests"][0]
assert test_config["name"] == "basic_compositor_video"
assert test_config["tpmanifest"] != "${talos}/tests/video/video.manifest"
assert test_config["tpcycles"] == 1
assert test_config["tppagecycles"] == 12
assert test_config["tpchrome"] is False
assert test_config["timeout"] == 10000
assert test_config["gecko_profile_interval"] == 1
assert test_config["gecko_profile_entries"] == 2000000
assert test_config["preferences"] == {
"full-screen-api.allow-trusted-requests-only": False,
"layers.acceleration.force-enabled": False,
"layers.acceleration.disabled": True,
"layout.frame_rate": 0,
"docshell.event_starvation_delay_hint": 1,
"full-screen-api.warning.timeout": 500,
"media.ruin-av-sync.enabled": True,
}
assert test_config["filters"] is not None
assert test_config["unit"] == "ms/frame"
assert test_config["lower_is_better"] is True
def test_dromaeo_css_has_expected_attributes(self):
config = get_config(self.argv_dromaeo_css)
test_config = config["tests"][0]
assert test_config["name"] == "dromaeo_css"
assert test_config["tpcycles"] == 1
assert test_config["filters"] is not None
assert test_config["lower_is_better"] is False
assert test_config["alert_threshold"] == 5.0
assert test_config["tpchrome"] is False
assert test_config["gecko_profile_interval"] == 2
assert test_config["gecko_profile_entries"] == 10000000
assert test_config["tpmanifest"] != "${talos}/tests/dromaeo/css.manifest"
assert test_config["unit"] == "score"
def test_dromaeo_dom_has_expected_attributes(self):
config = get_config(self.argv_dromaeo_dom)
test_config = config["tests"][0]
assert test_config["name"] == "dromaeo_dom"
assert test_config["tpcycles"] == 1
assert test_config["filters"] is not None
assert test_config["lower_is_better"] is False
assert test_config["alert_threshold"] == 5.0
assert test_config["tpchrome"] is False
assert test_config["gecko_profile_interval"] == 2
assert test_config["gecko_profile_entries"] == 10000000
assert test_config["tpmanifest"] != "${talos}/tests/dromaeo/dom.manifest"
assert test_config["unit"] == "score"
def test_tsvgm_has_expected_attributes(self):
config = get_config(self.argv_tsvgm)
test_config = config["tests"][0]
assert test_config["name"] == "tsvgm"
assert test_config["tpmanifest"] != "${talos}/tests/svgx/svgm.manifest"
assert test_config["tpcycles"] == 1
assert test_config["tppagecycles"] == 7
assert test_config["tpmozafterpaint"] is False
assert test_config["tpchrome"] is False
assert test_config["gecko_profile_interval"] == 10
assert test_config["gecko_profile_entries"] == 1000000
assert test_config["preferences"] == {
"layout.frame_rate": 0,
"docshell.event_starvation_delay_hint": 1,
"dom.send_after_paint_to_content": False,
}
assert test_config["filters"] is not None
assert test_config["unit"] == "ms"
def test_tsvgx_has_expected_attributes(self):
config = get_config(self.argv_tsvgx)
test_config = config["tests"][0]
assert test_config["name"] == "tsvgx"
assert test_config["tpmanifest"] != "${talos}/tests/svgx/svgx.manifest"
assert test_config["tpcycles"] == 1
assert test_config["tppagecycles"] == 25
assert test_config["tpmozafterpaint"] is False
assert test_config["tpchrome"] is False
assert test_config["gecko_profile_interval"] == 10
assert test_config["gecko_profile_entries"] == 1000000
assert test_config["preferences"] == {
"layout.frame_rate": 0,
"docshell.event_starvation_delay_hint": 1,
"dom.send_after_paint_to_content": False,
}
assert test_config["filters"] is not None
assert test_config["unit"] == "ms"
def test_tsvg_static_has_expected_attributes(self):
config = get_config(self.argv_tsvg_static)
test_config = config["tests"][0]
assert test_config["name"] == "tsvg_static"
assert (
test_config["tpmanifest"] != "${talos}/tests/svg_static/svg_static.manifest"
)
assert test_config["tpcycles"] == 1
assert test_config["tppagecycles"] == 25
assert test_config["tpmozafterpaint"] is True
assert test_config["tpchrome"] is False
assert test_config["gecko_profile_interval"] == 1
assert test_config["gecko_profile_entries"] == 10000000
assert test_config["filters"] is not None
assert test_config["unit"] == "ms"
def test_tsvgr_opacity_has_expected_attributes(self):
config = get_config(self.argv_tsvgr_opacity)
test_config = config["tests"][0]
assert test_config["name"] == "tsvgr_opacity"
assert (
test_config["tpmanifest"]
!= "${talos}/tests/svg_opacity/svg_opacity.manifest"
)
assert test_config["tpcycles"] == 1
assert test_config["tppagecycles"] == 25
assert test_config["tpmozafterpaint"] is True
assert test_config["tpchrome"] is False
assert test_config["gecko_profile_interval"] == 1
assert test_config["gecko_profile_entries"] == 10000000
assert test_config["filters"] is not None
assert test_config["unit"] == "ms"
def test_tscrollx_has_expected_attributes(self):
config = get_config(self.argv_tscrollx)
test_config = config["tests"][0]
assert test_config["name"] == "tscrollx"
assert test_config["tpmanifest"] != "${talos}/tests/scroll/scroll.manifest"
assert test_config["tpcycles"] == 1
assert test_config["tppagecycles"] == 25
assert test_config["tpmozafterpaint"] is False
assert test_config["tpchrome"] is False
assert test_config["gecko_profile_interval"] == 1
assert test_config["gecko_profile_entries"] == 1000000
assert test_config["preferences"] == {
"layout.frame_rate": 0,
"docshell.event_starvation_delay_hint": 1,
"dom.send_after_paint_to_content": False,
"layout.css.scroll-behavior.spring-constant": "'10'",
"toolkit.framesRecording.bufferSize": 10000,
}
assert test_config["filters"] is not None
assert test_config["unit"] == "ms"
def test_a11yr_has_expect_attributes(self):
config = get_config(self.argv_a11yr)
test_config = config["tests"][0]
assert test_config["name"] == "a11yr"
assert test_config["tpmanifest"] != "${talos}/tests/a11y/a11y.manifest"
assert test_config["tpcycles"] == 1
assert test_config["tppagecycles"] == 25
assert test_config["tpmozafterpaint"] is True
assert test_config["tpchrome"] is False
assert test_config["preferences"] == {"dom.send_after_paint_to_content": False}
assert test_config["unit"] == "ms"
assert test_config["alert_threshold"] == 5.0
def test_perf_reftest_has_expected_attributes(self):
config = get_config(self.argv_perf_reftest)
test_config = config["tests"][0]
assert test_config["name"] == "perf_reftest"
assert test_config["base_vs_ref"] is True
assert (
test_config["tpmanifest"]
!= "${talos}/tests/perf-reftest/perf_reftest.manifest"
)
assert test_config["tpcycles"] == 1
assert test_config["tppagecycles"] == 10
assert test_config["tptimeout"] == 30000
assert test_config["gecko_profile_interval"] == 1
assert test_config["gecko_profile_entries"] == 2000000
assert test_config["filters"] is not None
assert test_config["unit"] == "ms"
assert test_config["lower_is_better"] is True
assert test_config["alert_threshold"] == 5.0
def test_perf_reftest_singletons_has_expected_attributes(self):
config = get_config(self.argv_perf_reftest_singletons)
test_config = config["tests"][0]
assert test_config["name"] == "perf_reftest_singletons"
assert (
test_config["tpmanifest"]
!= "${talos}/tests/perf-reftest-singletons/perf_reftest_singletons.manifest"
)
assert test_config["tpcycles"] == 1
assert test_config["tppagecycles"] == 15
assert test_config["tptimeout"] == 30000
assert test_config["gecko_profile_interval"] == 1
assert test_config["gecko_profile_entries"] == 2000000
assert test_config["filters"] is not None
assert test_config["unit"] == "ms"
assert test_config["lower_is_better"] is True
assert test_config["alert_threshold"] == 5.0
# The tests in the Test_get_config class don't currently run, so these
# pdfpaint tests live outside of it for now. See bug 1888132.
@mock.patch("pathlib.Path.unlink", new=mock.MagicMock())
@mock.patch("pathlib.Path.symlink_to", new=mock.MagicMock())
def test_pdfpaint_has_expected_attributes_no_chunk(pdfpaint_dir_info):
pdfpaint_dir, pdf_count = pdfpaint_dir_info
Test_get_config.setup_class()
with mock.patch.dict(
os.environ, {"MOZ_FETCHES_DIR": "", "MOZBUILD_PATH": str(pdfpaint_dir)}
):
config = get_config(Test_get_config.argv_pdfpaint)
test_config = config["tests"][0]
assert test_config["name"] == "pdfpaint"
assert test_config["tpmanifest"] != "${talos}/tests/pdfpaint/pdfpaint.manifest"
manifest_content = pathlib.Path(test_config["tpmanifest"]).read_text()
manifest_lines = manifest_content.split("\n")
assert len([line for line in manifest_lines if line]) == pdf_count
assert test_config["tpcycles"] == 1
assert test_config["tppagecycles"] == 1
assert test_config["tptimeout"] == 60000
assert test_config["gecko_profile_entries"] == 16777216
assert test_config["filters"] is not None
assert test_config["unit"] == "ms"
assert test_config["lower_is_better"] is True
assert test_config["alert_threshold"] == 2.0
@mock.patch("pathlib.Path.unlink", new=mock.MagicMock())
@mock.patch("pathlib.Path.symlink_to", new=mock.MagicMock())
def test_pdfpaint_has_expected_attributes_with_chunk(pdfpaint_dir_info):
pdfpaint_dir, _ = pdfpaint_dir_info
Test_get_config.setup_class()
args = Test_get_config.argv_pdfpaint + ["--pdfPaintChunk", "1"]
with mock.patch.dict(
os.environ,
{"MOZ_FETCHES_DIR": str(pdfpaint_dir), "MOZBUILD_PATH": ""},
):
config = get_config(args)
test_config = config["tests"][0]
assert test_config["name"] == "pdfpaint"
assert test_config["tpmanifest"] != "${talos}/tests/pdfpaint/pdfpaint.manifest"
manifest_content = pathlib.Path(test_config["tpmanifest"]).read_text()
manifest_lines = manifest_content.split("\n")
assert len([line for line in manifest_lines if line]) == 100
assert test_config["tpcycles"] == 1
assert test_config["tppagecycles"] == 5
assert test_config["tptimeout"] == 60000
assert test_config["gecko_profile_entries"] == 16777216
assert test_config["filters"] is not None
assert test_config["unit"] == "ms"
assert test_config["lower_is_better"] is True
assert test_config["alert_threshold"] == 2.0
def test_pdfpaint_fails_on_bad_chunk(pdfpaint_dir_info):
pdfpaint_dir, _ = pdfpaint_dir_info
Test_get_config.setup_class()
args = Test_get_config.argv_pdfpaint + ["--pdfPaintChunk", "10"]
with pytest.raises(ConfigurationError):
with mock.patch.dict(
os.environ,
{"MOZ_FETCHES_DIR": str(pdfpaint_dir), "MOZBUILD_PATH": ""},
):
get_config(args)
@mock.patch("pathlib.Path.unlink", new=mock.MagicMock())
@mock.patch("pathlib.Path.symlink_to", new=mock.MagicMock())
def test_pdfpaint_with_pdf_name(pdfpaint_dir_info):
pdfpaint_dir, _ = pdfpaint_dir_info
Test_get_config.setup_class()
args = Test_get_config.argv_pdfpaint + ["--pdfPaintName", "1"]
with mock.patch.dict(
os.environ,
{"MOZ_FETCHES_DIR": str(pdfpaint_dir), "MOZBUILD_PATH": ""},
):
config = get_config(args)
test_config = config["tests"][0]
assert test_config["name"] == "pdfpaint"
assert test_config["tpmanifest"] != "${talos}/tests/pdfpaint/pdfpaint.manifest"
manifest_content = pathlib.Path(test_config["tpmanifest"]).read_text()
manifest_lines = manifest_content.split("\n")
assert len([line for line in manifest_lines if line]) == 1
assert manifest_lines[0].split("/")[-1] == "1"
assert test_config["tpcycles"] == 1
assert test_config["tppagecycles"] == 5
@mock.patch("talos.config.get_browser_config")
@mock.patch("talos.config.get_config")
def test_get_configs(get_config_mock, get_browser_config_mock):
# unpacks in right order
get_config_mock.return_value = "first"
get_browser_config_mock.return_value = "second"
first, second = get_configs()
assert (first, second) == ("first", "second")
if __name__ == "__main__":
mozunit.main()