Source code

Revision control

Copy as Markdown

Other Tools

import os
import sys
from unittest import mock
import mozunit
import pytest
# need this so the raptor unit tests can find raptor/raptor classes
here = os.path.abspath(os.path.dirname(__file__))
raptor_dir = os.path.join(os.path.dirname(here), "raptor")
sys.path.insert(0, raptor_dir)
from argparse import ArgumentParser, Namespace
from cmdline import create_parser, verify_options
def test_verify_options(filedir):
args = Namespace(
app="firefox",
binary="invalid/path",
gecko_profile="False",
page_cycles=1,
page_timeout=60000,
debug="True",
chimera=False,
browsertime_video=False,
browsertime_visualmetrics=False,
fission=True,
fission_mobile=False,
test_bytecode_cache=False,
webext=False,
extra_prefs=[],
benchmark_repository=None,
benchmark_revision=None,
benchmark_branch=None,
post_startup_delay=None,
)
parser = ArgumentParser()
with pytest.raises(SystemExit):
verify_options(parser, args)
args.binary = os.path.join(filedir, "fake_binary.exe")
verify_options(parser, args) # assert no exception
args = Namespace(
app="geckoview",
binary="org.mozilla.geckoview_example",
activity="org.mozilla.geckoview_example.GeckoViewActivity",
intent="android.intent.action.MAIN",
gecko_profile="False",
is_release_build=False,
host="sophie",
chimera=False,
browsertime_video=False,
browsertime_visualmetrics=False,
fission=True,
fission_mobile=False,
test_bytecode_cache=False,
webext=False,
extra_prefs=[],
benchmark_repository=None,
benchmark_revision=None,
benchmark_branch=None,
post_startup_delay=None,
)
verify_options(parser, args) # assert no exception
args = Namespace(
app="refbrow",
binary="org.mozilla.reference.browser",
activity="org.mozilla.reference.browser.BrowserTestActivity",
intent="android.intent.action.MAIN",
gecko_profile="False",
is_release_build=False,
host="sophie",
chimera=False,
browsertime_video=False,
browsertime_visualmetrics=False,
fission=True,
fission_mobile=False,
test_bytecode_cache=False,
webext=False,
extra_prefs=[],
benchmark_repository=None,
benchmark_revision=None,
benchmark_branch=None,
post_startup_delay=None,
)
verify_options(parser, args) # assert no exception
args = Namespace(
app="fenix",
binary="org.mozilla.fenix.browser",
activity="org.mozilla.fenix.browser.BrowserPerformanceTestActivity",
intent="android.intent.action.VIEW",
gecko_profile="False",
is_release_build=False,
host="sophie",
chimera=False,
browsertime_video=False,
browsertime_visualmetrics=False,
fission=True,
fission_mobile=False,
test_bytecode_cache=False,
webext=False,
extra_prefs=[],
benchmark_repository=None,
benchmark_revision=None,
benchmark_branch=None,
post_startup_delay=None,
)
verify_options(parser, args) # assert no exception
args = Namespace(
app="geckoview",
binary="org.mozilla.geckoview_example",
activity="org.mozilla.geckoview_example.GeckoViewActivity",
intent="android.intent.action.MAIN",
gecko_profile="False",
is_release_build=False,
host="sophie",
chimera=False,
browsertime_video=False,
browsertime_visualmetrics=False,
fission=True,
fission_mobile=False,
test_bytecode_cache=False,
webext=False,
extra_prefs=[],
benchmark_repository=None,
benchmark_revision=None,
benchmark_branch=None,
post_startup_delay=None,
)
verify_options(parser, args) # assert no exception
args = Namespace(
app="refbrow",
binary="org.mozilla.reference.browser",
activity=None,
intent="android.intent.action.MAIN",
gecko_profile="False",
is_release_build=False,
host="sophie",
chimera=False,
browsertime_video=False,
browsertime_visualmetrics=False,
fission=True,
fission_mobile=False,
test_bytecode_cache=False,
webext=False,
extra_prefs=[],
benchmark_repository=None,
benchmark_revision=None,
benchmark_branch=None,
post_startup_delay=None,
)
parser = ArgumentParser()
verify_options(parser, args) # also will work as uses default activity
@mock.patch("perftest.Perftest.build_browser_profile", new=mock.MagicMock())
@pytest.mark.parametrize(
"args,settings_to_check",
[
# Test that post_startup_delay is 30s as expected
[
[
"--test",
"test-page-1",
"--binary",
"invalid/path",
# This gets set automatically from mach_commands, but is set
# to False by default in the Perftest class
"--run-local",
],
[
("post_startup_delay", 30000),
("run_local", True),
("debug_mode", False),
],
],
# Test that run_local is false by default
[
[
"--test",
"test-page-1",
"--binary",
"invalid/path",
],
[
("post_startup_delay", 30000),
("run_local", False),
("debug_mode", False),
],
],
# Test that debug mode gets set when running locally
[
[
"--test",
"test-page-1",
"--binary",
"invalid/path",
"--debug-mode",
"--run-local",
],
[
("post_startup_delay", 3000),
("run_local", True),
("debug_mode", True),
],
],
# Test that debug mode doesn't get set when we're not running locally
[
[
"--test",
"test-page-1",
"--binary",
"invalid/path",
"--debug-mode",
],
[
("post_startup_delay", 30000),
("run_local", False),
("debug_mode", False),
],
],
],
)
def test_perftest_setup_with_args(ConcretePerftest, args, settings_to_check):
parser = create_parser()
args = parser.parse_args(args)
perftest = ConcretePerftest(**vars(args))
for setting, expected in settings_to_check:
assert getattr(perftest, setting) == expected
if __name__ == "__main__":
mozunit.main()