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.
7 tvcm.require('tracing.test_utils');
8 tvcm.require('tracing.timeline_track_view');
9 tvcm.require('tracing.trace_model');
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;
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());
27 assertEquals(1, track.children.length);
28 assertTrue(track.hasVisibleContent);
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());
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]);
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();
53 g.push(newAsyncSlice(0, 1, t1, t1));
54 g.push(newAsyncSlice(0, 1.5, t1, t1));
57 var track = new AsyncSliceGroupTrack(new tracing.TimelineViewport());
60 var subRows = track.subRows;
62 assertEquals(2, subRows.length);
63 assertEquals(1, subRows[0].length);
64 assertEquals(g.slices[0].subSlices[0], subRows[0][0]);
66 assertEquals(1, subRows[1].length);
67 assertEquals(g.slices[1].subSlices[0], subRows[1][0]);
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));
79 var track = new AsyncSliceGroupTrack(new tracing.TimelineViewport());
81 var subRows = track.subRows;
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]);
88 assertEquals(1, subRows[1].length);
89 assertEquals(g.slices[1].subSlices[0], subRows[1][0]);
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();
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));
103 var track = new AsyncSliceGroupTrack(new tracing.TimelineViewport());
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]);
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());
125 var subRows = track.subRows;
127 var subGroups = g.computeSubGroups();
128 assertEquals(2, subGroups.length);
130 assertEquals(g.name, subGroups[0].name);
131 assertEquals(1, subGroups[0].slices.length);
132 assertEquals(g.slices[0], subGroups[0].slices[0]);
134 assertEquals(g.name, subGroups[1].name);
135 assertEquals(1, subGroups[1].slices.length);
136 assertEquals(g.slices[1], subGroups[1].slices[0]);