1010583560e0e6db74fe50b840bce46ba6537de63Jamie Gennis// Copyright (c) 2012 The Chromium Authors. All rights reserved.
2010583560e0e6db74fe50b840bce46ba6537de63Jamie Gennis// Use of this source code is governed by a BSD-style license that can be
3010583560e0e6db74fe50b840bce46ba6537de63Jamie Gennis// found in the LICENSE file.
4010583560e0e6db74fe50b840bce46ba6537de63Jamie Gennis
566a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis'use strict';
666a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis
7010583560e0e6db74fe50b840bce46ba6537de63Jamie Gennis/**
8010583560e0e6db74fe50b840bce46ba6537de63Jamie Gennis * @fileoverview Helper functions for use in tracing tests.
9010583560e0e6db74fe50b840bce46ba6537de63Jamie Gennis */
1066a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis'use strict';
1166a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis
1266a37686207944273ced825e0e8b6b6375f8c3deJamie Gennisbase.require('tracing.trace_model.counter');
1366a37686207944273ced825e0e8b6b6375f8c3deJamie Gennisbase.require('tracing.trace_model.slice');
1466a37686207944273ced825e0e8b6b6375f8c3deJamie Gennisbase.require('tracing.trace_model.slice_group');
15010583560e0e6db74fe50b840bce46ba6537de63Jamie Gennis
1666a37686207944273ced825e0e8b6b6375f8c3deJamie Gennisbase.exportTo('tracing.test_utils', function() {
17010583560e0e6db74fe50b840bce46ba6537de63Jamie Gennis  function newAsyncSlice(start, duration, startThread, endThread) {
18010583560e0e6db74fe50b840bce46ba6537de63Jamie Gennis    return newAsyncSliceNamed('a', start, duration, startThread, endThread);
19010583560e0e6db74fe50b840bce46ba6537de63Jamie Gennis  }
20010583560e0e6db74fe50b840bce46ba6537de63Jamie Gennis
21010583560e0e6db74fe50b840bce46ba6537de63Jamie Gennis  function newAsyncSliceNamed(name, start, duration, startThread, endThread) {
2266a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis    var s = new tracing.trace_model.AsyncSlice('', name, 0, start);
23010583560e0e6db74fe50b840bce46ba6537de63Jamie Gennis    s.duration = duration;
24010583560e0e6db74fe50b840bce46ba6537de63Jamie Gennis    s.startThread = startThread;
25010583560e0e6db74fe50b840bce46ba6537de63Jamie Gennis    s.endThread = endThread;
2666a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis    var subSlice = new tracing.trace_model.AsyncSlice('', name, 0, start);
27010583560e0e6db74fe50b840bce46ba6537de63Jamie Gennis    subSlice.duration = duration;
28010583560e0e6db74fe50b840bce46ba6537de63Jamie Gennis    subSlice.startThread = startThread;
29010583560e0e6db74fe50b840bce46ba6537de63Jamie Gennis    subSlice.endThread = endThread;
30010583560e0e6db74fe50b840bce46ba6537de63Jamie Gennis    s.subSlices = [subSlice];
31010583560e0e6db74fe50b840bce46ba6537de63Jamie Gennis    return s;
32010583560e0e6db74fe50b840bce46ba6537de63Jamie Gennis  }
33010583560e0e6db74fe50b840bce46ba6537de63Jamie Gennis
3488448d9ae4dfff1805045790ef5f32495d62abccJeff Brown  function newCounter(parent) {
3588448d9ae4dfff1805045790ef5f32495d62abccJeff Brown    return newCounterNamed(parent, 'a');
3688448d9ae4dfff1805045790ef5f32495d62abccJeff Brown  }
3788448d9ae4dfff1805045790ef5f32495d62abccJeff Brown
3888448d9ae4dfff1805045790ef5f32495d62abccJeff Brown  function newCounterNamed(parent, name) {
3966a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis    var s = new tracing.trace_model.Counter(parent, name, null, name);
4088448d9ae4dfff1805045790ef5f32495d62abccJeff Brown    return s;
4188448d9ae4dfff1805045790ef5f32495d62abccJeff Brown  }
4288448d9ae4dfff1805045790ef5f32495d62abccJeff Brown
4388448d9ae4dfff1805045790ef5f32495d62abccJeff Brown  function newCounterCategory(parent, category, name) {
4466a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis    var s = new tracing.trace_model.Counter(parent, name, category, name);
4588448d9ae4dfff1805045790ef5f32495d62abccJeff Brown    return s;
4688448d9ae4dfff1805045790ef5f32495d62abccJeff Brown  }
4788448d9ae4dfff1805045790ef5f32495d62abccJeff Brown
482da489cd246702bee5938545b18a6f710ed214bcJamie Gennis  function newSlice(start, duration) {
492da489cd246702bee5938545b18a6f710ed214bcJamie Gennis    return newSliceNamed('a', start, duration);
502da489cd246702bee5938545b18a6f710ed214bcJamie Gennis  }
512da489cd246702bee5938545b18a6f710ed214bcJamie Gennis
522da489cd246702bee5938545b18a6f710ed214bcJamie Gennis  function newSliceNamed(name, start, duration) {
5366a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis    var s = new tracing.trace_model.Slice('', name, 0, start, {}, duration);
542da489cd246702bee5938545b18a6f710ed214bcJamie Gennis    return s;
552da489cd246702bee5938545b18a6f710ed214bcJamie Gennis  }
562da489cd246702bee5938545b18a6f710ed214bcJamie Gennis
572da489cd246702bee5938545b18a6f710ed214bcJamie Gennis  function newSliceCategory(category, name, start, duration) {
5866a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis    var s = new tracing.trace_model.Slice(
5966a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis        category, name, 0, start, {}, duration);
602da489cd246702bee5938545b18a6f710ed214bcJamie Gennis    return s;
61010583560e0e6db74fe50b840bce46ba6537de63Jamie Gennis  }
62010583560e0e6db74fe50b840bce46ba6537de63Jamie Gennis
632da489cd246702bee5938545b18a6f710ed214bcJamie Gennis  function findSliceNamed(slices, name) {
6466a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis    if (slices instanceof tracing.trace_model.SliceGroup)
6566a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis      slices = slices.slices;
662da489cd246702bee5938545b18a6f710ed214bcJamie Gennis    for (var i = 0; i < slices.length; i++)
672da489cd246702bee5938545b18a6f710ed214bcJamie Gennis      if (slices[i].title == name)
682da489cd246702bee5938545b18a6f710ed214bcJamie Gennis        return slices[i];
692da489cd246702bee5938545b18a6f710ed214bcJamie Gennis      return undefined;
702da489cd246702bee5938545b18a6f710ed214bcJamie Gennis  }
71010583560e0e6db74fe50b840bce46ba6537de63Jamie Gennis
72010583560e0e6db74fe50b840bce46ba6537de63Jamie Gennis  return {
73010583560e0e6db74fe50b840bce46ba6537de63Jamie Gennis    newAsyncSlice: newAsyncSlice,
74010583560e0e6db74fe50b840bce46ba6537de63Jamie Gennis    newAsyncSliceNamed: newAsyncSliceNamed,
7588448d9ae4dfff1805045790ef5f32495d62abccJeff Brown    newCounter: newCounter,
7688448d9ae4dfff1805045790ef5f32495d62abccJeff Brown    newCounterNamed: newCounterNamed,
7788448d9ae4dfff1805045790ef5f32495d62abccJeff Brown    newCounterCategory: newCounterCategory,
782da489cd246702bee5938545b18a6f710ed214bcJamie Gennis    newSlice: newSlice,
792da489cd246702bee5938545b18a6f710ed214bcJamie Gennis    newSliceNamed: newSliceNamed,
802da489cd246702bee5938545b18a6f710ed214bcJamie Gennis    newSliceCategory: newSliceCategory,
812da489cd246702bee5938545b18a6f710ed214bcJamie Gennis    findSliceNamed: findSliceNamed
82010583560e0e6db74fe50b840bce46ba6537de63Jamie Gennis  };
83010583560e0e6db74fe50b840bce46ba6537de63Jamie Gennis});
84