Upstream version 5.34.104.0
[platform/framework/web/crosswalk.git] / src / third_party / trace-viewer / src / tracing / importer / linux_perf / android_parser_test.js
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
7 tvcm.require('tracing.test_utils');
8 tvcm.require('tracing.importer.linux_perf_importer');
9
10 tvcm.unittest.testSuite('tracing.importer.linux_perf.android_parser_test',
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         assertFalse(m.hasImportWarnings);
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         assertFalse(m.hasImportWarnings);
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         assertFalse(m.hasImportWarnings);
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         assertFalse(m.hasImportWarnings);
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           '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
155         ];
156         var m = new tracing.TraceModel(lines.join('\n'), false);
157         assertFalse(m.hasImportWarnings);
158
159         var threads = m.getAllThreads();
160         assertEquals(1, threads.length);
161
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);
167
168         assertEquals('1', thread.sliceGroup.slices[0].args['arg1']);
169         assertEquals('2', thread.sliceGroup.slices[0].args['arg2']);
170
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']);
176
177         assertEquals('ipc/ipc_sync_message_filter.cc:Send',
178                      thread.sliceGroup.slices[2].args['source']);
179
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']);
184
185         var counters = m.getAllCounters();
186         assertEquals(1, counters.length);
187         assertEquals('cat1', counters[0].category);
188         assertEquals('counter1', counters[0].name);
189
190         assertEquals(1, counters[0].numSamples);
191         assertEquals(10, counters[0].getSeries(0).getSample(0).value);
192
193         assertEquals(Math.round((253.780659 - (255.663276 - 128)) * 1000),
194                      Math.round(thread.sliceGroup.slices[0].start));
195       });
196     });