1// Copyright (c) 2013 The Chromium Authors. All rights reserved. 2// Use of this source code is governed by a BSD-style license that can be 3// found in the LICENSE file. 4 5'use strict'; 6 7base.require('tracing.test_utils'); 8base.require('tracing.importer.linux_perf_importer'); 9 10base.unittest.testSuite('tracing.importer.linux_perf.android_parser', 11 function() { 12 test('androidUserlandImport', function() { 13 var lines = [ 14 'SurfaceFlinger-4831 [001] ...1 80909.598554: tracing_mark_write: B|4829|onMessageReceived', // @suppress longLineCheck 15 'SurfaceFlinger-4831 [001] ...1 80909.598572: tracing_mark_write: B|4829|handleMessageInvalidate', // @suppress longLineCheck 16 'SurfaceFlinger-4831 [001] ...1 80909.598590: tracing_mark_write: B|4829|latchBuffer', // @suppress longLineCheck 17 'SurfaceFlinger-4831 [001] ...1 80909.598604: tracing_mark_write: E', 18 'SurfaceFlinger-4831 [001] ...1 80909.598627: tracing_mark_write: B|4829|latchBuffer', // @suppress longLineCheck 19 'SurfaceFlinger-4831 [001] ...1 80909.598651: tracing_mark_write: B|4829|updateTexImage', // @suppress longLineCheck 20 'SurfaceFlinger-4831 [001] ...1 80909.598675: tracing_mark_write: B|4829|acquireBuffer', // @suppress longLineCheck 21 'SurfaceFlinger-4831 [001] ...1 80909.598695: tracing_mark_write: B|4829|' + // @suppress longLineCheck 22 'com.android.launcher/com.android.launcher2.Launcher: 0', 23 'SurfaceFlinger-4831 [001] ...1 80909.598709: tracing_mark_write: E', 24 'SurfaceFlinger-4831 [001] ...1 80909.598733: tracing_mark_write: C|4829|' + // @suppress longLineCheck 25 'com.android.launcher/com.android.launcher2.Launcher|0', 26 'SurfaceFlinger-4831 [001] ...1 80909.598746: tracing_mark_write: E', 27 'SurfaceFlinger-4831 [001] ...1 80909.598844: tracing_mark_write: B|4829|releaseBuffer', // @suppress longLineCheck 28 'SurfaceFlinger-4831 [001] ...1 80909.598862: tracing_mark_write: B|4829|' + // @suppress longLineCheck 29 'com.android.launcher/com.android.launcher2.Launcher: 2', 30 'SurfaceFlinger-4831 [001] ...1 80909.598876: tracing_mark_write: E', 31 'SurfaceFlinger-4831 [001] ...1 80909.598892: tracing_mark_write: E', 32 'SurfaceFlinger-4831 [001] ...1 80909.598925: tracing_mark_write: E', 33 'SurfaceFlinger-4831 [001] ...1 80909.598955: tracing_mark_write: E', 34 'SurfaceFlinger-4831 [001] ...1 80909.598988: tracing_mark_write: B|4829|latchBuffer', // @suppress longLineCheck 35 'SurfaceFlinger-4831 [001] ...1 80909.599001: tracing_mark_write: E', 36 'SurfaceFlinger-4831 [001] ...1 80909.599021: tracing_mark_write: B|4829|latchBuffer', // @suppress longLineCheck 37 'SurfaceFlinger-4831 [001] ...1 80909.599036: tracing_mark_write: E', 38 'SurfaceFlinger-4831 [001] ...1 80909.599068: tracing_mark_write: E', 39 'SurfaceFlinger-4831 [001] ...1 80909.599087: tracing_mark_write: E', 40 'SurfaceFlinger-4831 [001] ...1 80909.599104: tracing_mark_write: E' 41 ]; 42 var m = new tracing.TraceModel(lines.join('\n'), false); 43 assertEquals(0, m.importErrors.length); 44 45 var threads = m.getAllThreads(); 46 assertEquals(1, threads.length); 47 48 var thread = threads[0]; 49 assertEquals(4829, thread.parent.pid); 50 assertEquals(4831, thread.tid); 51 assertEquals('SurfaceFlinger', thread.name); 52 assertEquals(11, thread.sliceGroup.length); 53 }); 54 55 test('androidUserlandImportWithSpacesInThreadName', function() { 56 var lines = [ 57 'Surface Flinger -4831 [001] ...1 80909.598590: tracing_mark_write: B|4829|latchBuffer', // @suppress longLineCheck 58 'Surface Flinger -4831 [001] ...1 80909.598604: tracing_mark_write: E' // @suppress longLineCheck 59 ]; 60 var m = new tracing.TraceModel(lines.join('\n'), false); 61 assertEquals(0, m.importErrors.length); 62 63 var threads = m.getAllThreads(); 64 assertEquals(1, threads.length); 65 66 var thread = threads[0]; 67 assertEquals(4829, thread.parent.pid); 68 assertEquals(4831, thread.tid); 69 assertEquals('Surface Flinger ', thread.name); 70 assertEquals(1, thread.sliceGroup.length); 71 }); 72 73 test('androidAsyncUserlandImport', function() { 74 var lines = [ 75 'ndroid.launcher-9649 ( 9649) [000] ...1 1990280.663276: ' + 76 'tracing_mark_write: S|9649|animator:childrenOutlineAlpha|' + 77 '1113053968', 78 'ndroid.launcher-9649 ( 9649) [000] ...1 1990280.781445: ' + 79 'tracing_mark_write: F|9649|animator:childrenOutlineAlpha|' + 80 '1113053968' 81 ]; 82 var m = new tracing.TraceModel(lines.join('\n'), false); 83 assertEquals(0, m.importErrors.length); 84 85 var threads = m.getAllThreads(); 86 assertEquals(1, threads.length); 87 88 var thread = threads[0]; 89 assertEquals(9649, thread.parent.pid); 90 assertEquals(9649, thread.tid); 91 assertEquals('ndroid.launcher', thread.name); 92 assertEquals(0, thread.sliceGroup.length); 93 assertEquals(1, thread.asyncSliceGroup.length); 94 95 var slice = thread.asyncSliceGroup.slices[0]; 96 assertEquals('animator:childrenOutlineAlpha', slice.title); 97 assertAlmostEquals(118.169, slice.duration); 98 }); 99 100 test('androidUserlandLegacyKernelImport', function() { 101 var lines = [ 102 'SurfaceFlinger-4831 [001] ...1 80909.598554: 0: B|4829|onMessageReceived', // @suppress longLineCheck 103 'SurfaceFlinger-4831 [001] ...1 80909.598572: 0: B|4829|handleMessageInvalidate', // @suppress longLineCheck 104 'SurfaceFlinger-4831 [001] ...1 80909.598590: 0: B|4829|latchBuffer', 105 'SurfaceFlinger-4831 [001] ...1 80909.598604: 0: E', 106 'SurfaceFlinger-4831 [001] ...1 80909.598627: 0: B|4829|latchBuffer', 107 'SurfaceFlinger-4831 [001] ...1 80909.598651: 0: B|4829|updateTexImage', // @suppress longLineCheck 108 'SurfaceFlinger-4831 [001] ...1 80909.598675: 0: B|4829|acquireBuffer', // @suppress longLineCheck 109 'SurfaceFlinger-4831 [001] ...1 80909.598695: 0: B|4829|' + 110 'com.android.launcher/com.android.launcher2.Launcher: 0', 111 'SurfaceFlinger-4831 [001] ...1 80909.598709: 0: E', 112 'SurfaceFlinger-4831 [001] ...1 80909.598733: 0: C|4829|' + 113 'com.android.launcher/com.android.launcher2.Launcher|0', 114 'SurfaceFlinger-4831 [001] ...1 80909.598746: 0: E', 115 'SurfaceFlinger-4831 [001] ...1 80909.598844: 0: B|4829|releaseBuffer', // @suppress longLineCheck 116 'SurfaceFlinger-4831 [001] ...1 80909.598862: 0: B|4829|' + 117 'com.android.launcher/com.android.launcher2.Launcher: 2', 118 'SurfaceFlinger-4831 [001] ...1 80909.598876: 0: E', 119 'SurfaceFlinger-4831 [001] ...1 80909.598892: 0: E', 120 'SurfaceFlinger-4831 [001] ...1 80909.598925: 0: E', 121 'SurfaceFlinger-4831 [001] ...1 80909.598955: 0: E', 122 'SurfaceFlinger-4831 [001] ...1 80909.598988: 0: B|4829|latchBuffer', // @suppress longLineCheck 123 'SurfaceFlinger-4831 [001] ...1 80909.599001: 0: E', 124 'SurfaceFlinger-4831 [001] ...1 80909.599021: 0: B|4829|latchBuffer', // @suppress longLineCheck 125 'SurfaceFlinger-4831 [001] ...1 80909.599036: 0: E', 126 'SurfaceFlinger-4831 [001] ...1 80909.599068: 0: E', 127 'SurfaceFlinger-4831 [001] ...1 80909.599087: 0: E', 128 'SurfaceFlinger-4831 [001] ...1 80909.599104: 0: E' 129 ]; 130 var m = new tracing.TraceModel(lines.join('\n'), false); 131 assertEquals(0, m.importErrors.length); 132 133 var threads = m.getAllThreads(); 134 assertEquals(1, threads.length); 135 136 var thread = threads[0]; 137 assertEquals(4829, thread.parent.pid); 138 assertEquals(4831, thread.tid); 139 assertEquals('SurfaceFlinger', thread.name); 140 assertEquals(11, thread.sliceGroup.length); 141 }); 142 143 test('androidUserlandChromiumImport', function() { 144 var lines = [ 145 'SandboxedProces-2894 [001] ...1 253.780659: tracing_mark_write: B|2867|DoWorkLoop|arg1=1|cat1', // @suppress longLineCheck 146 'SandboxedProces-2894 [001] ...1 253.780671: tracing_mark_write: B|2867|DeferOrRunPendingTask|source=test=test;task=xyz|cat2', // @suppress longLineCheck 147 'SandboxedProces-2894 [001] ...1 253.780671: tracing_mark_write: E|2867|DeferOrRunPendingTask||cat1', // @suppress longLineCheck 148 'SandboxedProces-2894 [001] ...1 253.780686: tracing_mark_write: B|2867|MessageLoop::RunTask|source=ipc/ipc_sync_message_filter.cc:Send|cat2', // @suppress longLineCheck 149 'SandboxedProces-2894 [001] ...1 253.780700: tracing_mark_write: E|2867|MessageLoop::RunTask||cat1', // @suppress longLineCheck 150 'SandboxedProces-2894 [001] ...1 253.780750: tracing_mark_write: C|2867|counter1|10|cat1', // @suppress longLineCheck 151 'SandboxedProces-2894 [001] ...1 253.780859: tracing_mark_write: E|2867|DoWorkLoop|arg2=2|cat2' // @suppress longLineCheck 152 ]; 153 var m = new tracing.TraceModel(lines.join('\n'), false); 154 assertEquals(0, m.importErrors.length); 155 156 var threads = m.getAllThreads(); 157 assertEquals(1, threads.length); 158 159 var thread = threads[0]; 160 assertEquals(2867, thread.parent.pid); 161 assertEquals(2894, thread.tid); 162 assertEquals('SandboxedProces', thread.name); 163 assertEquals(3, thread.sliceGroup.length); 164 165 assertEquals('test=test', thread.sliceGroup.slices[0].args['source']); 166 assertEquals('cat2', thread.sliceGroup.slices[0].category); 167 assertEquals('DeferOrRunPendingTask', 168 thread.sliceGroup.slices[0].title); 169 assertEquals('xyz', thread.sliceGroup.slices[0].args['task']); 170 assertEquals('ipc/ipc_sync_message_filter.cc:Send', thread.sliceGroup.slices[1].args['source']); // @suppress longLineCheck 171 assertEquals('1', thread.sliceGroup.slices[2].args['arg1']); 172 assertEquals('2', thread.sliceGroup.slices[2].args['arg2']); 173 174 var counters = m.getAllCounters(); 175 assertEquals(1, counters.length); 176 assertEquals('cat1', counters[0].category); 177 assertEquals('counter1', counters[0].name); 178 179 assertEquals(1, counters[0].numSamples); 180 assertEquals(10, counters[0].getSeries(0).getSample(0).value); 181 }); 182 }); 183