Update To 11.40.268.0
[platform/framework/web/crosswalk.git] / src / third_party / trace-viewer / trace_viewer / tracing / importer / linux_perf / sched_parser_test.html
1 <!DOCTYPE html>
2 <!--
3 Copyright (c) 2013 The Chromium Authors. All rights reserved.
4 Use of this source code is governed by a BSD-style license that can be
5 found in the LICENSE file.
6 -->
7
8 <link rel="import" href="/tracing/test_utils.html">
9 <link rel="import" href="/tracing/importer/linux_perf_importer.html">
10
11 <script>
12 'use strict';
13
14 tv.unittest.testSuite(function() { // @suppress longLineCheck
15   test('schedSwitchRE', function() {
16     var re = tracing.importer.linux_perf._SchedParserTestExports.schedSwitchRE;
17     var x = re.exec('prev_comm=swapper prev_pid=0 prev_prio=120 prev_state=R ' +
18         '==> next_comm=SurfaceFlinger next_pid=178 next_prio=112');
19     assertNotNull(x);
20     assertEquals('swapper', x[1]);
21     assertEquals('0', x[2]);
22     assertEquals('120', x[3]);
23     assertEquals('R', x[4]);
24     assertEquals('SurfaceFlinger', x[5]);
25     assertEquals('178', x[6]);
26     assertEquals('112', x[7]);
27
28     var x = re.exec('prev_comm=.android.chrome prev_pid=1562 prev_prio=120 prev_state=R ==> next_comm=Binder Thread # next_pid=195 next_prio=120'); // @suppress longLineCheck
29     assertNotNull(x);
30     assertEquals('.android.chrome', x[1]);
31     assertEquals('Binder Thread #', x[5]);
32
33     var x = re.exec('prev_comm=Binder Thread # prev_pid=1562 prev_prio=120 prev_state=R ==> next_comm=.android.chrome next_pid=195 next_prio=120'); // @suppress longLineCheck
34     assertNotNull(x);
35     assertEquals('Binder Thread #', x[1]);
36     assertEquals('.android.chrome', x[5]);
37
38     // explict test for prev_state of D|W
39     var x = re.exec('prev_comm=.android.chrome prev_pid=1562 prev_prio=120 ' +
40         'prev_state=D|W ==> next_comm=Binder Thread # next_pid=195 ' +
41         'next_prio=120');
42     assertNotNull(x);
43     assertEquals('D|W', x[4]);
44   });
45
46   test('schedWakeupRE', function() {
47     var re = tracing.importer.linux_perf._SchedParserTestExports.schedWakeupRE;
48     var x = re.exec(
49         'comm=SensorService pid=207 prio=112 success=1 target_cpu=000');
50     assertNotNull(x);
51     assertEquals('SensorService', x[1]);
52     assertEquals('207', x[2]);
53     assertEquals('112', x[3]);
54     assertEquals('1', x[4]);
55     assertEquals('000', x[5]);
56   });
57
58   test('importOneSequenceWithSchedWakeUp', function() {
59     var lines = [
60       'ndroid.launcher-584   [001] d..3 12622.506890: sched_switch: prev_comm=ndroid.launcher prev_pid=584 prev_prio=120 prev_state=R+ ==> next_comm=Binder_1 next_pid=217 next_prio=120', // @suppress longLineCheck
61       '       Binder_1-217   [001] d..3 12622.506918: sched_switch: prev_comm=Binder_1 prev_pid=217 prev_prio=120 prev_state=D ==> next_comm=ndroid.launcher next_pid=584 next_prio=120', // @suppress longLineCheck
62       'ndroid.launcher-584   [001] d..4 12622.506936: sched_wakeup: comm=Binder_1 pid=217 prio=120 success=1 target_cpu=001', // @suppress longLineCheck
63       'ndroid.launcher-584   [001] d..3 12622.506950: sched_switch: prev_comm=ndroid.launcher prev_pid=584 prev_prio=120 prev_state=R+ ==> next_comm=Binder_1 next_pid=217 next_prio=120', // @suppress longLineCheck
64       '       Binder_1-217   [001] ...1 12622.507057: tracing_mark_write: B|128|queueBuffer', // @suppress longLineCheck
65       '       Binder_1-217   [001] ...1 12622.507175: tracing_mark_write: E',
66       '       Binder_1-217   [001] d..3 12622.507253: sched_switch: prev_comm=Binder_1 prev_pid=217 prev_prio=120 prev_state=S ==> next_comm=ndroid.launcher next_pid=584 next_prio=120' // @suppress longLineCheck
67     ];
68
69     var m = new tracing.TraceModel(lines.join('\n'), false);
70     assertFalse(m.hasImportWarnings);
71
72     var thread = m.findAllThreadsNamed('Binder_1')[0];
73     var timeSlices = thread.timeSlices;
74     assertEquals(4, timeSlices.length);
75
76     var runningSlice = timeSlices[0];
77     assertEquals('Running', runningSlice.title);
78     assertAlmostEquals(12622506.890, runningSlice.start);
79     assertAlmostEquals(.918 - .890, runningSlice.duration);
80
81     var sleepSlice = timeSlices[1];
82     assertEquals('Uninterruptible Sleep', sleepSlice.title);
83     assertAlmostEquals(12622506.918, sleepSlice.start);
84     assertAlmostEquals(.936 - .918, sleepSlice.duration);
85
86     var wakeupSlice = timeSlices[2];
87     assertEquals('Runnable', wakeupSlice.title);
88     assertAlmostEquals(12622506.936, wakeupSlice.start);
89     assertAlmostEquals(.950 - .936, wakeupSlice.duration);
90     assertEquals(584, wakeupSlice.args['wakeup from tid']);
91
92     var runningSlice2 = timeSlices[3];
93     assertEquals('Running', runningSlice2.title);
94     assertAlmostEquals(12622506.950, runningSlice2.start);
95     assertAlmostEquals(7.253 - 6.950, runningSlice2.duration);
96   });
97
98   test('importWithUnknownSleepState', function() {
99     var lines = [
100       'ndroid.launcher-584   [001] d..3 12622.506890: sched_switch: prev_comm=ndroid.launcher prev_pid=584 prev_prio=120 prev_state=R+ ==> next_comm=Binder_1 next_pid=217 next_prio=120', // @suppress longLineCheck
101       '       Binder_1-217   [001] d..3 12622.506918: sched_switch: prev_comm=Binder_1 prev_pid=217 prev_prio=120 prev_state=F|O ==> next_comm=ndroid.launcher next_pid=584 next_prio=120', // @suppress longLineCheck
102       'ndroid.launcher-584   [001] d..4 12622.506936: sched_wakeup: comm=Binder_1 pid=217 prio=120 success=1 target_cpu=001', // @suppress longLineCheck
103       'ndroid.launcher-584   [001] d..3 12622.506950: sched_switch: prev_comm=ndroid.launcher prev_pid=584 prev_prio=120 prev_state=R+ ==> next_comm=Binder_1 next_pid=217 next_prio=120', // @suppress longLineCheck
104       '       Binder_1-217   [001] ...1 12622.507057: tracing_mark_write: B|128|queueBuffer', // @suppress longLineCheck
105       '       Binder_1-217   [001] ...1 12622.507175: tracing_mark_write: E',
106       '       Binder_1-217   [001] d..3 12622.507253: sched_switch: prev_comm=Binder_1 prev_pid=217 prev_prio=120 prev_state=F|O ==> next_comm=ndroid.launcher next_pid=584 next_prio=120' // @suppress longLineCheck
107     ];
108
109     var m;
110     assertDoesNotThrow(function() {
111       m = new tracing.TraceModel(lines.join('\n'), false);
112     });
113     assertTrue(m.hasImportWarnings);
114     assertEquals('Unrecognized sleep state: F|O', m.importWarnings[0].message);
115
116     var thread = m.findAllThreadsNamed('Binder_1')[0];
117     var timeSlices = thread.timeSlices;
118
119     assertEquals('UNKNOWN', timeSlices[1].title);
120   });
121
122   test('importWithUninterruptibleSleep', function() {
123     var lines = [
124       'ndroid.launcher-584   [001] d..3 12622.506890: sched_switch: ' +
125           'prev_comm=ndroid.launcher prev_pid=584 ' +
126           'prev_prio=120 prev_state=R+ ' +
127           '==> next_comm=Binder_1 next_pid=217 next_prio=120',
128
129       '       Binder_1-217   [001] d..3 12622.506918: sched_switch: ' +
130           'prev_comm=Binder_1 prev_pid=217 prev_prio=120 prev_state=D|K ' +
131           '==> next_comm=ndroid.launcher next_pid=584 next_prio=120',
132
133       'ndroid.launcher-584   [001] d..4 12622.506936: sched_wakeup: ' +
134           'comm=Binder_1 pid=217 prio=120 success=1 target_cpu=001',
135
136       'ndroid.launcher-584   [001] d..3 12622.506950: sched_switch: ' +
137           'prev_comm=ndroid.launcher prev_pid=584 ' +
138           'prev_prio=120 prev_state=R+ ' +
139           '==> next_comm=Binder_1 next_pid=217 next_prio=120',
140
141       '       Binder_1-217   [001] ...1 12622.507057: tracing_mark_write: ' +
142           'B|128|queueBuffer',
143
144       '       Binder_1-217   [001] ...1 12622.507175: tracing_mark_write: E',
145
146       '       Binder_1-217   [001] d..3 12622.507253: sched_switch: ' +
147           'prev_comm=Binder_1 prev_pid=217 prev_prio=120 prev_state=S ' +
148           '==> next_comm=ndroid.launcher next_pid=584 next_prio=120'
149     ];
150
151     var m = new tracing.TraceModel(lines.join('\n'), false);
152     assertFalse(m.hasImportWarnings);
153
154     var thread = m.findAllThreadsNamed('Binder_1')[0];
155     var timeSlices = thread.timeSlices;
156     assertEquals(4, timeSlices.length);
157
158     var wakeKillSlice = timeSlices[1];
159     assertEquals('Uninterruptible Sleep | WakeKill', wakeKillSlice.title);
160     assertAlmostEquals(12622506.918, wakeKillSlice.start);
161     assertAlmostEquals(.936 - .918, wakeKillSlice.duration);
162   });
163 });
164 </script>
165