Upstream version 7.36.149.0
[platform/framework/web/crosswalk.git] / src / third_party / trace-viewer / trace_viewer / tracing / analysis / analyze_counters_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.analysis.analysis_view');
9 tvcm.require('tracing.analysis.stub_analysis_results');
10 tvcm.require('tracing.analysis.analyze_counters');
11 tvcm.require('tracing.selection');
12 tvcm.require('tracing.trace_model.counter');
13 tvcm.require('tracing.trace_model.counter_series');
14
15 tvcm.unittest.testSuite('tracing.analysis.analyze_counters_test', function() {
16   var Counter = tracing.trace_model.Counter;
17   var CounterSeries = tracing.trace_model.CounterSeries;
18
19   var Selection = tracing.Selection;
20   var AnalysisView = tracing.analysis.AnalysisView;
21   var StubAnalysisResults = tracing.analysis.StubAnalysisResults;
22
23   var createSelectionWithCounters = function(numSamples) {
24     if (numSamples > 2 || numSamples < 1)
25       throw new Error('This function only supports 1 or 2 samples');
26
27     var ctr = new Counter(null, 0, '', 'ctr');
28     var series = new CounterSeries('value', 0);
29     ctr.addSeries(series);
30
31     series.addCounterSample(0, 0);
32     series.addCounterSample(10, 10);
33
34     var selection = new Selection();
35     var t1track = {};
36     selection.push(ctr.getSeries(0).samples[1]);
37
38     if (numSamples === 1)
39       return selection;
40
41     selection.push(ctr.getSeries(0).samples[0]);
42     return selection;
43   };
44
45   function createSeries(ctr) {
46     var allocatedSeries = new CounterSeries('bytesallocated', 0);
47     var freeSeries = new CounterSeries('bytesfree', 1);
48
49     ctr.addSeries(allocatedSeries);
50     ctr.addSeries(freeSeries);
51
52     allocatedSeries.addCounterSample(0, 0);
53     allocatedSeries.addCounterSample(10, 25);
54     allocatedSeries.addCounterSample(20, 10);
55
56     freeSeries.addCounterSample(0, 15);
57     freeSeries.addCounterSample(10, 20);
58     freeSeries.addCounterSample(20, 5);
59   }
60
61   var createSelectionWithTwoSeriesSingleCounter = function() {
62     var ctr = new Counter(null, 0, 'foo', 'ctr[0]');
63     createSeries(ctr);
64
65     var selection = new Selection();
66     var t1track = {};
67
68     selection.push(ctr.getSeries(0).samples[1]);
69     selection.push(ctr.getSeries(1).samples[1]);
70     return selection;
71   };
72
73   var createSelectionWithTwoSeriesTwoCounters = function() {
74     var ctr1 = new Counter(null, 0, '', 'ctr1');
75     createSeries(ctr1);
76
77     var ctr2 = new Counter(null, 0, '', 'ctr2');
78     createSeries(ctr2);
79
80     var selection = new Selection();
81     var t1track = {};
82
83     selection.push(ctr1.getSeries(0).samples[1]);
84     selection.push(ctr1.getSeries(1).samples[1]);
85
86
87     selection.push(ctr2.getSeries(0).samples[2]);
88     selection.push(ctr2.getSeries(1).samples[2]);
89     return selection;
90   };
91
92   var createSelectionWithTwoCountersDiffSeriesDiffEvents = function() {
93     var ctr1 = new Counter(null, 0, '', 'a');
94     var ctr1AllocatedSeries = new CounterSeries('bytesallocated', 0);
95     ctr1.addSeries(ctr1AllocatedSeries);
96
97     ctr1AllocatedSeries.addCounterSample(0, 0);
98     ctr1AllocatedSeries.addCounterSample(10, 25);
99     ctr1AllocatedSeries.addCounterSample(20, 15);
100
101     assertEquals('a', ctr1.name);
102     assertEquals(3, ctr1.numSamples);
103     assertEquals(1, ctr1.numSeries);
104
105     var ctr2 = new Counter(null, 0, '', 'b');
106     var ctr2AllocatedSeries = new CounterSeries('bytesallocated', 0);
107     var ctr2FreeSeries = new CounterSeries('bytesfree', 1);
108
109     ctr2.addSeries(ctr2AllocatedSeries);
110     ctr2.addSeries(ctr2FreeSeries);
111
112     ctr2AllocatedSeries.addCounterSample(0, 0);
113     ctr2AllocatedSeries.addCounterSample(10, 25);
114     ctr2AllocatedSeries.addCounterSample(20, 10);
115     ctr2AllocatedSeries.addCounterSample(30, 15);
116
117     ctr2FreeSeries.addCounterSample(0, 20);
118     ctr2FreeSeries.addCounterSample(10, 5);
119     ctr2FreeSeries.addCounterSample(20, 25);
120     ctr2FreeSeries.addCounterSample(30, 0);
121
122     assertEquals('b', ctr2.name);
123     assertEquals(4, ctr2.numSamples);
124     assertEquals(2, ctr2.numSeries);
125
126     var selection = new Selection();
127     var t1track = {};
128     var t2track = {};
129
130     selection.push(ctr1AllocatedSeries.samples[1]);
131     selection.push(ctr2AllocatedSeries.samples[2]);
132     selection.push(ctr2FreeSeries.samples[2]);
133
134     return selection;
135   };
136
137   test('instantiate_singleCounterWithTwoSeries', function() {
138     var selection = createSelectionWithTwoSeriesSingleCounter();
139
140     var analysisEl = new AnalysisView();
141     analysisEl.selection = selection;
142     this.addHTMLOutput(analysisEl);
143   });
144
145   test('instantiate_twoCountersWithTwoSeries', function() {
146     var selection = createSelectionWithTwoSeriesTwoCounters();
147
148     var analysisEl = new AnalysisView();
149     analysisEl.selection = selection;
150     this.addHTMLOutput(analysisEl);
151   });
152
153   test('analyzeSelectionWithSingleCounter', function() {
154     var selection = createSelectionWithCounters(1);
155
156     var results = new StubAnalysisResults();
157     tracing.analysis.analyzeSelection(results, selection);
158
159     assertEquals(1, results.tables.length);
160     assertEquals('Selected counter:', results.headers[0].label);
161     var table = results.tables[0];
162     assertEquals(3, table.rows.length);
163
164     assertEquals('Title', table.rows[0].label);
165     assertEquals('Timestamp', table.rows[1].label);
166     assertEquals('value', table.rows[2].label);
167     assertEquals(10, table.rows[2].text);
168   });
169
170   test('analyzeSelectionWithComplexSeriesTwoCounters', function() {
171     var selection = createSelectionWithTwoCountersDiffSeriesDiffEvents();
172
173     var results = new StubAnalysisResults();
174     tracing.analysis.analyzeSelection(results, selection);
175     assertEquals(2, results.tables.length);
176   });
177 });