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