analyze_counters_test.js revision 66a37686207944273ced825e0e8b6b6375f8c3de
180bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru// Copyright (c) 2013 The Chromium Authors. All rights reserved.
280bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru// Use of this source code is governed by a BSD-style license that can be
380bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru// found in the LICENSE file.
480bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru
580bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru'use strict';
680bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru
780bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Querubase.require('tracing.test_utils');
880bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Querubase.require('tracing.analysis.analysis_view');
980bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Querubase.require('tracing.analysis.stub_analysis_results');
1080bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Querubase.require('tracing.analysis.analyze_counters');
1180bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Querubase.require('tracing.selection');
120a657bbc2c6fc9daf699942e023050536d5ec95fDerek Sollenbergerbase.require('tracing.trace_model');
1380bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru
140a657bbc2c6fc9daf699942e023050536d5ec95fDerek Sollenbergerbase.unittest.testSuite('tracing.analysis.analyze_counters', function() {
1580bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru  var Counter = tracing.trace_model.Counter;
160a657bbc2c6fc9daf699942e023050536d5ec95fDerek Sollenberger  var Model = tracing.TraceModel;
1780bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru  var Thread = tracing.trace_model.Thread;
1880bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru  var Selection = tracing.Selection;
1980bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru  var AnalysisView = tracing.analysis.AnalysisView;
2080bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru  var StubAnalysisResults = tracing.analysis.StubAnalysisResults;
2180bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru
2280bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru  var createSelectionWithCounters = function(numSamples) {
2380bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru    if (numSamples > 2 || numSamples < 1)
2480bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru      throw new Error('This function only supports 1 or 2 samples');
2580bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru    var ctr = new Counter(null, 0, '', 'ctr');
2680bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru    ctr.seriesNames.push('value');
2780bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru    ctr.seriesColors.push(0);
2880bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru    ctr.timestamps.push(0, 10);
2980bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru    ctr.samples.push(0, 10);
3080bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru
3180bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru    var selection = new Selection();
3280bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru    var t1track = {};
3380bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru    selection.addCounterSample(t1track, ctr, 1);
3480bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru
3580bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru    if (numSamples == 1)
360a657bbc2c6fc9daf699942e023050536d5ec95fDerek Sollenberger      return selection;
3780bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru
3880bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru    selection.addCounterSample(t1track, ctr, 0);
390a657bbc2c6fc9daf699942e023050536d5ec95fDerek Sollenberger    return selection;
4080bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru  };
4180bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru
42910f694aefb0b671dd8522a9afe9b6be645701c1Derek Sollenberger  var createSelectionWithTwoSeriesSingleCounter = function() {
43910f694aefb0b671dd8522a9afe9b6be645701c1Derek Sollenberger    var ctr = new Counter(null, 0, 'foo', 'ctr[0]');
44910f694aefb0b671dd8522a9afe9b6be645701c1Derek Sollenberger    ctr.seriesNames.push('bytesallocated', 'bytesfree');
45910f694aefb0b671dd8522a9afe9b6be645701c1Derek Sollenberger    ctr.seriesColors.push(0, 1);
46910f694aefb0b671dd8522a9afe9b6be645701c1Derek Sollenberger    ctr.timestamps.push(0, 10, 20);
47910f694aefb0b671dd8522a9afe9b6be645701c1Derek Sollenberger    ctr.samples.push(0, 25, 10, 15, 20, 5);
48910f694aefb0b671dd8522a9afe9b6be645701c1Derek Sollenberger
49910f694aefb0b671dd8522a9afe9b6be645701c1Derek Sollenberger    var selection = new Selection();
50910f694aefb0b671dd8522a9afe9b6be645701c1Derek Sollenberger    var t1track = {};
51910f694aefb0b671dd8522a9afe9b6be645701c1Derek Sollenberger
52910f694aefb0b671dd8522a9afe9b6be645701c1Derek Sollenberger    selection.addCounterSample(t1track, ctr, 1);
53910f694aefb0b671dd8522a9afe9b6be645701c1Derek Sollenberger    return selection;
54910f694aefb0b671dd8522a9afe9b6be645701c1Derek Sollenberger  };
55910f694aefb0b671dd8522a9afe9b6be645701c1Derek Sollenberger
56910f694aefb0b671dd8522a9afe9b6be645701c1Derek Sollenberger  var createSelectionWithTwoSeriesTwoCounters = function() {
57910f694aefb0b671dd8522a9afe9b6be645701c1Derek Sollenberger    var ctr1 = new Counter(null, 0, '', 'ctr1');
5880bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru    ctr1.seriesNames.push('bytesallocated', 'bytesfree');
5980bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru    ctr1.seriesColors.push(0, 1);
6080bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru    ctr1.timestamps.push(0, 10, 20);
6180bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru    ctr1.samples.push(0, 25, 10, 15, 20, 5);
6280bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru
6380bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru    var ctr2 = new Counter(null, 0, '', 'ctr2');
6480bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru    ctr2.seriesNames.push('bytesallocated', 'bytesfree');
6580bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru    ctr2.seriesColors.push(0, 1);
6680bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru    ctr2.timestamps.push(0, 10, 20);
6780bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru    ctr2.samples.push(0, 25, 10, 15, 20, 5);
680a657bbc2c6fc9daf699942e023050536d5ec95fDerek Sollenberger
6980bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru    var selection = new Selection();
700a657bbc2c6fc9daf699942e023050536d5ec95fDerek Sollenberger    var t1track = {};
7180bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru    selection.addCounterSample(t1track, ctr1, 1);
7280bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru    selection.addCounterSample(t1track, ctr2, 2);
7380bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru    return selection;
7480bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru  };
7580bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru
7680bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru  var createSelectionWithTwoCountersDiffSeriesDiffHits = function() {
7780bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru    var ctr1 = new Counter(null, 0, '', 'a');
7880bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru    ctr1.seriesNames.push('bytesallocated');
7980bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru    ctr1.seriesColors.push(0);
8080bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru    ctr1.timestamps.push(0, 10, 20);
8180bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru    ctr1.samples.push(0, 25, 10);
8280bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru    assertEquals('a', ctr1.name);
8380bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru    assertEquals(3, ctr1.numSamples);
8480bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru    assertEquals(1, ctr1.numSeries);
8580bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru
860a657bbc2c6fc9daf699942e023050536d5ec95fDerek Sollenberger    var ctr2 = new Counter(null, 0, '', 'b');
8780bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru    ctr2.seriesNames.push('bytesallocated', 'bytesfree');
8880bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru    ctr2.seriesColors.push(0, 1);
890a657bbc2c6fc9daf699942e023050536d5ec95fDerek Sollenberger    ctr2.timestamps.push(0, 10, 20, 30);
9080bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru    ctr2.samples.push(0, 25, 10, 15, 20, 5, 25, 0);
9180bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru    assertEquals('b', ctr2.name);
9280bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru    assertEquals(4, ctr2.numSamples);
9380bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru    assertEquals(2, ctr2.numSeries);
9480bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru
9580bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru    var selection = new Selection();
9680bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru    var t1track = {};
9780bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru    selection.addCounterSample(t1track, ctr1, 1);
9880bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru    selection.addCounterSample(t1track, ctr2, 2);
9980bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru
10080bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru    return selection;
10180bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru  };
10280bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru
10380bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru  test('instantiate_singleCounterWithTwoSeries', function() {
10480bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru    var selection = createSelectionWithTwoSeriesSingleCounter();
10580bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru
10680bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru    var analysisEl = new AnalysisView();
10780bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru    analysisEl.selection = selection;
10880bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru    this.addHTMLOutput(analysisEl);
10980bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru  });
11080bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru
11180bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru  test('instantiate_twoCountersWithTwoSeries', function() {
1120a657bbc2c6fc9daf699942e023050536d5ec95fDerek Sollenberger    var selection = createSelectionWithTwoSeriesTwoCounters();
11380bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru
11480bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru    var analysisEl = new AnalysisView();
11580bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru    analysisEl.selection = selection;
11680bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru    this.addHTMLOutput(analysisEl);
11780bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru  });
11880bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru
11980bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru  test('analyzeSelectionWithSingleCounter', function() {
1200a657bbc2c6fc9daf699942e023050536d5ec95fDerek Sollenberger    var selection = createSelectionWithCounters(1);
12180bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru
12280bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru    var results = new StubAnalysisResults();
12380bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru    tracing.analysis.analyzeSelection(results, selection);
12480bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru    assertEquals(1, results.tables.length);
12580bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru    var table = results.tables[0];
12680bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru    assertEquals('Selected counter:', table.tableHeader);
12780bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru    assertEquals(3, table.rows.length);
1280a657bbc2c6fc9daf699942e023050536d5ec95fDerek Sollenberger
12980bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru    assertEquals('Title', table.rows[0].label);
13080bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru    assertEquals('Timestamp', table.rows[1].label);
13180bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru    assertEquals('value', table.rows[2].label);
13280bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru    assertEquals(10, table.rows[2].text);
13380bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru  });
13480bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru
13580bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru  test('analyzeSelectionWithBasicTwoSeriesTwoCounters', function() {
13680bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru    var selection = createSelectionWithTwoSeriesTwoCounters();
1370a657bbc2c6fc9daf699942e023050536d5ec95fDerek Sollenberger
13880bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru    var results = new StubAnalysisResults();
13980bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru    tracing.analysis.analyzeSelection(results, selection);
14080bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru    assertEquals(1, results.tables.length);
14180bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru    var table = results.tables[0];
14280bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru    assertEquals('Counters:', table.tableHeader);
14380bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru    assertEquals(4, table.rows.length);
14480bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru
14580bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru    assertEquals('ctr1: bytesallocated', table.rows[0].label);
14680bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru    assertEquals('ctr1: bytesfree', table.rows[1].label);
14780bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru    assertEquals('ctr2: bytesallocated', table.rows[2].label);
14880bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru    assertEquals('ctr2: bytesfree', table.rows[3].label);
14980bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru  });
15080bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru
15180bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru  test('analyzeSelectionWithComplexSeriesTwoCounters', function() {
1520a657bbc2c6fc9daf699942e023050536d5ec95fDerek Sollenberger    var selection = createSelectionWithTwoCountersDiffSeriesDiffHits();
15380bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru
15480bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru    var results = new StubAnalysisResults();
15580bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru    tracing.analysis.analyzeSelection(results, selection);
1560a657bbc2c6fc9daf699942e023050536d5ec95fDerek Sollenberger    assertEquals(1, results.tables.length);
15780bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru    var table = results.tables[0];
15880bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru    assertEquals('Counters:', table.tableHeader);
15980bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru    assertEquals(3, table.rows.length);
16080bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru
16180bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru    assertEquals('a: bytesallocated', table.rows[0].label);
16280bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru    assertEquals('b: bytesallocated', table.rows[1].label);
16380bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru    assertEquals('b: bytesfree', table.rows[2].label);
16480bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru  });
16580bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru});
16680bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru