• 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.SchedParser 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 testSchedSwitchRE() {
21  var re = tracing.importer.linux_perf._SchedParserTestExports.schedSwitchRE;
22  var x = re.exec('prev_comm=swapper prev_pid=0 prev_prio=120 prev_state=R ' +
23      '==> next_comm=SurfaceFlinger next_pid=178 next_prio=112');
24  assertNotNull(x);
25  assertEquals('swapper', x[1]);
26  assertEquals('0', x[2]);
27  assertEquals('120', x[3]);
28  assertEquals('R', x[4]);
29  assertEquals('SurfaceFlinger', x[5]);
30  assertEquals('178', x[6]);
31  assertEquals('112', x[7]);
32
33  var x = re.exec('prev_comm=.android.chrome prev_pid=1562 prev_prio=120 ' +
34      'prev_state=R ==> next_comm=Binder Thread # next_pid=195 next_prio=120');
35  assertNotNull(x);
36  assertEquals('.android.chrome', x[1]);
37  assertEquals('Binder Thread #', x[5]);
38
39  var x = re.exec('prev_comm=Binder Thread # prev_pid=1562 prev_prio=120 ' +
40      'prev_state=R ==> next_comm=.android.chrome next_pid=195 next_prio=120');
41  assertNotNull(x);
42  assertEquals('Binder Thread #', x[1]);
43  assertEquals('.android.chrome', x[5]);
44
45  // explict test for prev_state of D|W
46  var x = re.exec('prev_comm=.android.chrome prev_pid=1562 prev_prio=120 ' +
47      'prev_state=D|W ==> next_comm=Binder Thread # next_pid=195 ' +
48      'next_prio=120');
49  assertNotNull(x);
50  assertEquals('D|W', x[4]);
51}
52
53function testSchedWakeupRE() {
54  var re = tracing.importer.linux_perf._SchedParserTestExports.schedWakeupRE;
55  var x = re.exec(
56      'comm=SensorService pid=207 prio=112 success=1 target_cpu=000');
57  assertNotNull(x);
58  assertEquals('SensorService', x[1]);
59  assertEquals('207', x[2]);
60  assertEquals('112', x[3]);
61  assertEquals('1', x[4]);
62  assertEquals('000', x[5]);
63}
64
65function testImportOneSequenceWithSchedWakeUp() {
66
67  var lines = [
68    'ndroid.launcher-584   [001] d..3 12622.506890: sched_switch: ' +
69      'prev_comm=ndroid.launcher prev_pid=584 prev_prio=120 prev_state=R+ ' +
70      '==> next_comm=Binder_1 next_pid=217 next_prio=120',
71
72    '       Binder_1-217   [001] d..3 12622.506918: sched_switch: ' +
73      'prev_comm=Binder_1 prev_pid=217 prev_prio=120 prev_state=D ' +
74      '==> next_comm=ndroid.launcher next_pid=584 next_prio=120',
75
76    'ndroid.launcher-584   [001] d..4 12622.506936: sched_wakeup: ' +
77      'comm=Binder_1 pid=217 prio=120 success=1 target_cpu=001',
78
79    'ndroid.launcher-584   [001] d..3 12622.506950: sched_switch: ' +
80      'prev_comm=ndroid.launcher prev_pid=584 prev_prio=120 prev_state=R+ ' +
81      '==> next_comm=Binder_1 next_pid=217 next_prio=120',
82
83    '       Binder_1-217   [001] ...1 12622.507057: tracing_mark_write: ' +
84      'B|128|queueBuffer',
85
86    '       Binder_1-217   [001] ...1 12622.507175: tracing_mark_write: E',
87
88    '       Binder_1-217   [001] d..3 12622.507253: sched_switch: ' +
89      'prev_comm=Binder_1 prev_pid=217 prev_prio=120 prev_state=S ' +
90      '==> next_comm=ndroid.launcher next_pid=584 next_prio=120'
91  ];
92
93  var m = new tracing.Model(lines.join('\n'), false);
94  assertEquals(0, m.importErrors.length);
95
96  var thread = m.findAllThreadsNamed('Binder_1')[0];
97  var cpuSlices = thread.cpuSlices;
98  assertEquals(4, cpuSlices.length);
99
100  var runningSlice = cpuSlices[0];
101  assertEquals('Running', runningSlice.title);
102  assertAlmostEquals(12622506.890, runningSlice.start);
103  assertAlmostEquals(.918 - .890, runningSlice.duration);
104
105  var sleepSlice = cpuSlices[1];
106  assertEquals('Uninterruptible Sleep', sleepSlice.title);
107  assertAlmostEquals(12622506.918, sleepSlice.start);
108  assertAlmostEquals(.936 - .918, sleepSlice.duration);
109
110  var wakeupSlice = cpuSlices[2];
111  assertEquals('Runnable', wakeupSlice.title);
112  assertAlmostEquals(12622506.936, wakeupSlice.start);
113  assertAlmostEquals(.950 - .936, wakeupSlice.duration);
114  assertEquals(584, wakeupSlice.args['wakeup from tid']);
115
116  var runningSlice2 = cpuSlices[3];
117  assertEquals('Running', runningSlice2.title);
118  assertAlmostEquals(12622506.950, runningSlice2.start);
119  assertAlmostEquals(7.253 - 6.950, runningSlice2.duration);
120}
121
122</script>
123</body>
124</html>
125