summaryrefslogtreecommitdiffstats
path: root/python/mozperftest/mozperftest/tests/test_layers.py
diff options
context:
space:
mode:
Diffstat (limited to 'python/mozperftest/mozperftest/tests/test_layers.py')
-rw-r--r--python/mozperftest/mozperftest/tests/test_layers.py88
1 files changed, 88 insertions, 0 deletions
diff --git a/python/mozperftest/mozperftest/tests/test_layers.py b/python/mozperftest/mozperftest/tests/test_layers.py
new file mode 100644
index 0000000000..c29b9ef2c0
--- /dev/null
+++ b/python/mozperftest/mozperftest/tests/test_layers.py
@@ -0,0 +1,88 @@
+#!/usr/bin/env python
+from unittest.mock import MagicMock
+
+import mozunit
+import pytest
+
+from mozperftest.environment import MachEnvironment
+from mozperftest.layers import Layer, Layers
+
+
+class _TestLayer(Layer):
+ name = "test"
+ activated = True
+ called = 0
+ arguments = {"--arg1": {"type": str, "default": "xxx", "help": "arg1"}}
+
+ def setup(self):
+ self.called += 1
+
+ def teardown(self):
+ self.called += 1
+
+
+class _TestLayer2(_TestLayer):
+ name = "test2"
+ activated = True
+ arguments = {"arg2": {"type": str, "default": "xxx", "help": "arg2"}}
+
+
+class _TestLayer3(_TestLayer):
+ name = "test3"
+ activated = True
+
+
+def test_layer():
+ mach = MagicMock()
+ env = MachEnvironment(mach, test=True, test_arg1="ok")
+
+ with _TestLayer(env, mach) as layer:
+ layer.info("info")
+ layer.warning("warning")
+ layer.debug("debug")
+ assert layer.get_arg("test")
+ assert layer.get_arg("arg1") == "ok"
+ assert layer.get_arg("test-arg1") == "ok"
+ layer.set_arg("arg1", "two")
+ assert layer.get_arg("test-arg1") == "two"
+ layer.set_arg("test-arg1", 1)
+ assert layer.get_arg("test-arg1") == 1
+ with pytest.raises(KeyError):
+ layer.set_arg("another", 1)
+
+ layer(object())
+
+ assert layer.called == 2
+
+
+def test_layers():
+ mach = MagicMock()
+ factories = [_TestLayer, _TestLayer2, _TestLayer3]
+ env = MachEnvironment(
+ mach, no_test3=True, test_arg1="ok", test2=True, test2_arg2="2"
+ )
+
+ with Layers(env, mach, factories) as layers:
+ # layer3 was deactivated with test3=False
+ assert len(layers.layers) == 2
+ layers.info("info")
+ layers.debug("debug")
+ layers.warning("warning")
+ assert layers.get_arg("--test2")
+ assert layers.get_arg("test-arg1") == "ok"
+ layers.set_arg("test-arg1", "two")
+ assert layers.get_arg("test-arg1") == "two"
+ layers.set_arg("--test-arg1", 1)
+ assert layers.get_arg("test-arg1") == 1
+ assert layers.get_layer("test2").name == "test2"
+ assert layers.get_layer("test3") is None
+ assert layers.name == "test + test2"
+ with pytest.raises(KeyError):
+ layers.set_arg("another", 1)
+
+ for layer in layers:
+ assert layer.called == 2
+
+
+if __name__ == "__main__":
+ mozunit.main()