summaryrefslogtreecommitdiffstats
path: root/python/mozperftest/mozperftest/tests/test_logcat_transformer.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_logcat_transformer.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_logcat_transformer.py')
-rw-r--r--python/mozperftest/mozperftest/tests/test_logcat_transformer.py125
1 files changed, 125 insertions, 0 deletions
diff --git a/python/mozperftest/mozperftest/tests/test_logcat_transformer.py b/python/mozperftest/mozperftest/tests/test_logcat_transformer.py
new file mode 100644
index 0000000000..8f94caedfc
--- /dev/null
+++ b/python/mozperftest/mozperftest/tests/test_logcat_transformer.py
@@ -0,0 +1,125 @@
+#!/usr/bin/env python
+import mozunit
+import pytest
+
+from mozperftest.metrics.exceptions import (
+ NotebookTransformError,
+ NotebookTransformOptionsError,
+)
+from mozperftest.metrics.notebook.transforms.logcattime import LogCatTimeTransformer
+from mozperftest.tests.support import HERE
+
+
+@pytest.fixture(scope="session", autouse=True)
+def tfm():
+ yield LogCatTimeTransformer()
+
+
+@pytest.fixture(scope="session", autouse=True)
+def logcat_data(tfm):
+ data = tfm.open_data(str(HERE / "data" / "home_activity.txt"))
+ assert data
+ yield data
+
+
+def test_logcat_transform_two_regex(tfm, logcat_data):
+ restart = r".*Activity.*Manager.*START.*org\.mozilla\.fennec_aurora/org\.mozilla\.fenix\.HomeActivity.*" # noqa
+ reend = r".*Displayed.*org\.mozilla\.fennec_aurora.*"
+ opts = {
+ "first-timestamp": restart,
+ "second-timestamp": reend,
+ "transform-subtest-name": "HANOOBish",
+ }
+
+ actual_result = tfm.transform(logcat_data, **opts)
+ expected_result = [
+ {
+ "data": [
+ {"value": 1782.0, "xaxis": 0},
+ {"value": 1375.0, "xaxis": 1},
+ {"value": 1497.0, "xaxis": 2},
+ ],
+ "subtest": "HANOOBish",
+ }
+ ]
+ assert actual_result == expected_result
+
+ # We should get the same results back from merge
+ # since we are working with only one file
+ merged = tfm.merge(actual_result)
+ assert merged == expected_result
+
+
+def test_logcat_transform_one_regex(tfm, logcat_data):
+ def processor(groups):
+ """Parses the time from a displayed time string into milliseconds."""
+ return (float(groups[0]) * 1000) + float(groups[1])
+
+ re_w_group = r".*Displayed.*org\.mozilla\.fennec_aurora.*\+([\d]+)s([\d]+)ms.*"
+ opts = {
+ "first-timestamp": re_w_group,
+ "processor": processor,
+ "transform-subtest-name": "TimeToDisplayed",
+ }
+
+ actual_result = tfm.transform(logcat_data, **opts)
+ expected_result = [
+ {
+ "data": [
+ {"value": 1743.0, "xaxis": 0},
+ {"value": 1325.0, "xaxis": 1},
+ {"value": 1462.0, "xaxis": 2},
+ ],
+ "subtest": "TimeToDisplayed",
+ }
+ ]
+ assert actual_result == expected_result
+
+
+def test_logcat_transform_no_processor(tfm, logcat_data):
+ re_w_group = r".*Displayed.*org\.mozilla\.fennec_aurora.*\+([\d]+)s([\d]+)ms.*"
+ opts = {
+ "first-timestamp": re_w_group,
+ "transform-subtest-name": "TimeToDisplayed",
+ }
+
+ actual_result = tfm.transform(logcat_data, **opts)
+ expected_result = [
+ {
+ "data": [
+ {"value": 1.0, "xaxis": 0},
+ {"value": 1.0, "xaxis": 1},
+ {"value": 1.0, "xaxis": 2},
+ ],
+ "subtest": "TimeToDisplayed",
+ }
+ ]
+ assert actual_result == expected_result
+
+
+def test_logcat_transform_no_groups(tfm, logcat_data):
+ re_w_group = r".*Displayed.*org\.mozilla\.fennec_aurora.*"
+ opts = {
+ "first-timestamp": re_w_group,
+ "transform-subtest-name": "TimeToDisplayed",
+ }
+
+ with pytest.raises(NotebookTransformOptionsError):
+ tfm.transform(logcat_data, **opts)
+
+
+def test_logcat_transform_too_many_groups(tfm, logcat_data):
+ restart = r".*Activity.*Manager.*START.*org\.mozilla\.fennec_aurora/org\.mozilla\.fenix\.HomeActivity.*" # noqa
+ reend = r".*Displayed.*org\.mozilla\.fennec_aurora.*\+([\d]+)s([\d]+)ms.*"
+ opts = {
+ "first-timestamp": restart,
+ "second-timestamp": reend,
+ "transform-subtest-name": "HANOOBish",
+ }
+
+ with pytest.raises(NotebookTransformError):
+ tfm.transform(logcat_data, **opts)
+
+
+if __name__ == "__main__":
+ mozunit.main()