Index: build/android/test_runner.py |
diff --git a/build/android/test_runner.py b/build/android/test_runner.py |
index ee6f87a86a0a382a7be1b30054c5a1617c1cb61e..0bf240d16e1ccc106c1a51cabd102f86fb56e390 100755 |
--- a/build/android/test_runner.py |
+++ b/build/android/test_runner.py |
@@ -12,6 +12,7 @@ import contextlib |
import itertools |
import logging |
import os |
+import shutil |
import signal |
import sys |
import threading |
@@ -34,6 +35,7 @@ from pylib.base import test_instance_factory |
from pylib.base import test_run_factory |
from pylib.results import json_results |
from pylib.results import report_results |
+from pylib.utils import logdog_helper |
from py_utils import contextlib_ext |
@@ -208,6 +210,12 @@ def AddDeviceOptions(parser): |
help='Run the test under a tool ' |
'(use --tool help to list them)') |
+ parser.add_argument( |
+ '--upload-logcats-file', |
+ action='store_true', |
+ dest='upload_logcats_file', |
+ help='Whether to upload logcat file to logdog.') |
+ |
logcat_output_group = parser.add_mutually_exclusive_group() |
logcat_output_group.add_argument( |
'--logcat-output-dir', type=os.path.realpath, |
@@ -725,6 +733,24 @@ def RunTestsInPlatformMode(args): |
write_json_file(), |
args.json_results_file) |
+ @contextlib.contextmanager |
+ def upload_logcats_file(): |
+ try: |
+ yield |
+ finally: |
+ if not args.logcat_output_file: |
+ logging.critical('Cannot upload logcats file. ' |
+ 'File to save logcat is not specified.') |
+ else: |
+ with open(args.logcat_output_file) as src: |
+ dst = logdog_helper.open_text('unified_logcats') |
+ if dst: |
+ shutil.copyfileobj(src, dst) |
+ |
+ logcats_uploader = contextlib_ext.Optional( |
+ upload_logcats_file(), |
+ 'upload_logcats_file' in args and args.upload_logcats_file) |
+ |
### Set up test objects. |
env = environment_factory.CreateEnvironment(args, infra_error) |
@@ -734,7 +760,7 @@ def RunTestsInPlatformMode(args): |
### Run. |
- with json_writer, env, test_instance, test_run: |
+ with json_writer, logcats_uploader, env, test_instance, test_run: |
repetitions = (xrange(args.repeat + 1) if args.repeat >= 0 |
else itertools.count()) |