tor-browser

The Tor Browser
git clone https://git.dasho.dev/tor-browser.git
Log | Files | Refs | README | LICENSE

test_androidlog.py (2727B)


      1 #!/usr/bin/env python
      2 import pathlib
      3 from unittest import mock
      4 
      5 import mozunit
      6 
      7 from mozperftest.environment import METRICS, SYSTEM, TEST
      8 from mozperftest.tests.support import EXAMPLE_TEST, get_running_env, temp_file
      9 from mozperftest.utils import temp_dir
     10 
     11 HERE = pathlib.Path(__file__).parent
     12 LOGCAT = HERE / "data" / "logcat"
     13 
     14 
     15 def fetch(self, url):
     16    return str(HERE / "fetched_artifact.zip")
     17 
     18 
     19 class FakeDevice:
     20    def __init__(self, **args):
     21        self.apps = []
     22 
     23    def shell_output(self, *args, **kwargs):
     24        return "A Fake Device"
     25 
     26    def uninstall_app(self, apk_name):
     27        return True
     28 
     29    def install_app(self, apk, replace=True):
     30        if apk not in self.apps:
     31            self.apps.append(apk)
     32 
     33    def install_app_baseline_profile(self, apk, replace=True):
     34        if apk not in self.apps:
     35            self.apps.append(apk)
     36 
     37    def is_app_installed(self, app_name):
     38        return True
     39 
     40    def get_logcat(self):
     41        with LOGCAT.open() as f:
     42            yield from f
     43 
     44 
     45 def fake_version_producer(self, metadata):
     46    return metadata
     47 
     48 
     49 @mock.patch("mozperftest.system.VersionProducer.run", new=fake_version_producer)
     50 @mock.patch("mozperftest.test.browsertime.runner.install_package")
     51 @mock.patch(
     52    "mozperftest.test.noderunner.NodeRunner.verify_node_install", new=lambda x: True
     53 )
     54 @mock.patch("mozbuild.artifact_cache.ArtifactCache.fetch", new=fetch)
     55 @mock.patch(
     56    "mozperftest.test.browsertime.runner.BrowsertimeRunner._setup_node_packages",
     57    new=lambda x, y: None,
     58 )
     59 @mock.patch("mozperftest.system.android.ADBLoggedDevice", new=FakeDevice)
     60 def test_android_log(*mocked):
     61    with temp_file() as logcat, temp_dir() as output:
     62        args = {
     63            "flavor": "mobile-browser",
     64            "app": "fenix",
     65            "android-install-apk": ["this.apk"],
     66            "android": True,
     67            "console": True,
     68            "android-timeout": 30,
     69            "android-capture-adb": "stdout",
     70            "android-capture-logcat": logcat,
     71            "android-app-name": "org.mozilla.fenix",
     72            "androidlog": True,
     73            "output": output,
     74            "browsertime-no-window-recorder": False,
     75            "browsertime-viewport-size": "1234x567",
     76            "tests": [EXAMPLE_TEST],
     77        }
     78 
     79        mach_cmd, metadata, env = get_running_env(**args)
     80 
     81        with env.layers[SYSTEM] as sys, env.layers[TEST] as andro:
     82            metadata = andro(sys(metadata))
     83 
     84        # we want to drop the first result
     85        metadata._results = metadata._results[1:]
     86        with env.layers[METRICS] as metrics:
     87            metadata = metrics(metadata)
     88 
     89        assert pathlib.Path(output, "LogCatstd-output.json").exists()
     90 
     91 
     92 if __name__ == "__main__":
     93    mozunit.main()