Upstream version 7.36.149.0
[platform/framework/web/crosswalk.git] / src / third_party / trace-viewer / trace_viewer / tracing / trace_model / cpu_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.trace_model');
9
10 tvcm.unittest.testSuite('tracing.trace_model.cpu_test', function() {
11   var Cpu = tracing.trace_model.Cpu;
12
13   test('cpuBounds_Empty', function() {
14     var cpu = new Cpu({}, 1);
15     cpu.updateBounds();
16     assertEquals(undefined, cpu.bounds.min);
17     assertEquals(undefined, cpu.bounds.max);
18   });
19
20   test('cpuBounds_OneSlice', function() {
21     var cpu = new Cpu({}, 1);
22     cpu.slices.push(tracing.test_utils.newSlice(1, 3));
23     cpu.updateBounds();
24     assertEquals(1, cpu.bounds.min);
25     assertEquals(4, cpu.bounds.max);
26   });
27
28   test('getOrCreateCounter', function() {
29     var cpu = new Cpu({}, 1);
30     var ctrBar = cpu.getOrCreateCounter('foo', 'bar');
31     var ctrBar2 = cpu.getOrCreateCounter('foo', 'bar');
32     assertEquals(ctrBar2, ctrBar);
33   });
34
35   test('shiftTimestampsForward', function() {
36     var cpu = new Cpu({}, 1);
37     var ctr = cpu.getOrCreateCounter('foo', 'bar');
38     cpu.slices.push(tracing.test_utils.newSlice(1, 3));
39     var shiftCount = 0;
40     ctr.shiftTimestampsForward = function(ts) {
41       if (ts == 0.32)
42         shiftCount++;
43     };
44     cpu.slices.push(tracing.test_utils.newSlice(1, 3));
45     cpu.shiftTimestampsForward(0.32);
46     assertEquals(shiftCount, 1);
47     assertEquals(1.32, cpu.slices[0].start);
48   });
49
50
51   function newCpuSliceNamed(cpu, name, start, duration, opt_thread) {
52     var s = new tracing.trace_model.CpuSlice(
53         'cat', name, 0, start, {}, duration);
54     s.cpu = cpu;
55     if (opt_thread)
56       s.threadThatWasRunning = opt_thread;
57     return s;
58   }
59
60   function newTimeSliceNamed(thread, name, start, duration, opt_cpu) {
61     var s = new tracing.trace_model.ThreadTimeSlice(
62         thread, 'cat', name, 0, start, {}, duration);
63     if (opt_cpu)
64       s.cpuOnWhichThreadWasRunning = opt_cpu;
65     return s;
66   }
67
68   test('getTimesliceForCpuSlice', function() {
69     var m = new tracing.TraceModel();
70     var cpu = m.kernel.getOrCreateCpu(1);
71     var t2 = m.getOrCreateProcess(1).getOrCreateThread(2);
72     t2.timeSlices = [newTimeSliceNamed(t2, 'Running', 0, 10, cpu),
73                      newTimeSliceNamed(t2, 'Sleeping', 10, 10),
74                      newTimeSliceNamed(t2, 'Running', 20, 10, cpu)];
75     cpu.slices = [newCpuSliceNamed(cpu, 'x', 0, 10, t2),
76                   newCpuSliceNamed(cpu, 'x', 20, 10, t2)];
77     assertEquals(t2.timeSlices[0], cpu.slices[0].getAssociatedTimeslice());
78     assertEquals(t2.timeSlices[2], cpu.slices[1].getAssociatedTimeslice());
79
80     assertEquals(cpu.slices[0], t2.timeSlices[0].getAssociatedCpuSlice());
81     assertEquals(undefined, t2.timeSlices[1].getAssociatedCpuSlice());
82     assertEquals(cpu.slices[1], t2.timeSlices[2].getAssociatedCpuSlice());
83
84     assertEquals(0, cpu.indexOf(cpu.slices[0]));
85     assertEquals(1, cpu.indexOf(cpu.slices[1]));
86
87     assertEquals(0, t2.indexOfTimeSlice(t2.timeSlices[0]));
88     assertEquals(1, t2.indexOfTimeSlice(t2.timeSlices[1]));
89     assertEquals(2, t2.indexOfTimeSlice(t2.timeSlices[2]));
90   });
91
92   test('putToSleepFor', function() {
93     var m = new tracing.TraceModel();
94     var cpu = m.kernel.getOrCreateCpu(1);
95
96     var t2 = m.getOrCreateProcess(1).getOrCreateThread(2);
97     var t3 = m.getOrCreateProcess(1).getOrCreateThread(3);
98     t2.timeSlices = [newTimeSliceNamed(t2, 'Running', 0, 10, cpu),
99                      newTimeSliceNamed(t2, 'Sleeping', 10, 10),
100                      newTimeSliceNamed(t2, 'Running', 20, 10, cpu)];
101     t3.timeSlices = [newTimeSliceNamed(t3, 'Running', 10, 5, cpu)];
102     cpu.slices = [newCpuSliceNamed(cpu, 'x', 0, 10, t2),
103                    newCpuSliceNamed(cpu, 'x', 10, 5, t3),
104                    newCpuSliceNamed(cpu, 'x', 20, 10, t2)];
105
106     // At timeslice 0, the thread is running.
107     assertEquals(
108         undefined, t2.timeSlices[0].getCpuSliceThatTookCpu());
109
110     // t2 lost the cpu to t3 at t=10
111     assertEquals(
112         cpu.slices[1],
113         t2.timeSlices[1].getCpuSliceThatTookCpu());
114   });
115
116   test('putToSleepForNothing', function() {
117     var m = new tracing.TraceModel();
118     var cpu = m.kernel.getOrCreateCpu(1);
119
120     var t2 = m.getOrCreateProcess(1).getOrCreateThread(2);
121     var t3 = m.getOrCreateProcess(1).getOrCreateThread(3);
122     t2.timeSlices = [newTimeSliceNamed(t2, 'Running', 0, 10, cpu),
123                      newTimeSliceNamed(t2, 'Sleeping', 10, 10),
124                      newTimeSliceNamed(t2, 'Running', 20, 10, cpu)];
125     t3.timeSlices = [newTimeSliceNamed(t3, 'Running', 15, 5, cpu)];
126     cpu.slices = [newCpuSliceNamed(cpu, 'x', 0, 10, t2),
127                    newCpuSliceNamed(cpu, 'x', 15, 5, t3),
128                    newCpuSliceNamed(cpu, 'x', 20, 10, t2)];
129     assertEquals(
130         undefined,
131         t2.timeSlices[1].getCpuSliceThatTookCpu());
132   });
133 });