Upstream version 9.37.197.0
[platform/framework/web/crosswalk.git] / src / third_party / trace-viewer / trace_viewer / tracing / tracks / async_slice_group_track_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.timeline_track_view');
9 tvcm.require('tracing.trace_model');
10
11 tvcm.unittest.testSuite('tracing.tracks.async_slice_group_track_test', function() { // @suppress longLineCheck
12   var AsyncSliceGroup = tracing.trace_model.AsyncSliceGroup;
13   var AsyncSliceGroupTrack = tracing.tracks.AsyncSliceGroupTrack;
14   var Process = tracing.trace_model.Process;
15   var Thread = tracing.trace_model.Thread;
16   var newAsyncSlice = tracing.test_utils.newAsyncSlice;
17
18   test('filterSubRows', function() {
19     var model = new tracing.TraceModel();
20     var p1 = new Process(model, 1);
21     var t1 = new Thread(p1, 1);
22     var g = new AsyncSliceGroup();
23     g.push(newAsyncSlice(0, 1, t1, t1));
24     var track = new AsyncSliceGroupTrack(new tracing.TimelineViewport());
25     track.group = g;
26
27     assertEquals(1, track.children.length);
28     assertTrue(track.hasVisibleContent);
29   });
30
31   test('rebuildSubRows_twoNonOverlappingSlices', function() {
32     var model = new tracing.TraceModel();
33     var p1 = new Process(model, 1);
34     var t1 = new Thread(p1, 1);
35     var g = new AsyncSliceGroup();
36     g.push(newAsyncSlice(0, 1, t1, t1));
37     g.push(newAsyncSlice(1, 1, t1, t1));
38     var track = new AsyncSliceGroupTrack(new tracing.TimelineViewport());
39     track.group = g;
40     var subRows = track.subRows;
41     assertEquals(1, subRows.length);
42     assertEquals(2, subRows[0].length);
43     assertEquals(g.slices[0].subSlices[0], subRows[0][0]);
44     assertEquals(g.slices[1].subSlices[0], subRows[0][1]);
45   });
46
47   test('rebuildSubRows_twoOverlappingSlices', function() {
48     var model = new tracing.TraceModel();
49     var p1 = new Process(model, 1);
50     var t1 = new Thread(p1, 1);
51     var g = new AsyncSliceGroup();
52
53     g.push(newAsyncSlice(0, 1, t1, t1));
54     g.push(newAsyncSlice(0, 1.5, t1, t1));
55     g.updateBounds();
56
57     var track = new AsyncSliceGroupTrack(new tracing.TimelineViewport());
58     track.group = g;
59
60     var subRows = track.subRows;
61
62     assertEquals(2, subRows.length);
63     assertEquals(1, subRows[0].length);
64     assertEquals(g.slices[0].subSlices[0], subRows[0][0]);
65
66     assertEquals(1, subRows[1].length);
67     assertEquals(g.slices[1].subSlices[0], subRows[1][0]);
68   });
69
70   test('rebuildSubRows_threePartlyOverlappingSlices', function() {
71     var model = new tracing.TraceModel();
72     var p1 = new Process(model, 1);
73     var t1 = new Thread(p1, 1);
74     var g = new AsyncSliceGroup();
75     g.push(newAsyncSlice(0, 1, t1, t1));
76     g.push(newAsyncSlice(0, 1.5, t1, t1));
77     g.push(newAsyncSlice(1, 1.5, t1, t1));
78     g.updateBounds();
79     var track = new AsyncSliceGroupTrack(new tracing.TimelineViewport());
80     track.group = g;
81     var subRows = track.subRows;
82
83     assertEquals(2, subRows.length);
84     assertEquals(2, subRows[0].length);
85     assertEquals(g.slices[0].subSlices[0], subRows[0][0]);
86     assertEquals(g.slices[2].subSlices[0], subRows[0][1]);
87
88     assertEquals(1, subRows[1].length);
89     assertEquals(g.slices[1].subSlices[0], subRows[1][0]);
90   });
91
92   test('rebuildSubRows_threeOverlappingSlices', function() {
93     var model = new tracing.TraceModel();
94     var p1 = new Process(model, 1);
95     var t1 = new Thread(p1, 1);
96     var g = new AsyncSliceGroup();
97
98     g.push(newAsyncSlice(0, 1, t1, t1));
99     g.push(newAsyncSlice(0, 1.5, t1, t1));
100     g.push(newAsyncSlice(2, 1, t1, t1));
101     g.updateBounds();
102
103     var track = new AsyncSliceGroupTrack(new tracing.TimelineViewport());
104     track.group = g;
105
106     var subRows = track.subRows;
107     assertEquals(2, subRows.length);
108     assertEquals(2, subRows[0].length);
109     assertEquals(g.slices[0].subSlices[0], subRows[0][0]);
110     assertEquals(g.slices[2].subSlices[0], subRows[0][1]);
111     assertEquals(1, subRows[1].length);
112     assertEquals(g.slices[1].subSlices[0], subRows[1][0]);
113   });
114
115   test('computeSubGroups_twoThreadSpecificSlices', function() {
116     var model = new tracing.TraceModel();
117     var p1 = new Process(model, 1);
118     var t1 = new Thread(p1, 1);
119     var t2 = new Thread(p1, 2);
120     var g = new AsyncSliceGroup();
121     g.push(newAsyncSlice(0, 1, t1, t1));
122     g.push(newAsyncSlice(0, 1, t2, t2));
123     var track = new AsyncSliceGroupTrack(new tracing.TimelineViewport());
124     track.group = g;
125     var subRows = track.subRows;
126
127     var subGroups = g.computeSubGroups();
128     assertEquals(2, subGroups.length);
129
130     assertEquals(g.name, subGroups[0].name);
131     assertEquals(1, subGroups[0].slices.length);
132     assertEquals(g.slices[0], subGroups[0].slices[0]);
133
134     assertEquals(g.name, subGroups[1].name);
135     assertEquals(1, subGroups[1].slices.length);
136     assertEquals(g.slices[1], subGroups[1].slices[0]);
137   });
138 });