summaryrefslogtreecommitdiffstats
path: root/python/mozperftest/mozperftest/tests/test_argparser.py
diff options
context:
space:
mode:
Diffstat (limited to 'python/mozperftest/mozperftest/tests/test_argparser.py')
-rw-r--r--python/mozperftest/mozperftest/tests/test_argparser.py160
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()