Home | History | Annotate | Download | only in test
      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