blob: c5b2e61e51f9c8f0eba1b8a79f3a5557e357e335 [file] [log] [blame]
Chris Craikb122baf2015-03-05 13:58:42 -08001<!DOCTYPE html>
2<!--
3Copyright (c) 2013 The Chromium Authors. All rights reserved.
4Use of this source code is governed by a BSD-style license that can be
5found in the LICENSE file.
6-->
7
8<link rel="import" href="/base/deep_utils.html">
9<link rel="import" href="/core/analysis/multi_event_details_table.html">
10<link rel="import" href="/core/test_utils.html">
11<link rel="import" href="/core/selection.html">
12<link rel="import" href="/core/trace_model/trace_model.html">
13
14<script>
15'use strict';
16
17tv.b.unittest.testSuite(function() {
18 var Model = tv.c.TraceModel;
19 var Thread = tv.c.trace_model.Thread;
20 var Selection = tv.c.Selection;
21 var newSliceEx = tv.c.test_utils.newSliceEx;
22
Chris Craikbeca7ae2015-04-07 13:29:55 -070023 test('sortingOfFirstColumn', function() {
24 var model = new Model();
25 var thread = model.getOrCreateProcess(1).getOrCreateThread(2);
26 var tsg = thread.sliceGroup;
Chris Craik44c28202015-05-12 17:25:16 -070027 var sA = tsg.pushSlice(newSliceEx({title: 'a', start: 1, end: 2,
28 cpuStart: 1, cpuEnd: 1.75}));
29 var sB = tsg.pushSlice(newSliceEx({title: 'a', start: 0, end: 3,
30 cpuStart: 0, cpuEnd: 3}));
31 var sC = tsg.pushSlice(newSliceEx({title: 'a', start: 4, end: 5,
32 cpuStart: 3, cpuEnd: 3.75}));
Chris Craikbeca7ae2015-04-07 13:29:55 -070033 tsg.createSubSlices();
34
35 var threadTrack = {};
36 threadTrack.thread = thread;
37
38 var selection = new Selection(tsg.slices);
39
40 var viewEl = document.createElement('tv-c-a-multi-event-details-table');
41 viewEl.selection = selection;
42 this.addHTMLOutput(viewEl);
43
44 var table = viewEl.$.table;
Chris Craik44c28202015-05-12 17:25:16 -070045 var cmpResult = table.tableColumns[0].cmp(sA, sB);
Chris Craikbeca7ae2015-04-07 13:29:55 -070046 assert.equal(cmpResult, 1);
47 });
48
Chris Craikb122baf2015-03-05 13:58:42 -080049 test('withCpuTime', function() {
50 var model = new Model();
51 var thread = model.getOrCreateProcess(1).getOrCreateThread(2);
52 var tsg = thread.sliceGroup;
53 tsg.pushSlice(newSliceEx({title: 'a', start: 0, end: 3,
54 cpuStart: 0, cpuEnd: 3}));
55 tsg.pushSlice(newSliceEx({title: 'a', start: 1, end: 2,
56 cpuStart: 1, cpuEnd: 1.75}));
57 tsg.pushSlice(newSliceEx({title: 'a', start: 4, end: 5,
58 cpuStart: 3, cpuEnd: 3.75}));
59 tsg.createSubSlices();
60
61 var threadTrack = {};
62 threadTrack.thread = thread;
63
64 var selection = new Selection(tsg.slices);
65
66 var viewEl = document.createElement('tv-c-a-multi-event-details-table');
67 viewEl.selection = selection;
68 this.addHTMLOutput(viewEl);
69 });
70
71 test('withoutCpuTime', function() {
72 var model = new Model();
73 var thread = model.getOrCreateProcess(1).getOrCreateThread(2);
74 var tsg = thread.sliceGroup;
75 tsg.pushSlice(newSliceEx({title: 'a', start: 0, end: 3}));
76 tsg.pushSlice(newSliceEx({title: 'a', start: 1, end: 2}));
77 tsg.pushSlice(newSliceEx({title: 'a', start: 4, end: 5}));
78 tsg.createSubSlices();
79
80 var threadTrack = {};
81 threadTrack.thread = thread;
82
83 var selection = new Selection(tsg.slices);
84
85 var viewEl = document.createElement('tv-c-a-multi-event-details-table');
86 viewEl.selection = selection;
87 this.addHTMLOutput(viewEl);
88 });
89
90
91 test('withFewerThanFourArgs', function() {
92 var model = new Model();
93 var thread = model.getOrCreateProcess(1).getOrCreateThread(2);
94 var tsg = thread.sliceGroup;
95 tsg.pushSlice(newSliceEx({title: 'a', start: 0, end: 3,
96 args: {value1: 3, value2: 'x', value3: 1}}));
97 tsg.pushSlice(newSliceEx({title: 'b', start: 1, end: 2,
98 args: {value1: 3.1, value2: 'y', value3: 2}}));
99 tsg.pushSlice(newSliceEx({title: 'b', start: 4, end: 5,
100 args: {value1: 3.2, value2: 'z', value3: 'x'}}));
101 tsg.createSubSlices();
102
103 var threadTrack = {};
104 threadTrack.thread = thread;
105
106 var selection = new Selection(tsg.slices);
107
108 var viewEl = document.createElement('tv-c-a-multi-event-details-table');
109 viewEl.selection = selection;
110 this.addHTMLOutput(viewEl);
111 });
112
113 test('withExtraArgs', function() {
114 var model = new Model();
115 var thread = model.getOrCreateProcess(1).getOrCreateThread(2);
116 var tsg = thread.sliceGroup;
117 tsg.pushSlice(newSliceEx({title: 'a', start: 0, end: 3,
118 args: {value1: 3, value2: 'x', value3: 1,
119 value4: 4, value5: 5, value6: 6}}));
120 tsg.pushSlice(newSliceEx({title: 'b', start: 1, end: 2,
121 args: {value1: 3.1, value2: 'y', value3: 2,
122 value4: 4, value5: 5, value6: 6}}));
123 tsg.pushSlice(newSliceEx({title: 'b', start: 4, end: 5,
124 args: {value1: 3.2, value2: 'z', value3: 'x',
125 value4: 4, value5: 'whoops', value6: 6}}));
126 tsg.createSubSlices();
127
128 var threadTrack = {};
129 threadTrack.thread = thread;
130
131 var selection = new Selection(tsg.slices);
132
133 var viewEl = document.createElement('tv-c-a-multi-event-details-table');
134 viewEl.selection = selection;
135 this.addHTMLOutput(viewEl);
136 });
137
Chris Craikbeca7ae2015-04-07 13:29:55 -0700138 test('noDuration', function() {
139 var model = new Model();
140
141 var fe1 = new tv.c.trace_model.FlowEvent('cat', 1234, 'title', 7, 10, {});
142 var fe2 = new tv.c.trace_model.FlowEvent('cat', 1234, 'title', 8, 20, {});
143
144 // Make reading some properties an explosion, as a way to ensure that they
145 // aren't read.
146 var failProp = {
147 get: function() {
148 throw new Error('Should not be called');
149 }
150 };
151 Object.defineProperty(fe1, 'duration', failProp);
152 Object.defineProperty(fe2, 'duration', failProp);
153
154 Object.defineProperty(fe1, 'subRows', failProp);
155 Object.defineProperty(fe2, 'subRows', failProp);
156
157 Object.defineProperty(fe1, 'selfTime', failProp);
158 Object.defineProperty(fe2, 'selfTime', failProp);
159
160 model.flowEvents.push(fe1);
161 model.flowEvents.push(fe2);
162
163 var selection = new Selection([fe1, fe2]);
164
165 var viewEl = document.createElement('tv-c-a-multi-event-details-table');
166 viewEl.eventsHaveDuration = false;
167 viewEl.selection = selection;
168 this.addHTMLOutput(viewEl);
169 });
Chris Craikb122baf2015-03-05 13:58:42 -0800170});
171</script>