#!/usr/bin/python2.4 # # # Copyright 2009, 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. import sys import unittest sys.path.append('../..') from testrunner import am_instrument_parser class AmParserTest(unittest.TestCase): def testParseAmInstResult(self): result="""INSTRUMENTATION_RESULT: performance.java_size=4871 INSTRUMENTATION_RESULT: stream= Error: Failed to generate emma coverage. INSTRUMENTATION_RESULT: performance.cpu_time=33846 INSTRUMENTATION_CODE: -1 """ bundle_dict = \ am_instrument_parser._ParseInstrumentationFinishedBundle(result) self.assertEquals(4871, bundle_dict['java_size']) self.assertEquals(33846, bundle_dict['cpu_time']) self.assertEquals("\nError: Failed to generate emma coverage.", bundle_dict['stream']) def testParseAmInstStatus(self): # numtests before id segment1 = """INSTRUMENTATION_STATUS: stream= INSTRUMENTATION_STATUS: test=testLaunchComplexActivity INSTRUMENTATION_STATUS: class=LaunchPerformanceTest INSTRUMENTATION_STATUS: current=1 INSTRUMENTATION_STATUS: numtests=2 INSTRUMENTATION_STATUS: id=InstrumentationTestRunner INSTRUMENTATION_STATUS_CODE: 1""" segment2 = """INSTRUMENTATION_STATUS: stream=. INSTRUMENTATION_STATUS: test=testLaunchComplexActivity INSTRUMENTATION_STATUS: performance.cpu_time=866 INSTRUMENTATION_STATUS: performance.execution_time=1242 INSTRUMENTATION_STATUS: class=LaunchPerformanceTest INSTRUMENTATION_STATUS: current=1 INSTRUMENTATION_STATUS: numtests=2 INSTRUMENTATION_STATUS: id=InstrumentationTestRunner INSTRUMENTATION_STATUS_CODE: 0""" # numtests after id segment3 = """INSTRUMENTATION_STATUS: stream= INSTRUMENTATION_STATUS: test=testLaunchSimpleActivity INSTRUMENTATION_STATUS: class=LaunchPerformanceTest INSTRUMENTATION_STATUS: current=2 INSTRUMENTATION_STATUS: id=InstrumentationTestRunner INSTRUMENTATION_STATUS: numtests=8 INSTRUMENTATION_STATUS_CODE: 1""" segment4 = """INSTRUMENTATION_STATUS: stream=. INSTRUMENTATION_STATUS: test=testLaunchSimpleActivity INSTRUMENTATION_STATUS: performance.cpu_time=590 INSTRUMENTATION_STATUS: performance.execution_time=1122 INSTRUMENTATION_STATUS: class=LaunchPerformanceTest INSTRUMENTATION_STATUS: current=2 INSTRUMENTATION_STATUS: id=InstrumentationTestRunner INSTRUMENTATION_STATUS: numtests=8 INSTRUMENTATION_STATUS_CODE: 0""" result = am_instrument_parser.TestResult(segment1) map = result.GetResultFields() self.assertEquals('testLaunchComplexActivity', map['test']) self.assertEquals('LaunchPerformanceTest', map['class']) self.assertEquals('1', map['current']) self.assertEquals('2', map['numtests']) self.assertEquals('InstrumentationTestRunner', map['id']) self.assertEquals(1, result.GetStatusCode()) result = am_instrument_parser.TestResult(segment2) map = result.GetResultFields() self.assertEquals('testLaunchComplexActivity', map['test']) self.assertEquals('866', map['cpu_time']) self.assertEquals('1242', map['execution_time']) self.assertEquals('LaunchPerformanceTest', map['class']) self.assertEquals('1', map['current']) self.assertEquals('2', map['numtests']) self.assertEquals('InstrumentationTestRunner', map['id']) self.assertEquals(0, result.GetStatusCode()) result = am_instrument_parser.TestResult(segment3) map = result.GetResultFields() self.assertEquals('testLaunchSimpleActivity', map['test']) self.assertEquals('LaunchPerformanceTest', map['class']) self.assertEquals('2', map['current']) self.assertEquals('8', map['numtests']) self.assertEquals('InstrumentationTestRunner', map['id']) self.assertEquals(1, result.GetStatusCode()) result = am_instrument_parser.TestResult(segment4) map = result.GetResultFields() self.assertEquals('testLaunchSimpleActivity', map['test']) self.assertEquals('590', map['cpu_time']) self.assertEquals('1122', map['execution_time']) self.assertEquals('LaunchPerformanceTest', map['class']) self.assertEquals('2', map['current']) self.assertEquals('8', map['numtests']) self.assertEquals('InstrumentationTestRunner', map['id']) self.assertEquals(0, result.GetStatusCode()) def testParseAmInstOutput(self): result = """INSTRUMENTATION_STATUS: class=LaunchPerformanceTestCase INSTRUMENTATION_STATUS: current=1 INSTRUMENTATION_STATUS: id=InstrumentationTestRunner INSTRUMENTATION_STATUS: numtests=2 INSTRUMENTATION_STATUS: stream= LaunchPerformanceTestCase: INSTRUMENTATION_STATUS: test=testLaunchComplexActivity INSTRUMENTATION_STATUS_CODE: 1 INSTRUMENTATION_STATUS: class=LaunchPerformanceTestCase INSTRUMENTATION_STATUS: current=1 INSTRUMENTATION_STATUS: id=InstrumentationTestRunner INSTRUMENTATION_STATUS: numtests=2 INSTRUMENTATION_STATUS: performance.cpu_time=866 INSTRUMENTATION_STATUS: performance.execution_time=1242 INSTRUMENTATION_STATUS: stream=. INSTRUMENTATION_STATUS: test=testLaunchComplexActivity INSTRUMENTATION_STATUS_CODE: 0 INSTRUMENTATION_STATUS: class=LaunchPerformanceTestCase INSTRUMENTATION_STATUS: current=2 INSTRUMENTATION_STATUS: id=InstrumentationTestRunner INSTRUMENTATION_STATUS: numtests=2 INSTRUMENTATION_STATUS: stream= INSTRUMENTATION_STATUS: test=testLaunchSimpleActivity INSTRUMENTATION_STATUS_CODE: 1 INSTRUMENTATION_STATUS: class=LaunchPerformanceTestCase INSTRUMENTATION_STATUS: current=2 INSTRUMENTATION_STATUS: id=InstrumentationTestRunner INSTRUMENTATION_STATUS: numtests=2 INSTRUMENTATION_STATUS: performance.cpu_time=590 INSTRUMENTATION_STATUS: performance.execution_time=1122 INSTRUMENTATION_STATUS: stream=. INSTRUMENTATION_STATUS: test=testLaunchSimpleActivity INSTRUMENTATION_STATUS_CODE: 0 INSTRUMENTATION_RESULT: performance.cpu_time=829 INSTRUMENTATION_RESULT: performance.execution_time=1708 INSTRUMENTATION_RESULT: performance.gc_invocation_count=0 INSTRUMENTATION_RESULT: performance.global_alloc_count=2848 INSTRUMENTATION_RESULT: performance.global_alloc_size=193079 INSTRUMENTATION_RESULT: performance.global_freed_count=1207 INSTRUMENTATION_RESULT: performance.global_freed_size=93040 INSTRUMENTATION_RESULT: performance.java_allocated=2175 INSTRUMENTATION_RESULT: performance.java_free=580 INSTRUMENTATION_RESULT: performance.java_private_dirty=740 INSTRUMENTATION_RESULT: performance.java_pss=1609 INSTRUMENTATION_RESULT: performance.java_shared_dirty=3860 INSTRUMENTATION_RESULT: performance.java_size=2755 INSTRUMENTATION_RESULT: performance.native_allocated=2585 INSTRUMENTATION_RESULT: performance.native_free=34 INSTRUMENTATION_RESULT: performance.native_private_dirty=632 INSTRUMENTATION_RESULT: performance.native_pss=701 INSTRUMENTATION_RESULT: performance.native_shared_dirty=1164 INSTRUMENTATION_RESULT: performance.native_size=2620 INSTRUMENTATION_RESULT: performance.other_private_dirty=896 INSTRUMENTATION_RESULT: performance.other_pss=1226 INSTRUMENTATION_RESULT: performance.other_shared_dirty=804 INSTRUMENTATION_RESULT: performance.pre_received_transactions=-1 INSTRUMENTATION_RESULT: performance.pre_sent_transactions=-1 INSTRUMENTATION_RESULT: performance.received_transactions=-1 INSTRUMENTATION_RESULT: performance.sent_transactions=-1 INSTRUMENTATION_RESULT: stream= Test results for InstrumentationTestRunner=.. Time: 2.413 OK (2 tests) INSTRUMENTATION_CODE: -1 """ (results_list, perf_dict) = \ am_instrument_parser.ParseAmInstrumentOutput(result) self.assertEquals(829, perf_dict['cpu_time']) self.assertEquals(2848, perf_dict['global_alloc_count']) self.assertEquals(93040, perf_dict['global_freed_size']) self.assertEquals(740, perf_dict['java_private_dirty']) self.assertEquals(2755, perf_dict['java_size']) self.assertEquals(632, perf_dict['native_private_dirty']) self.assertEquals(2620, perf_dict['native_size']) self.assertEquals(804, perf_dict['other_shared_dirty']) self.assertEquals(-1, perf_dict['received_transactions']) self.assertTrue(len(perf_dict['stream']) > 50) self.assertEquals('-1', perf_dict['code']) if __name__ == "__main__": unittest.main()