From f6dc33366520420d7d25ded2c862f44b84a866d5 Mon Sep 17 00:00:00 2001 From: Charlie Boutier Date: Tue, 24 Sep 2024 21:20:03 +0000 Subject: [PATCH] Implement collect logs --- avatar/__init__.py | 8 ++++++++ avatar/pandora_server.py | 9 +++++++++ 2 files changed, 17 insertions(+) diff --git a/avatar/__init__.py b/avatar/__init__.py index 5fc4e75..7d9d831 100644 --- a/avatar/__init__.py +++ b/avatar/__init__.py @@ -37,6 +37,7 @@ from avatar.runner import SuiteRunner from mobly import base_test from mobly import signals +from pathlib import Path from typing import Any, Callable, Dict, Iterable, Iterator, List, Optional, Sized, Tuple, Type, TypeVar # public symbols @@ -147,6 +148,13 @@ def stop_all(self) -> None: server.stop() self._clients.clear() + def collect_logs(self, path: Path) -> None: + """Collects logs from all Pandora servers.""" + if not len(self._servers): + return + for server in self._servers: + server.collect_logs(path) + def _load_pandora_server_class(class_path: str) -> Type[pandora_server.PandoraServer[Any]]: """Dynamically load a PandoraServer from a user-specified module+class. diff --git a/avatar/pandora_server.py b/avatar/pandora_server.py index ae86309..209298c 100644 --- a/avatar/pandora_server.py +++ b/avatar/pandora_server.py @@ -33,6 +33,7 @@ from contextlib import suppress from mobly.controllers import android_device from mobly.controllers.android_device import AndroidDevice +from pathlib import Path from typing import Generic, Optional, TypeVar ANDROID_SERVER_PACKAGE = 'com.android.pandora' @@ -65,6 +66,11 @@ def start(self) -> PandoraClient: def stop(self) -> None: """Stops and cleans up the Pandora server on the device.""" + pass + + def collect_logs(self, path: Path) -> None: + """Collects logs from all Pandora servers.""" + pass class BumblePandoraServer(PandoraServer[BumblePandoraDevice]): @@ -151,3 +157,6 @@ def stop(self) -> None: self.device.adb.forward(['--remove', f'tcp:{self._port}']) # type: ignore self._instrumentation.join() self._instrumentation = None + + def collect_logs(self, path: Path) -> None: + self.device.take_bug_report(destination=path) # type: ignore