• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1<!DOCTYPE HTML>
2<html>
3<!--
4Copyright (c) 2012 The Chromium Authors. All rights reserved.
5Use of this source code is governed by a BSD-style license that can be
6found in the LICENSE file.
7-->
8<head i18n-values="dir:textdirection;">
9<title>Timeline tests</title>
10<link rel="stylesheet" href="overlay.css">
11<link rel="stylesheet" href="timeline_view.css">
12<link rel="stylesheet" href="timeline.css">
13<link rel="stylesheet" href="../shared/css/tabs.css">
14<script src="http://closure-library.googlecode.com/svn/trunk/closure/goog/base.js"></script>
15<script src="../shared/js/cr.js"></script>
16<script src="../shared/js/cr/event_target.js"></script>
17<script src="../shared/js/cr/ui.js"></script>
18<script src="../shared/js/cr/ui/tabs.js"></script>
19<script src="overlay.js"></script>
20<script src="measuring_stick.js"></script>
21<script src="profiling_view.js"></script>
22<script src="timeline_view.js"></script>
23<script src="timeline_model.js"></script>
24<script src="linux_perf_importer.js"></script>
25<script src="trace_event_importer.js"></script>
26<script src="timeline.js"></script>
27<script src="timeline_track.js"></script>
28<script src="sorted_array_utils.js"></script>
29<script src="fast_rect_renderer.js"></script>
30<script src="test_utils.js"></script>
31<script>
32  goog.require('goog.testing.jsunit');
33</script>
34<style>
35</style>
36</head>
37<body>
38  <script>
39    'use strict';
40
41    /*
42     * This test just instantiates a TimelineView and adds it to the DOM
43     * to help with non-unittest UI work.
44     */
45    function testInstantiateTimeline() {
46      var events = [
47        {name: 'a', args: {}, pid: 52, ts: 520, cat: 'foo', tid: 53, ph: 'B'},
48        {name: 'a', args: {}, pid: 52, ts: 560, cat: 'foo', tid: 53, ph: 'E'},
49        {name: 'b', args: {}, pid: 52, ts: 629, cat: 'foo', tid: 53, ph: 'B'},
50        {name: 'b', args: {}, pid: 52, ts: 631, cat: 'foo', tid: 53, ph: 'E'}
51      ];
52      var model = new tracing.TimelineModel();
53      model.importEvents(events);
54      var timeline = new tracing.Timeline();
55      timeline.model = model;
56      timeline.focusElement = timeline;
57      timeline.tabIndex = 0;
58      document.body.appendChild(timeline);
59    }
60
61    function testAddAllObjectsMatchingFilterToSelection() {
62      var model = new tracing.TimelineModel();
63      var p1 = model.getOrCreateProcess(1);
64      var t1 = p1.getOrCreateThread(1);
65
66      t1.subRows[0].push(new tracing.TimelineThreadSlice('a', 0, 1, {}, 3));
67      t1.subRows[0].push(new tracing.TimelineThreadSlice('b', 0, 1, {}, 3));
68
69      var t1asg = t1.asyncSlices;
70      t1asg.slices.push(test_utils.newAsyncSliceNamed('a', 0, 1, t1, t1));
71      t1asg.slices.push(test_utils.newAsyncSliceNamed('b', 1, 2, t1, t1));
72
73
74      var timeline = new tracing.Timeline();
75      timeline.model = model;
76
77      var expected = [{slice: t1asg.slices[0].subSlices[0]},
78                      {slice: t1.subRows[0][0]}];
79      var result = new tracing.TimelineSelection();
80      timeline.addAllObjectsMatchingFilterToSelection(new tracing.TimelineFilter('a'), result);
81      assertEquals(2, result.length);
82      assertEquals(expected[0].slice, result[0].slice);
83      assertEquals(expected[1].slice, result[1].slice);
84
85      var expected = [{slice: t1asg.slices[1].subSlices[0]},
86                      {slice: t1.subRows[0][1]}];
87      var result = new tracing.TimelineSelection();
88      timeline.addAllObjectsMatchingFilterToSelection(new tracing.TimelineFilter('b'), result);
89      assertEquals(2, result.length);
90      assertEquals(expected[0].slice, result[0].slice);
91      assertEquals(expected[1].slice, result[1].slice);
92    }
93
94    function testSelectionObject() {
95      var model = new tracing.TimelineModel();
96      var p1 = model.getOrCreateProcess(1);
97      var t1 = p1.getOrCreateThread(1);
98      t1.subRows[0].push(new tracing.TimelineThreadSlice('a', 0, 1, {}, 3));
99      t1.subRows[0].push(new tracing.TimelineThreadSlice('a', 0, 5, {}, 1));
100
101      var sel = new tracing.TimelineSelection();
102      sel.addSlice({}, t1.subRows[0][0]);
103
104      assertEquals(1, sel.range.min);
105      assertEquals(4, sel.range.max);
106      assertEquals(t1.subRows[0][0], sel[0].slice);
107
108      sel.addSlice({}, t1.subRows[0][1]);
109      assertEquals(1, sel.range.min);
110      assertEquals(6, sel.range.max);
111      assertEquals(t1.subRows[0][1], sel[1].slice);
112
113      sel.clear();
114      assertEquals(0, sel.length);
115    }
116
117    function testShiftedSelection() {
118      var model = new tracing.TimelineModel();
119      var p1 = model.getOrCreateProcess(1);
120      var t1 = p1.getOrCreateThread(1);
121      t1.subRows[0].push(new tracing.TimelineThreadSlice('a', 0, 1, {}, 3));
122      t1.subRows[0].push(new tracing.TimelineThreadSlice('a', 0, 5, {}, 1));
123
124      var track = new tracing.TimelineSliceTrack();
125      track.slices = t1.subRows[0];
126
127      var sel = new tracing.TimelineSelection();
128      sel.addSlice(track, t1.subRows[0][0]);
129
130      var shifted = sel.getShiftedSelection(1);
131      assertEquals(1, shifted.length);
132      assertEquals(t1.subRows[0][1], shifted[0].slice);
133    }
134
135  </script>
136</body>
137</html>
138