Upstream version 7.36.149.0
[platform/framework/web/crosswalk.git] / src / third_party / trace-viewer / trace_viewer / tracing / time_summary_side_panel_test.js
1 // Copyright (c) 2014 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.time_summary_side_panel');
8 tvcm.require('tracing.trace_model');
9 tvcm.require('tracing.test_utils');
10
11 tvcm.unittest.testSuite('tracing.time_summary_side_panel_test', function() {
12   var newSliceNamed = tracing.test_utils.newSliceNamed;
13
14   function createModel() {
15     var m = new tracing.TraceModel();
16     m.importTraces([], false, false, function() {
17       var browserProcess = m.getOrCreateProcess(1);
18       var browserMain = browserProcess.getOrCreateThread(2);
19       browserMain.name = 'CrBrowserMain';
20       browserMain.sliceGroup.beginSlice('cat', 'Task', 0, undefined, 0);
21       browserMain.sliceGroup.endSlice(10, 9);
22       browserMain.sliceGroup.beginSlice('cat', 'Task', 20, undefined, 10);
23       browserMain.sliceGroup.endSlice(30, 20);
24
25       var rendererProcess = m.getOrCreateProcess(4);
26       var rendererMain = rendererProcess.getOrCreateThread(5);
27       rendererMain.name = 'CrRendererMain';
28       rendererMain.sliceGroup.beginSlice('cat', 'Task', 0, undefined, 0);
29       rendererMain.sliceGroup.endSlice(30, 25);
30       rendererMain.sliceGroup.beginSlice('cat', 'Task', 40, undefined, 40);
31       rendererMain.sliceGroup.endSlice(60, 50);
32     });
33     return m;
34   }
35
36   test('group', function() {
37     var m = createModel();
38     var group = new tracing.ResultsForGroup(m, 'foo');
39     group.appendThreadSlices(m.bounds, m.processes[1].threads[2]);
40     assertEquals(20, group.wallTime);
41     assertEquals(19, group.cpuTime);
42   });
43
44   test('trim', function() {
45     var groupData = [
46       {
47         value: 2.854999999999997,
48         label: '156959'
49       },
50       {
51         value: 9.948999999999998,
52         label: '16131'
53       },
54       {
55         value: 42.314000000000725,
56         label: '51511'
57       },
58       {
59         value: 31.06900000000028,
60         label: 'AudioOutputDevice'
61       },
62       {
63         value: 1.418,
64         label: 'BrowserBlockingWorker2/50951'
65       },
66       {
67         value: 0.044,
68         label: 'BrowserBlockingWorker3/50695'
69       },
70       {
71         value: 18.52599999999993,
72         label: 'Chrome_ChildIOThread'
73       },
74       {
75         value: 2.888,
76         label: 'Chrome_FileThread'
77       },
78       {
79         value: 0.067,
80         label: 'Chrome_HistoryThread'
81       },
82       {
83         value: 25.421000000000046,
84         label: 'Chrome_IOThread'
85       },
86       {
87         value: 0.019,
88         label: 'Chrome_ProcessLauncherThread'
89       },
90       {
91         value: 643.087999999995,
92         label: 'Compositor'
93       },
94       {
95         value: 4.049999999999973,
96         label: 'CompositorRasterWorker1/22031'
97       },
98       {
99         value: 50.040000000000106,
100         label: 'CrBrowserMain'
101       },
102       {
103         value: 1256.5130000000042,
104         label: 'CrGpuMain'
105       },
106       {
107         value: 5502.19499999999,
108         label: 'CrRendererMain'
109       },
110       {
111         value: 15.552999999999862,
112         label: 'FFmpegDemuxer'
113       },
114       {
115         value: 63.706000000001524,
116         label: 'Media'
117       },
118       {
119         value: 2.7419999999999987,
120         label: 'PowerSaveBlocker'
121       },
122       {
123         value: 0.11500000000000005,
124         label: 'Watchdog'
125       }
126     ];
127
128     var groups = [];
129     var m = new tracing.TraceModel();
130     m.importTraces([], false, false, function() {
131       var start = 0;
132       groupData.forEach(function(groupData) {
133         var group = new tracing.ResultsForGroup(m, groupData.label);
134
135         var slice = newSliceNamed(groupData.label, start, groupData.value);
136         start += groupData.value;
137         group.allSlices.push(slice);
138         group.topLevelSlices.push(slice);
139
140         groups.push(group);
141       });
142     });
143
144
145     function getValueFromGroup(d) { return d.wallTime; }
146
147     var otherGroup = new tracing.ResultsForGroup(m, 'Other');
148     var newGroups = tracing.trimPieChartData(
149         groups, otherGroup, getValueFromGroup);
150
151     // Visualize the data once its trimmed.
152     var chart = tracing.createPieChartFromResultGroups(
153         newGroups, 'Trimmed', getValueFromGroup);
154     this.addHTMLOutput(chart);
155     chart.setSize(chart.getMinSize());
156   });
157
158
159   test('basic', function() {
160     var m = createModel();
161     assertTrue(tracing.TimeSummarySidePanel.supportsModel(m).supported);
162
163     var panel = new tracing.TimeSummarySidePanel();
164     this.addHTMLOutput(panel);
165     panel.model = m;
166     panel.style.border = '1px solid black';
167   });
168 });