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