1#!/usr/bin/python2.4 2# 3# 4# Copyright 2009, The Android Open Source Project 5# 6# Licensed under the Apache License, Version 2.0 (the "License"); 7# you may not use this file except in compliance with the License. 8# You may obtain a copy of the License at 9# 10# http://www.apache.org/licenses/LICENSE-2.0 11# 12# Unless required by applicable law or agreed to in writing, software 13# distributed under the License is distributed on an "AS IS" BASIS, 14# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 15# See the License for the specific language governing permissions and 16# limitations under the License. 17import sys 18import unittest 19sys.path.append('../..') 20 21from testrunner import am_instrument_parser 22 23 24class AmParserTest(unittest.TestCase): 25 26 def testParseAmInstResult(self): 27 result="""INSTRUMENTATION_RESULT: performance.java_size=4871 28INSTRUMENTATION_RESULT: stream= 29Error: Failed to generate emma coverage. 30INSTRUMENTATION_RESULT: performance.cpu_time=33846 31INSTRUMENTATION_CODE: -1 32""" 33 bundle_dict = \ 34 am_instrument_parser._ParseInstrumentationFinishedBundle(result) 35 self.assertEquals(4871, bundle_dict['java_size']) 36 self.assertEquals(33846, bundle_dict['cpu_time']) 37 self.assertEquals("\nError: Failed to generate emma coverage.", 38 bundle_dict['stream']) 39 40 def testParseAmInstStatus(self): 41 # numtests before id 42 segment1 = """INSTRUMENTATION_STATUS: stream= 43INSTRUMENTATION_STATUS: test=testLaunchComplexActivity 44INSTRUMENTATION_STATUS: class=LaunchPerformanceTest 45INSTRUMENTATION_STATUS: current=1 46INSTRUMENTATION_STATUS: numtests=2 47INSTRUMENTATION_STATUS: id=InstrumentationTestRunner 48INSTRUMENTATION_STATUS_CODE: 1""" 49 segment2 = """INSTRUMENTATION_STATUS: stream=. 50INSTRUMENTATION_STATUS: test=testLaunchComplexActivity 51INSTRUMENTATION_STATUS: performance.cpu_time=866 52INSTRUMENTATION_STATUS: performance.execution_time=1242 53INSTRUMENTATION_STATUS: class=LaunchPerformanceTest 54INSTRUMENTATION_STATUS: current=1 55INSTRUMENTATION_STATUS: numtests=2 56INSTRUMENTATION_STATUS: id=InstrumentationTestRunner 57INSTRUMENTATION_STATUS_CODE: 0""" 58 # numtests after id 59 segment3 = """INSTRUMENTATION_STATUS: stream= 60INSTRUMENTATION_STATUS: test=testLaunchSimpleActivity 61INSTRUMENTATION_STATUS: class=LaunchPerformanceTest 62INSTRUMENTATION_STATUS: current=2 63INSTRUMENTATION_STATUS: id=InstrumentationTestRunner 64INSTRUMENTATION_STATUS: numtests=8 65INSTRUMENTATION_STATUS_CODE: 1""" 66 segment4 = """INSTRUMENTATION_STATUS: stream=. 67INSTRUMENTATION_STATUS: test=testLaunchSimpleActivity 68INSTRUMENTATION_STATUS: performance.cpu_time=590 69INSTRUMENTATION_STATUS: performance.execution_time=1122 70INSTRUMENTATION_STATUS: class=LaunchPerformanceTest 71INSTRUMENTATION_STATUS: current=2 72INSTRUMENTATION_STATUS: id=InstrumentationTestRunner 73INSTRUMENTATION_STATUS: numtests=8 74INSTRUMENTATION_STATUS_CODE: 0""" 75 76 result = am_instrument_parser.TestResult(segment1) 77 map = result.GetResultFields() 78 self.assertEquals('testLaunchComplexActivity', map['test']) 79 self.assertEquals('LaunchPerformanceTest', map['class']) 80 self.assertEquals('1', map['current']) 81 self.assertEquals('2', map['numtests']) 82 self.assertEquals('InstrumentationTestRunner', map['id']) 83 self.assertEquals(1, result.GetStatusCode()) 84 85 result = am_instrument_parser.TestResult(segment2) 86 map = result.GetResultFields() 87 self.assertEquals('testLaunchComplexActivity', map['test']) 88 self.assertEquals('866', map['cpu_time']) 89 self.assertEquals('1242', map['execution_time']) 90 self.assertEquals('LaunchPerformanceTest', map['class']) 91 self.assertEquals('1', map['current']) 92 self.assertEquals('2', map['numtests']) 93 self.assertEquals('InstrumentationTestRunner', map['id']) 94 self.assertEquals(0, result.GetStatusCode()) 95 96 result = am_instrument_parser.TestResult(segment3) 97 map = result.GetResultFields() 98 self.assertEquals('testLaunchSimpleActivity', map['test']) 99 self.assertEquals('LaunchPerformanceTest', map['class']) 100 self.assertEquals('2', map['current']) 101 self.assertEquals('8', map['numtests']) 102 self.assertEquals('InstrumentationTestRunner', map['id']) 103 self.assertEquals(1, result.GetStatusCode()) 104 105 result = am_instrument_parser.TestResult(segment4) 106 map = result.GetResultFields() 107 self.assertEquals('testLaunchSimpleActivity', map['test']) 108 self.assertEquals('590', map['cpu_time']) 109 self.assertEquals('1122', map['execution_time']) 110 self.assertEquals('LaunchPerformanceTest', map['class']) 111 self.assertEquals('2', map['current']) 112 self.assertEquals('8', map['numtests']) 113 self.assertEquals('InstrumentationTestRunner', map['id']) 114 self.assertEquals(0, result.GetStatusCode()) 115 116 def testParseAmInstOutput(self): 117 result = """INSTRUMENTATION_STATUS: class=LaunchPerformanceTestCase 118INSTRUMENTATION_STATUS: current=1 119INSTRUMENTATION_STATUS: id=InstrumentationTestRunner 120INSTRUMENTATION_STATUS: numtests=2 121INSTRUMENTATION_STATUS: stream= 122LaunchPerformanceTestCase: 123INSTRUMENTATION_STATUS: test=testLaunchComplexActivity 124INSTRUMENTATION_STATUS_CODE: 1 125INSTRUMENTATION_STATUS: class=LaunchPerformanceTestCase 126INSTRUMENTATION_STATUS: current=1 127INSTRUMENTATION_STATUS: id=InstrumentationTestRunner 128INSTRUMENTATION_STATUS: numtests=2 129INSTRUMENTATION_STATUS: performance.cpu_time=866 130INSTRUMENTATION_STATUS: performance.execution_time=1242 131INSTRUMENTATION_STATUS: stream=. 132INSTRUMENTATION_STATUS: test=testLaunchComplexActivity 133INSTRUMENTATION_STATUS_CODE: 0 134INSTRUMENTATION_STATUS: class=LaunchPerformanceTestCase 135INSTRUMENTATION_STATUS: current=2 136INSTRUMENTATION_STATUS: id=InstrumentationTestRunner 137INSTRUMENTATION_STATUS: numtests=2 138INSTRUMENTATION_STATUS: stream= 139INSTRUMENTATION_STATUS: test=testLaunchSimpleActivity 140INSTRUMENTATION_STATUS_CODE: 1 141INSTRUMENTATION_STATUS: class=LaunchPerformanceTestCase 142INSTRUMENTATION_STATUS: current=2 143INSTRUMENTATION_STATUS: id=InstrumentationTestRunner 144INSTRUMENTATION_STATUS: numtests=2 145INSTRUMENTATION_STATUS: performance.cpu_time=590 146INSTRUMENTATION_STATUS: performance.execution_time=1122 147INSTRUMENTATION_STATUS: stream=. 148INSTRUMENTATION_STATUS: test=testLaunchSimpleActivity 149INSTRUMENTATION_STATUS_CODE: 0 150INSTRUMENTATION_RESULT: performance.cpu_time=829 151INSTRUMENTATION_RESULT: performance.execution_time=1708 152INSTRUMENTATION_RESULT: performance.gc_invocation_count=0 153INSTRUMENTATION_RESULT: performance.global_alloc_count=2848 154INSTRUMENTATION_RESULT: performance.global_alloc_size=193079 155INSTRUMENTATION_RESULT: performance.global_freed_count=1207 156INSTRUMENTATION_RESULT: performance.global_freed_size=93040 157INSTRUMENTATION_RESULT: performance.java_allocated=2175 158INSTRUMENTATION_RESULT: performance.java_free=580 159INSTRUMENTATION_RESULT: performance.java_private_dirty=740 160INSTRUMENTATION_RESULT: performance.java_pss=1609 161INSTRUMENTATION_RESULT: performance.java_shared_dirty=3860 162INSTRUMENTATION_RESULT: performance.java_size=2755 163INSTRUMENTATION_RESULT: performance.native_allocated=2585 164INSTRUMENTATION_RESULT: performance.native_free=34 165INSTRUMENTATION_RESULT: performance.native_private_dirty=632 166INSTRUMENTATION_RESULT: performance.native_pss=701 167INSTRUMENTATION_RESULT: performance.native_shared_dirty=1164 168INSTRUMENTATION_RESULT: performance.native_size=2620 169INSTRUMENTATION_RESULT: performance.other_private_dirty=896 170INSTRUMENTATION_RESULT: performance.other_pss=1226 171INSTRUMENTATION_RESULT: performance.other_shared_dirty=804 172INSTRUMENTATION_RESULT: performance.pre_received_transactions=-1 173INSTRUMENTATION_RESULT: performance.pre_sent_transactions=-1 174INSTRUMENTATION_RESULT: performance.received_transactions=-1 175INSTRUMENTATION_RESULT: performance.sent_transactions=-1 176INSTRUMENTATION_RESULT: stream= 177Test results for InstrumentationTestRunner=.. 178Time: 2.413 179 180OK (2 tests) 181 182 183INSTRUMENTATION_CODE: -1 184""" 185 (results_list, perf_dict) = \ 186 am_instrument_parser.ParseAmInstrumentOutput(result) 187 self.assertEquals(829, perf_dict['cpu_time']) 188 self.assertEquals(2848, perf_dict['global_alloc_count']) 189 self.assertEquals(93040, perf_dict['global_freed_size']) 190 self.assertEquals(740, perf_dict['java_private_dirty']) 191 self.assertEquals(2755, perf_dict['java_size']) 192 self.assertEquals(632, perf_dict['native_private_dirty']) 193 self.assertEquals(2620, perf_dict['native_size']) 194 self.assertEquals(804, perf_dict['other_shared_dirty']) 195 self.assertEquals(-1, perf_dict['received_transactions']) 196 self.assertTrue(len(perf_dict['stream']) > 50) 197 self.assertEquals('-1', perf_dict['code']) 198 199 200if __name__ == "__main__": 201 unittest.main() 202