| 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))
|
|
|