Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(302)

Unified Diff: build/android/pylib/local/device/local_device_instrumentation_test_run.py

Issue 2786773002: (Reland) Add failure screenshots and images to results detail. (Closed)
Patch Set: yolands nit Created 3 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: build/android/pylib/local/device/local_device_instrumentation_test_run.py
diff --git a/build/android/pylib/local/device/local_device_instrumentation_test_run.py b/build/android/pylib/local/device/local_device_instrumentation_test_run.py
index ec695f5134c166f3ad04c5fd40cf3b5bd6d82c5a..c95fe6d6e9bf81d10465469fd425d253e45a56a7 100644
--- a/build/android/pylib/local/device/local_device_instrumentation_test_run.py
+++ b/build/android/pylib/local/device/local_device_instrumentation_test_run.py
@@ -18,9 +18,11 @@ from pylib.base import base_test_result
from pylib.instrumentation import instrumentation_test_instance
from pylib.local.device import local_device_environment
from pylib.local.device import local_device_test_run
+from pylib.utils import google_storage_helper
from pylib.utils import logdog_helper
from py_trace_event import trace_event
from py_utils import contextlib_ext
+from py_utils import tempfile_ext
import tombstones
_TAG = 'test_runner_py'
@@ -37,6 +39,7 @@ TIMEOUT_ANNOTATIONS = [
LOGCAT_FILTERS = ['*:e', 'chromium:v', 'cr_*:v']
+
# TODO(jbudorick): Make this private once the instrumentation test_runner is
# deprecated.
def DidPackageCrashOnDevice(package_name, device):
@@ -316,7 +319,7 @@ class LocalDeviceInstrumentationTestRun(
stream_name = 'logcat_%s_%s_%s' % (
test_name.replace('#', '.'),
- time.strftime('%Y%m%dT%H%M%S', time.localtime()),
+ time.strftime('%Y%m%dT%H%M%S-UTC', time.gmtime()),
device.serial)
logmon = logdog_logcat_monitor.LogdogLogcatMonitor(
device.adb, stream_name, filter_specs=LOGCAT_FILTERS)
@@ -377,15 +380,29 @@ class LocalDeviceInstrumentationTestRun(
if any(r.GetType() not in (base_test_result.ResultType.PASS,
base_test_result.ResultType.SKIP)
for r in results):
- if self._test_instance.screenshot_dir:
- file_name = '%s-%s.png' % (
- test_display_name,
- time.strftime('%Y%m%dT%H%M%S', time.localtime()))
- saved_dir = device.TakeScreenshot(
- os.path.join(self._test_instance.screenshot_dir, file_name))
- logging.info(
- 'Saved screenshot for %s to %s.',
- test_display_name, saved_dir)
+ with contextlib_ext.Optional(
+ tempfile_ext.NamedTemporaryDirectory(),
+ self._test_instance.screenshot_dir is None and
+ self._test_instance.gs_results_bucket) as screenshot_host_dir:
+ screenshot_host_dir = (
+ self._test_instance.screenshot_dir or screenshot_host_dir)
+ if screenshot_host_dir:
+ file_name = '%s-%s.png' % (
+ test_display_name,
+ time.strftime('%Y%m%dT%H%M%S-UTC', time.gmtime()))
+ screenshot_file = device.TakeScreenshot(
+ os.path.join(screenshot_host_dir, file_name))
+ logging.info(
+ 'Saved screenshot for %s to %s.',
+ test_display_name, screenshot_file)
+ if self._test_instance.gs_results_bucket:
+ link = google_storage_helper.upload(
+ google_storage_helper.unique_name('screenshot', device=device),
+ screenshot_file,
+ bucket=self._test_instance.gs_results_bucket + '/screenshots')
+ for result in results:
+ result.SetLink('post_test_screenshot', link)
+
logging.info('detected failure in %s. raw output:', test_display_name)
for l in output:
logging.info(' %s', l)
@@ -397,7 +414,6 @@ class LocalDeviceInstrumentationTestRun(
else None)
device.ClearApplicationState(self._test_instance.package_info.package,
permissions=permissions)
-
else:
logging.debug('raw output from %s:', test_display_name)
for l in output:
@@ -419,7 +435,7 @@ class LocalDeviceInstrumentationTestRun(
include_stack_symbols=False,
wipe_tombstones=True)
stream_name = 'tombstones_%s_%s' % (
- time.strftime('%Y%m%dT%H%M%S', time.localtime()),
+ time.strftime('%Y%m%dT%H%M%S-UTC', time.gmtime()),
device.serial)
tombstones_url = logdog_helper.text(
stream_name, '\n'.join(resolved_tombstones))

Powered by Google App Engine
This is Rietveld 408576698