3 Copyright (c) 2013 The Chromium Authors. All rights reserved.
4 Use of this source code is governed by a BSD-style license that can be
5 found in the LICENSE file.
8 <link rel="import" href="/tracing/analysis/analysis_view.html">
9 <link rel="import" href="/tracing/analysis/stub_analysis_results.html">
10 <link rel="import" href="/tracing/analysis/analyze_counters.html">
11 <link rel="import" href="/tracing/test_utils.html">
12 <link rel="import" href="/tracing/selection.html">
13 <link rel="import" href="/tracing/trace_model/counter.html">
14 <link rel="import" href="/tracing/trace_model/counter_series.html">
20 tvcm.unittest.testSuite(function() {
21 var Counter = tracing.trace_model.Counter;
22 var CounterSeries = tracing.trace_model.CounterSeries;
24 var Selection = tracing.Selection;
25 var AnalysisView = tracing.analysis.AnalysisView;
26 var StubAnalysisResults = tracing.analysis.StubAnalysisResults;
28 var createSelectionWithCounters = function(numSamples) {
29 if (numSamples > 2 || numSamples < 1)
30 throw new Error('This function only supports 1 or 2 samples');
32 var ctr = new Counter(null, 0, '', 'ctr');
33 var series = new CounterSeries('value', 0);
34 ctr.addSeries(series);
36 series.addCounterSample(0, 0);
37 series.addCounterSample(10, 10);
39 var selection = new Selection();
41 selection.push(ctr.getSeries(0).samples[1]);
46 selection.push(ctr.getSeries(0).samples[0]);
50 function createSeries(ctr) {
51 var allocatedSeries = new CounterSeries('bytesallocated', 0);
52 var freeSeries = new CounterSeries('bytesfree', 1);
54 ctr.addSeries(allocatedSeries);
55 ctr.addSeries(freeSeries);
57 allocatedSeries.addCounterSample(0, 0);
58 allocatedSeries.addCounterSample(10, 25);
59 allocatedSeries.addCounterSample(20, 10);
61 freeSeries.addCounterSample(0, 15);
62 freeSeries.addCounterSample(10, 20);
63 freeSeries.addCounterSample(20, 5);
66 var createSelectionWithTwoSeriesSingleCounter = function() {
67 var ctr = new Counter(null, 0, 'foo', 'ctr[0]');
70 var selection = new Selection();
73 selection.push(ctr.getSeries(0).samples[1]);
74 selection.push(ctr.getSeries(1).samples[1]);
78 var createSelectionWithTwoSeriesTwoCounters = function() {
79 var ctr1 = new Counter(null, 0, '', 'ctr1');
82 var ctr2 = new Counter(null, 0, '', 'ctr2');
85 var selection = new Selection();
88 selection.push(ctr1.getSeries(0).samples[1]);
89 selection.push(ctr1.getSeries(1).samples[1]);
92 selection.push(ctr2.getSeries(0).samples[2]);
93 selection.push(ctr2.getSeries(1).samples[2]);
97 var createSelectionWithTwoCountersDiffSeriesDiffEvents = function() {
98 var ctr1 = new Counter(null, 0, '', 'a');
99 var ctr1AllocatedSeries = new CounterSeries('bytesallocated', 0);
100 ctr1.addSeries(ctr1AllocatedSeries);
102 ctr1AllocatedSeries.addCounterSample(0, 0);
103 ctr1AllocatedSeries.addCounterSample(10, 25);
104 ctr1AllocatedSeries.addCounterSample(20, 15);
106 assertEquals('a', ctr1.name);
107 assertEquals(3, ctr1.numSamples);
108 assertEquals(1, ctr1.numSeries);
110 var ctr2 = new Counter(null, 0, '', 'b');
111 var ctr2AllocatedSeries = new CounterSeries('bytesallocated', 0);
112 var ctr2FreeSeries = new CounterSeries('bytesfree', 1);
114 ctr2.addSeries(ctr2AllocatedSeries);
115 ctr2.addSeries(ctr2FreeSeries);
117 ctr2AllocatedSeries.addCounterSample(0, 0);
118 ctr2AllocatedSeries.addCounterSample(10, 25);
119 ctr2AllocatedSeries.addCounterSample(20, 10);
120 ctr2AllocatedSeries.addCounterSample(30, 15);
122 ctr2FreeSeries.addCounterSample(0, 20);
123 ctr2FreeSeries.addCounterSample(10, 5);
124 ctr2FreeSeries.addCounterSample(20, 25);
125 ctr2FreeSeries.addCounterSample(30, 0);
127 assertEquals('b', ctr2.name);
128 assertEquals(4, ctr2.numSamples);
129 assertEquals(2, ctr2.numSeries);
131 var selection = new Selection();
135 selection.push(ctr1AllocatedSeries.samples[1]);
136 selection.push(ctr2AllocatedSeries.samples[2]);
137 selection.push(ctr2FreeSeries.samples[2]);
142 test('instantiate_singleCounterWithTwoSeries', function() {
143 var selection = createSelectionWithTwoSeriesSingleCounter();
145 var analysisEl = new AnalysisView();
146 analysisEl.selection = selection;
147 this.addHTMLOutput(analysisEl);
150 test('instantiate_twoCountersWithTwoSeries', function() {
151 var selection = createSelectionWithTwoSeriesTwoCounters();
153 var analysisEl = new AnalysisView();
154 analysisEl.selection = selection;
155 this.addHTMLOutput(analysisEl);
158 test('analyzeSelectionWithSingleCounter', function() {
159 var selection = createSelectionWithCounters(1);
161 var results = new StubAnalysisResults();
162 tracing.analysis.analyzeSelection(results, selection);
164 assertEquals(1, results.tables.length);
165 assertEquals('Selected counter:', results.headers[0].label);
166 var table = results.tables[0];
167 assertEquals(3, table.rows.length);
169 assertEquals('Title', table.rows[0].label);
170 assertEquals('Timestamp', table.rows[1].label);
171 assertEquals('value', table.rows[2].label);
172 assertEquals(10, table.rows[2].text);
175 test('analyzeSelectionWithComplexSeriesTwoCounters', function() {
176 var selection = createSelectionWithTwoCountersDiffSeriesDiffEvents();
178 var results = new StubAnalysisResults();
179 tracing.analysis.analyzeSelection(results, selection);
180 assertEquals(2, results.tables.length);