1 // Copyright (c) 2012 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 base.require('test_utils'); 8 base.require('model'); 9 base.require('selection'); 10 base.require('tracks.thread_track'); 11 base.require('tracks.counter_track'); 12 13 /** 14 * @fileoverview Helper functions for use in analysis tests. 15 */ 16 17 base.exportTo('tracing.analysis.test', function() { 18 19 var newSliceNamed = test_utils.newSliceNamed; 20 var newSliceCategory = test_utils.newSliceCategory; 21 22 function createReferenceData(withCategory) { 23 var model = new tracing.Model(); 24 var p1 = model.getOrCreateProcess(1); 25 var t1 = p1.getOrCreateThread(1); 26 if (withCategory) 27 t1.pushSlice(newSliceCategory('foo', 'b', 0, 0.002)); 28 else 29 t1.pushSlice(newSliceNamed('b', 0, 0.002)); 30 t1.pushSlice(newSliceNamed('b', 0, 0.002)); 31 t1.pushSlice(newSliceNamed('c', 0, 0.002)); 32 t1.pushSlice(newSliceNamed('c', .01, 0.003)); 33 t1.pushSlice(newSliceNamed('c', .01, 0.001)); 34 t1.pushSlice(newSliceNamed('c', .02, 0.004)); 35 t1.pushSlice(newSliceNamed('d', 0, 0.002)); 36 t1.pushSlice(newSliceNamed('d', .01, 0.003)); 37 t1.pushSlice(newSliceNamed('d', .01, 0.001)); 38 t1.pushSlice(newSliceNamed('d', .02, 0.004)); 39 t1.pushSlice(newSliceNamed('e', 0, 0.002)); 40 t1.pushSlice(newSliceNamed('e', .01, 0.003)); 41 t1.pushSlice(newSliceNamed('e', .01, 0.001)); 42 t1.pushSlice(newSliceNamed('e', .02, 0.004)); 43 t1.pushSlice(newSliceNamed('f', 0, 0.002)); 44 t1.pushSlice(newSliceNamed('Slice with a really, really long name.', 45 0, 0.005)); 46 47 t1.slices.push(new tracing.model.Slice('category', 'D', 0, 1.15, 48 {src_file: 'Arg D src_file', 49 src_func: 'Arg D src_func'}, .5)); 50 t1.slices.push(new tracing.model.Slice('cat', 'E', 0, 1, 51 {src_file: 'Arg E src_file', 52 src_func: 'Arg E src_func'}, .4)); 53 t1.slices.push(new tracing.model.Slice('cat', 'F', 0, 1, 54 {src_file: '0', 55 src_func: 'false'}, .4)); 56 57 var ctr1 = p1.getOrCreateCounter('foo', 'ctr1'); 58 ctr1.seriesNames.push('bytesallocated', 'bytesfree'); 59 ctr1.seriesColors.push(0, 1); 60 ctr1.timestamps.push(0, 10, 20); 61 ctr1.samples.push(0, 25, 10, 15, 20, 5); 62 63 var ctr2 = p1.getOrCreateCounter('foo', 'ctr2'); 64 ctr2.seriesNames.push('bytesallocated', 'bytesfree'); 65 ctr2.seriesColors.push(0, 1); 66 ctr2.timestamps.push(0, 10, 20); 67 ctr2.samples.push(0, 25, 10, 15, 20, 5); 68 69 var t1track = new tracing.tracks.ThreadTrack(); 70 t1track.thread = t1; 71 var ctr1track = new tracing.tracks.CounterTrack(); 72 ctr1track.counter = ctr1; 73 74 var ctr2track = new tracing.tracks.CounterTrack(); 75 ctr2track.counter = ctr2; 76 77 t1track.selectByTitle = function(title, selection) { 78 t1track.addAllObjectsMatchingFilterToSelection( 79 new tracing.TitleFilter(title), selection); 80 } 81 82 return {model: model, 83 t1track: t1track, 84 ctr1track: ctr1track, 85 ctr2track: ctr2track}; 86 } 87 88 return { 89 createReferenceData: createReferenceData 90 }; 91 }); 92 93