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.
7 tvcm.require('tracing.test_utils');
8 tvcm.require('tracing.importer.linux_perf_importer');
10 tvcm.unittest.testSuite('tracing.importer.linux_perf.android_parser_test',
12 test('androidUserlandImport', function() {
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'
42 var m = new tracing.TraceModel(lines.join('\n'), false);
43 assertFalse(m.hasImportWarnings);
45 var threads = m.getAllThreads();
46 assertEquals(1, threads.length);
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);
55 test('androidUserlandImportWithSpacesInThreadName', function() {
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
60 var m = new tracing.TraceModel(lines.join('\n'), false);
61 assertFalse(m.hasImportWarnings);
63 var threads = m.getAllThreads();
64 assertEquals(1, threads.length);
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);
73 test('androidAsyncUserlandImport', function() {
75 'ndroid.launcher-9649 ( 9649) [000] ...1 1990280.663276: ' +
76 'tracing_mark_write: S|9649|animator:childrenOutlineAlpha|' +
78 'ndroid.launcher-9649 ( 9649) [000] ...1 1990280.781445: ' +
79 'tracing_mark_write: F|9649|animator:childrenOutlineAlpha|' +
82 var m = new tracing.TraceModel(lines.join('\n'), false);
83 assertFalse(m.hasImportWarnings);
85 var threads = m.getAllThreads();
86 assertEquals(1, threads.length);
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);
95 var slice = thread.asyncSliceGroup.slices[0];
96 assertEquals('animator:childrenOutlineAlpha', slice.title);
97 assertAlmostEquals(118.169, slice.duration);
100 test('androidUserlandLegacyKernelImport', function() {
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'
130 var m = new tracing.TraceModel(lines.join('\n'), false);
131 assertFalse(m.hasImportWarnings);
133 var threads = m.getAllThreads();
134 assertEquals(1, threads.length);
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);
143 test('androidUserlandChromiumImport', function() {
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 'SandboxedProces-2894 [000] ...1 255.663276: tracing_mark_write: S|2867|async|1113053968|arg1=1;arg2=2|cat1', // @suppress longLineCheck
153 'SandboxedProces-2894 [000] ...1 255.663276: tracing_mark_write: F|2867|async|1113053968|arg3=3|cat1', // @suppress longLineCheck
154 'SandboxedProces-2894 [000] ...1 255.663276: tracing_mark_write: trace_event_clock_sync: parent_ts=128' // @suppress longLineCheck
156 var m = new tracing.TraceModel(lines.join('\n'), false);
157 assertFalse(m.hasImportWarnings);
159 var threads = m.getAllThreads();
160 assertEquals(1, threads.length);
162 var thread = threads[0];
163 assertEquals(2867, thread.parent.pid);
164 assertEquals(2894, thread.tid);
165 assertEquals('SandboxedProces', thread.name);
166 assertEquals(3, thread.sliceGroup.length);
168 assertEquals('1', thread.sliceGroup.slices[0].args['arg1']);
169 assertEquals('2', thread.sliceGroup.slices[0].args['arg2']);
171 assertEquals('test=test', thread.sliceGroup.slices[1].args['source']);
172 assertEquals('cat2', thread.sliceGroup.slices[1].category);
173 assertEquals('DeferOrRunPendingTask',
174 thread.sliceGroup.slices[1].title);
175 assertEquals('xyz', thread.sliceGroup.slices[1].args['task']);
177 assertEquals('ipc/ipc_sync_message_filter.cc:Send',
178 thread.sliceGroup.slices[2].args['source']);
180 assertEquals(1, thread.asyncSliceGroup.length);
181 assertEquals('1', thread.asyncSliceGroup.slices[0].args['arg1']);
182 assertEquals('2', thread.asyncSliceGroup.slices[0].args['arg2']);
183 assertEquals('3', thread.asyncSliceGroup.slices[0].args['arg3']);
185 var counters = m.getAllCounters();
186 assertEquals(1, counters.length);
187 assertEquals('cat1', counters[0].category);
188 assertEquals('counter1', counters[0].name);
190 assertEquals(1, counters[0].numSamples);
191 assertEquals(10, counters[0].getSeries(0).getSample(0).value);
193 assertEquals(Math.round((253.780659 - (255.663276 - 128)) * 1000),
194 Math.round(thread.sliceGroup.slices[0].start));