Source code

Revision control

Copy as Markdown

Other Tools

#!/usr/bin/env python
# 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 datetime import date
import mozunit
import pytest
from mozperftest.argparser import (
Options,
PerftestArgumentParser,
PerftestToolsArgumentParser,
)
def test_argparser():
parser = PerftestArgumentParser()
args = ["test_one.js"]
res = parser.parse_args(args)
assert res.tests == ["test_one.js"]
def test_argparser_defaults():
parser = PerftestArgumentParser()
args = ["test_one.js"]
res = parser.parse_args(args)
assert res.console_simplify_exclude == ["statistics"]
def test_options():
assert Options.args["--proxy"]["help"] == "Activates the proxy layer"
assert Options.args["--no-browsertime"]["help"] == (
"Deactivates the " "browsertime layer"
)
def test_layer_option():
parser = PerftestArgumentParser()
assert parser.parse_args(["--notebook-metrics"]) == parser.parse_args(
["--notebook-metrics", "--notebook"]
)
assert parser.parse_known_args(["--notebook-metrics"]) == parser.parse_known_args(
["--notebook-metrics", "--notebook"]
)
def test_bad_test_date():
parser = PerftestArgumentParser()
args = ["test_one.js", "--test-date", "bleh"]
with pytest.raises(SystemExit):
parser.parse_args(args)
def test_test_date_today():
parser = PerftestArgumentParser()
args = ["test_one.js", "--test-date", "today"]
res = parser.parse_args(args)
assert res.test_date == date.today().strftime("%Y.%m.%d")
def test_perfherder_metrics():
parser = PerftestArgumentParser()
args = [
"test_one.js",
"--perfherder-metrics",
"name:foo,unit:ms,alertThreshold:2",
"name:baz,unit:count,alertThreshold:2,lowerIsBetter:false",
]
res = parser.parse_args(args)
assert res.perfherder_metrics[0]["name"] == "foo"
assert res.perfherder_metrics[1]["alertThreshold"] == 2
args = [
"test_one.js",
"--perfherder-metrics",
"name:foo,unit:ms,alertThreshold:2",
"name:baz,UNKNOWN:count,alertThreshold:2,lowerIsBetter:false",
]
with pytest.raises(SystemExit):
parser.parse_args(args)
args = [
"test_one.js",
"--perfherder-metrics",
"name:foo,unit:ms,alertThreshold:2",
"namemalformedbaz,alertThreshold:2,lowerIsBetter:false",
]
with pytest.raises(SystemExit):
parser.parse_args(args)
# missing the name!
args = [
"test_one.js",
"--perfherder-metrics",
"name:foo,unit:ms,alertThreshold:2",
"alertThreshold:2,lowerIsBetter:false",
]
with pytest.raises(SystemExit):
parser.parse_args(args)
# still supporting just plain names
args = [
"test_one.js",
"--perfherder-metrics",
"name:foo,unit:euros,alertThreshold:2",
"baz",
]
res = parser.parse_args(args)
assert res.perfherder_metrics[1]["name"] == "baz"
assert res.perfherder_metrics[0]["name"] == "foo"
assert res.perfherder_metrics[0]["unit"] == "euros"
def test_tools_argparser_bad_tool():
with pytest.raises(SystemExit):
PerftestToolsArgumentParser()
def test_tools_bad_argparser():
PerftestToolsArgumentParser.tool = "side-by-side"
parser = PerftestToolsArgumentParser()
args = [
"-t",
"browsertime-first-install-firefox-welcome",
"--base-platform",
"test-linux1804-64-shippable-qr",
]
with pytest.raises(SystemExit):
parser.parse_args(args)
def test_tools_argparser():
PerftestToolsArgumentParser.tool = "side-by-side"
parser = PerftestToolsArgumentParser()
args = [
"-t",
"browsertime-first-install-firefox-welcome",
"--base-platform",
"test-linux1804-64-shippable-qr",
"--base-revision",
"438092d03ac4b9c36b52ba455da446afc7e14213",
"--new-revision",
"29943068938aa9e94955dbe13c2e4c254553e4ce",
]
res = parser.parse_args(args)
assert res.test_name == "browsertime-first-install-firefox-welcome"
assert res.platform == "test-linux1804-64-shippable-qr"
assert res.base_revision == "438092d03ac4b9c36b52ba455da446afc7e14213"
assert res.new_revision == "29943068938aa9e94955dbe13c2e4c254553e4ce"
if __name__ == "__main__":
mozunit.main()