diff options
Diffstat (limited to 'python/mozperftest/mozperftest/tests/test_argparser.py')
-rw-r--r-- | python/mozperftest/mozperftest/tests/test_argparser.py | 160 |
1 files changed, 160 insertions, 0 deletions
diff --git a/python/mozperftest/mozperftest/tests/test_argparser.py b/python/mozperftest/mozperftest/tests/test_argparser.py new file mode 100644 index 0000000000..b65a0809f8 --- /dev/null +++ b/python/mozperftest/mozperftest/tests/test_argparser.py @@ -0,0 +1,160 @@ +#!/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() |