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

Unified Diff: build/android/pylib/instrumentation/instrumentation_test_instance.py

Issue 935333002: Update from https://crrev.com/316786 (Closed) Base URL: git@github.com:domokit/mojo.git@master
Patch Set: Created 5 years, 10 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/instrumentation/instrumentation_test_instance.py
diff --git a/build/android/pylib/instrumentation/instrumentation_test_instance.py b/build/android/pylib/instrumentation/instrumentation_test_instance.py
index 0c4f56678acaa27a21cefaa14fe257b50aad54e7..45e6ee4d77aed7c27ddd9eb082a93901aad2ff1a 100644
--- a/build/android/pylib/instrumentation/instrumentation_test_instance.py
+++ b/build/android/pylib/instrumentation/instrumentation_test_instance.py
@@ -14,6 +14,7 @@ from pylib import flag_changer
from pylib.base import base_test_result
from pylib.base import test_instance
from pylib.instrumentation import test_result
+from pylib.instrumentation import instrumentation_parser
from pylib.utils import apk_helper
from pylib.utils import md5sum
from pylib.utils import proguard
@@ -47,48 +48,10 @@ def ParseAmInstrumentRawOutput(raw_output):
- the bundle dump as a dict mapping string keys to a list of
strings, one for each line.
"""
- INSTR_STATUS = 'INSTRUMENTATION_STATUS: '
- INSTR_STATUS_CODE = 'INSTRUMENTATION_STATUS_CODE: '
- INSTR_RESULT = 'INSTRUMENTATION_RESULT: '
- INSTR_CODE = 'INSTRUMENTATION_CODE: '
-
- last = None
- instr_code = None
- instr_result = []
- instr_statuses = []
- bundle = {}
- for line in raw_output:
- if line.startswith(INSTR_STATUS):
- instr_var = line[len(INSTR_STATUS):]
- if '=' in instr_var:
- k, v = instr_var.split('=', 1)
- bundle[k] = [v]
- last = INSTR_STATUS
- last_key = k
- else:
- logging.debug('Unknown "%s" line: %s' % (INSTR_STATUS, line))
-
- elif line.startswith(INSTR_STATUS_CODE):
- instr_status = line[len(INSTR_STATUS_CODE):]
- instr_statuses.append((int(instr_status), bundle))
- bundle = {}
- last = INSTR_STATUS_CODE
-
- elif line.startswith(INSTR_RESULT):
- instr_result.append(line[len(INSTR_RESULT):])
- last = INSTR_RESULT
-
- elif line.startswith(INSTR_CODE):
- instr_code = int(line[len(INSTR_CODE):])
- last = INSTR_CODE
-
- elif last == INSTR_STATUS:
- bundle[last_key].append(line)
-
- elif last == INSTR_RESULT:
- instr_result.append(line)
-
- return (instr_code, instr_result, instr_statuses)
+ parser = instrumentation_parser.InstrumentationParser(raw_output)
+ statuses = list(parser.IterStatus())
+ code, bundle = parser.GetResult()
+ return (code, bundle, statuses)
def GenerateTestResult(test_name, instr_statuses, start_ms, duration_ms):
@@ -106,22 +69,15 @@ def GenerateTestResult(test_name, instr_statuses, start_ms, duration_ms):
Returns:
An InstrumentationTestResult object.
"""
- INSTR_STATUS_CODE_START = 1
- INSTR_STATUS_CODE_OK = 0
- INSTR_STATUS_CODE_ERROR = -1
- INSTR_STATUS_CODE_FAIL = -2
-
log = ''
result_type = base_test_result.ResultType.UNKNOWN
for status_code, bundle in instr_statuses:
- if status_code == INSTR_STATUS_CODE_START:
+ if status_code == instrumentation_parser.STATUS_CODE_START:
pass
- elif status_code == INSTR_STATUS_CODE_OK:
- bundle_test = '%s#%s' % (
- ''.join(bundle.get('class', [''])),
- ''.join(bundle.get('test', [''])))
- skipped = ''.join(bundle.get('test_skipped', ['']))
+ elif status_code == instrumentation_parser.STATUS_CODE_OK:
+ bundle_test = '%s#%s' % (bundle.get('class', ''), bundle.get('test', ''))
+ skipped = bundle.get('test_skipped', '')
if (test_name == bundle_test and
result_type == base_test_result.ResultType.UNKNOWN):
@@ -130,13 +86,13 @@ def GenerateTestResult(test_name, instr_statuses, start_ms, duration_ms):
result_type = base_test_result.ResultType.SKIP
logging.info('Skipped ' + test_name)
else:
- if status_code not in (INSTR_STATUS_CODE_ERROR,
- INSTR_STATUS_CODE_FAIL):
+ if status_code not in (instrumentation_parser.STATUS_CODE_ERROR,
+ instrumentation_parser.STATUS_CODE_FAILURE):
logging.error('Unrecognized status code %d. Handling as an error.',
status_code)
result_type = base_test_result.ResultType.FAIL
if 'stack' in bundle:
- log = '\n'.join(bundle['stack'])
+ log = bundle['stack']
return test_result.InstrumentationTestResult(
test_name, result_type, start_ms, duration_ms, log=log)
@@ -466,24 +422,22 @@ class InstrumentationTestInstance(test_instance.TestInstance):
@staticmethod
def GenerateMultiTestResult(errors, statuses):
- INSTR_STATUS_CODE_START = 1
results = []
skip_counter = 1
for status_code, bundle in statuses:
- if status_code != INSTR_STATUS_CODE_START:
+ if status_code != instrumentation_parser.STATUS_CODE_START:
# TODO(rnephew): Make skipped tests still output test name. This is only
# there to give skipped tests a unique name so they are counted
if 'test_skipped' in bundle:
test_name = str(skip_counter)
skip_counter += 1
else:
- test_name = '%s#%s' % (
- ''.join(bundle.get('class', [''])),
- ''.join(bundle.get('test', [''])))
+ test_name = '%s#%s' % (bundle.get('class', ''),
+ bundle.get('test', ''))
results.append(
GenerateTestResult(test_name, [(status_code, bundle)], 0, 0))
- for error in errors:
+ for error in errors.itervalues():
if _NATIVE_CRASH_RE.search(error):
results.append(
base_test_result.BaseTestResult(

Powered by Google App Engine
This is Rietveld 408576698