• 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>LinuxPerfAndroidParser 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('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.TimelineModel(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.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.TimelineModel(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.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.TimelineModel(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.pid);
119  assertEquals(4831, thread.tid);
120  assertEquals('SurfaceFlinger', thread.name);
121  assertEquals(11, thread.slices.length);
122}
123
124</script>
125</body>
126</html>
127