summaryrefslogtreecommitdiffstats
path: root/python/mozperftest/mozperftest/tests/test_change_detector.py
diff options
context:
space:
mode:
authorDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-07 19:33:14 +0000
committerDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-07 19:33:14 +0000
commit36d22d82aa202bb199967e9512281e9a53db42c9 (patch)
tree105e8c98ddea1c1e4784a60a5a6410fa416be2de /python/mozperftest/mozperftest/tests/test_change_detector.py
parentInitial commit. (diff)
downloadfirefox-esr-36d22d82aa202bb199967e9512281e9a53db42c9.tar.xz
firefox-esr-36d22d82aa202bb199967e9512281e9a53db42c9.zip
Adding upstream version 115.7.0esr.upstream/115.7.0esrupstream
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'python/mozperftest/mozperftest/tests/test_change_detector.py')
-rw-r--r--python/mozperftest/mozperftest/tests/test_change_detector.py113
1 files changed, 113 insertions, 0 deletions
diff --git a/python/mozperftest/mozperftest/tests/test_change_detector.py b/python/mozperftest/mozperftest/tests/test_change_detector.py
new file mode 100644
index 0000000000..ee9fa5fa0f
--- /dev/null
+++ b/python/mozperftest/mozperftest/tests/test_change_detector.py
@@ -0,0 +1,113 @@
+#!/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/.
+import pathlib
+from unittest import mock
+
+import mozunit
+import pytest
+
+from mozperftest.tests.support import temp_file
+from mozperftest.tools import PerformanceChangeDetected, run_change_detector
+
+
+def test_change_detector_basic(kwargs=None, return_value=({}, {})):
+ mocked_detector = mock.MagicMock()
+ mocked_detector_module = mock.MagicMock()
+ mocked_detector_module.ChangeDetector = mocked_detector
+
+ with mock.patch.dict(
+ "sys.modules",
+ {
+ "mozperftest_tools.regression_detector": mocked_detector_module,
+ },
+ ):
+ mocked_detector.return_value.detect_changes.return_value = return_value
+
+ with temp_file() as f:
+ parent_dir = pathlib.Path(f).parent
+
+ if kwargs is None:
+ kwargs = {
+ "test_name": "browsertime-test",
+ "new_test_name": None,
+ "platform": "test-platform/opt",
+ "new_platform": None,
+ "base_branch": "try",
+ "new_branch": "try",
+ "base_revision": "99",
+ "new_revision": "99",
+ }
+
+ run_change_detector(parent_dir, kwargs)
+
+ mocked_detector.return_value.detect_changes.assert_called()
+
+ return mocked_detector_module
+
+
+def test_change_detector_with_task_name():
+ test_change_detector_basic(
+ {
+ "task_names": ["test-platform/opt-browsertime-test"],
+ "new_test_name": None,
+ "platform": None,
+ "new_platform": None,
+ "base_branch": "try",
+ "new_branch": "try",
+ "base_revision": "99",
+ "new_revision": "99",
+ }
+ )
+
+
+def test_change_detector_option_failure():
+ with pytest.raises(Exception):
+ test_change_detector_basic(
+ {
+ "test_name": None,
+ "new_test_name": None,
+ "platform": "test-platform/opt",
+ "new_platform": None,
+ "base_branch": "try",
+ "new_branch": "try",
+ "base_revision": "99",
+ "new_revision": "99",
+ }
+ )
+
+ with pytest.raises(Exception):
+ test_change_detector_basic(
+ {
+ "test_name": "browsertime-test",
+ "new_test_name": None,
+ "platform": None,
+ "new_platform": None,
+ "base_branch": "try",
+ "new_branch": "try",
+ "base_revision": "99",
+ "new_revision": "99",
+ }
+ )
+
+
+def test_change_detector_with_detection():
+ with pytest.raises(PerformanceChangeDetected):
+ test_change_detector_basic(
+ {
+ "task_names": ["test-platform/opt-browsertime-test"],
+ "new_test_name": None,
+ "platform": None,
+ "new_platform": None,
+ "base_branch": "try",
+ "new_branch": "try",
+ "base_revision": "99",
+ "new_revision": "99",
+ },
+ (["detection"], {"warm": {"metric": {"detection": [99]}}, "cold": {}}),
+ )
+
+
+if __name__ == "__main__":
+ mozunit.main()