summaryrefslogtreecommitdiffstats
path: root/python/mozperftest/mozperftest/tests/test_androidlog.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_androidlog.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_androidlog.py')
-rw-r--r--python/mozperftest/mozperftest/tests/test_androidlog.py81
1 files changed, 81 insertions, 0 deletions
diff --git a/python/mozperftest/mozperftest/tests/test_androidlog.py b/python/mozperftest/mozperftest/tests/test_androidlog.py
new file mode 100644
index 0000000000..b7aa56b704
--- /dev/null
+++ b/python/mozperftest/mozperftest/tests/test_androidlog.py
@@ -0,0 +1,81 @@
+#!/usr/bin/env python
+import pathlib
+from unittest import mock
+
+import mozunit
+
+from mozperftest.environment import METRICS, SYSTEM, TEST
+from mozperftest.tests.support import EXAMPLE_TEST, get_running_env, temp_file
+from mozperftest.utils import temp_dir
+
+HERE = pathlib.Path(__file__).parent
+LOGCAT = HERE / "data" / "logcat"
+
+
+def fetch(self, url):
+ return str(HERE / "fetched_artifact.zip")
+
+
+class FakeDevice:
+ def __init__(self, **args):
+ self.apps = []
+
+ def uninstall_app(self, apk_name):
+ return True
+
+ def install_app(self, apk, replace=True):
+ if apk not in self.apps:
+ self.apps.append(apk)
+
+ def is_app_installed(self, app_name):
+ return True
+
+ def get_logcat(self):
+ with LOGCAT.open() as f:
+ for line in f:
+ yield line
+
+
+@mock.patch("mozperftest.test.browsertime.runner.install_package")
+@mock.patch(
+ "mozperftest.test.noderunner.NodeRunner.verify_node_install", new=lambda x: True
+)
+@mock.patch("mozbuild.artifact_cache.ArtifactCache.fetch", new=fetch)
+@mock.patch(
+ "mozperftest.test.browsertime.runner.BrowsertimeRunner._setup_node_packages",
+ new=lambda x, y: None,
+)
+@mock.patch("mozperftest.system.android.ADBLoggedDevice", new=FakeDevice)
+def test_android_log(*mocked):
+ with temp_file() as logcat, temp_dir() as output:
+ args = {
+ "flavor": "mobile-browser",
+ "android-install-apk": ["this.apk"],
+ "android": True,
+ "console": True,
+ "android-timeout": 30,
+ "android-capture-adb": "stdout",
+ "android-capture-logcat": logcat,
+ "android-app-name": "org.mozilla.fenix",
+ "androidlog": True,
+ "output": output,
+ "browsertime-no-window-recorder": False,
+ "browsertime-viewport-size": "1234x567",
+ "tests": [EXAMPLE_TEST],
+ }
+
+ mach_cmd, metadata, env = get_running_env(**args)
+
+ with env.layers[SYSTEM] as sys, env.layers[TEST] as andro:
+ metadata = andro(sys(metadata))
+
+ # we want to drop the first result
+ metadata._results = metadata._results[1:]
+ with env.layers[METRICS] as metrics:
+ metadata = metrics(metadata)
+
+ assert pathlib.Path(output, "LogCatstd-output.json").exists()
+
+
+if __name__ == "__main__":
+ mozunit.main()