diff options
Diffstat (limited to 'python/mozperftest/mozperftest/tests/test_androidlog.py')
-rw-r--r-- | python/mozperftest/mozperftest/tests/test_androidlog.py | 81 |
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() |