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

Unified Diff: third_party/android_testrunner/am_instrument_parser.py

Issue 1290173003: [Android] Reland of Remove android_commands and android_testrunner. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: fixed: removed references from content/telemetry.isolate and TELEMETRY_DEPS Created 5 years, 4 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
« no previous file with comments | « third_party/android_testrunner/adb_interface.py ('k') | third_party/android_testrunner/errors.py » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: third_party/android_testrunner/am_instrument_parser.py
diff --git a/third_party/android_testrunner/am_instrument_parser.py b/third_party/android_testrunner/am_instrument_parser.py
deleted file mode 100644
index 4554c4d565f28f63c511614ccca1479df04f2595..0000000000000000000000000000000000000000
--- a/third_party/android_testrunner/am_instrument_parser.py
+++ /dev/null
@@ -1,169 +0,0 @@
-#!/usr/bin/python2.4
-#
-#
-# Copyright 2008, The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-"""Module that assists in parsing the output of "am instrument" commands run on
-the device."""
-
-import re
-import string
-
-
-def ParseAmInstrumentOutput(result):
- """Given the raw output of an "am instrument" command that targets and
- InstrumentationTestRunner, return structured data.
-
- Args:
- result (string): Raw output of "am instrument"
-
- Return
- (test_results, inst_finished_bundle)
-
- test_results (list of am_output_parser.TestResult)
- inst_finished_bundle (dict): Key/value pairs contained in the bundle that is
- passed into ActivityManager.finishInstrumentation(). Included in this bundle is the return
- code of the Instrumentation process, any error codes reported by the
- activity manager, and any results explicity added by the instrumentation
- code.
- """
-
- re_status_code = re.compile(r'INSTRUMENTATION_STATUS_CODE: (?P<status_code>-?\d)$')
- test_results = []
- inst_finished_bundle = {}
-
- result_block_string = ""
- for line in result.splitlines():
- result_block_string += line + '\n'
-
- if "INSTRUMENTATION_STATUS_CODE:" in line:
- test_result = TestResult(result_block_string)
- if test_result.GetStatusCode() == 1: # The test started
- pass
- elif test_result.GetStatusCode() in [0, -1, -2]:
- test_results.append(test_result)
- else:
- pass
- result_block_string = ""
- if "INSTRUMENTATION_CODE:" in line:
- inst_finished_bundle = _ParseInstrumentationFinishedBundle(result_block_string)
- result_block_string = ""
-
- return (test_results, inst_finished_bundle)
-
-
-def _ParseInstrumentationFinishedBundle(result):
- """Given the raw output of "am instrument" returns a dictionary of the
- key/value pairs from the bundle passed into
- ActivityManager.finishInstrumentation().
-
- Args:
- result (string): Raw output of "am instrument"
-
- Return:
- inst_finished_bundle (dict): Key/value pairs contained in the bundle that is
- passed into ActivityManager.finishInstrumentation(). Included in this bundle is the return
- code of the Instrumentation process, any error codes reported by the
- activity manager, and any results explicity added by the instrumentation
- code.
- """
-
- re_result = re.compile(r'INSTRUMENTATION_RESULT: ([^=]+)=(.*)$')
- re_code = re.compile(r'INSTRUMENTATION_CODE: (\-?\d)$')
- result_dict = {}
- key = ''
- val = ''
- last_tag = ''
-
- for line in result.split('\n'):
- line = line.strip(string.whitespace)
- if re_result.match(line):
- last_tag = 'INSTRUMENTATION_RESULT'
- key = re_result.search(line).group(1).strip(string.whitespace)
- if key.startswith('performance.'):
- key = key[len('performance.'):]
- val = re_result.search(line).group(2).strip(string.whitespace)
- try:
- result_dict[key] = float(val)
- except ValueError:
- result_dict[key] = val
- except TypeError:
- result_dict[key] = val
- elif re_code.match(line):
- last_tag = 'INSTRUMENTATION_CODE'
- key = 'code'
- val = re_code.search(line).group(1).strip(string.whitespace)
- result_dict[key] = val
- elif 'INSTRUMENTATION_ABORTED:' in line:
- last_tag = 'INSTRUMENTATION_ABORTED'
- key = 'INSTRUMENTATION_ABORTED'
- val = ''
- result_dict[key] = val
- elif last_tag == 'INSTRUMENTATION_RESULT':
- result_dict[key] += '\n' + line
-
- if not result_dict.has_key('code'):
- result_dict['code'] = '0'
- result_dict['shortMsg'] = "No result returned from instrumentation"
-
- return result_dict
-
-
-class TestResult(object):
- """A class that contains information about a single test result."""
-
- def __init__(self, result_block_string):
- """
- Args:
- result_block_string (string): Is a single "block" of output. A single
- "block" would be either a "test started" status report, or a "test
- finished" status report.
- """
-
- self._test_name = None
- self._status_code = None
- self._failure_reason = None
- self._fields_map = {}
-
- re_status_code = re.search(r'INSTRUMENTATION_STATUS_CODE: '
- '(?P<status_code>1|0|-1|-2)', result_block_string)
- re_fields = re.compile(r'INSTRUMENTATION_STATUS: '
- '(?P<key>[\w.]+)=(?P<value>.*?)(?=\nINSTRUMENTATION_STATUS)', re.DOTALL)
-
- for field in re_fields.finditer(result_block_string):
- key, value = (field.group('key').strip(), field.group('value').strip())
- if key.startswith('performance.'):
- key = key[len('performance.'):]
- self._fields_map[key] = value
- self._fields_map.setdefault('class')
- self._fields_map.setdefault('test')
-
- self._test_name = '%s:%s' % (self._fields_map['class'],
- self._fields_map['test'])
- self._status_code = int(re_status_code.group('status_code'))
- if 'stack' in self._fields_map:
- self._failure_reason = self._fields_map['stack']
-
- def GetTestName(self):
- return self._test_name
-
- def GetStatusCode(self):
- return self._status_code
-
- def GetFailureReason(self):
- return self._failure_reason
-
- def GetResultFields(self):
- return self._fields_map
« no previous file with comments | « third_party/android_testrunner/adb_interface.py ('k') | third_party/android_testrunner/errors.py » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698