| <!DOCTYPE html> |
| <!-- |
| Copyright (c) 2013 The Chromium Authors. All rights reserved. |
| Use of this source code is governed by a BSD-style license that can be |
| found in the LICENSE file. |
| --> |
| |
| <link rel="import" href="/core/analysis/multi_event_summary.html"> |
| <link rel="import" href="/core/test_utils.html"> |
| <link rel="import" href="/core/selection.html"> |
| <link rel="import" href="/model/model.html"> |
| |
| <script> |
| 'use strict'; |
| |
| tr.b.unittest.testSuite(function() { |
| var Model = tr.Model; |
| var Selection = tr.c.Selection; |
| var newSliceEx = tr.c.test_utils.newSliceEx; |
| |
| test('summaryRowNoCpu', function() { |
| var model = new Model(); |
| var thread = model.getOrCreateProcess(1).getOrCreateThread(2); |
| var tsg = thread.sliceGroup; |
| |
| tsg.pushSlice(newSliceEx({title: 'a', start: 0, end: 3})); |
| tsg.pushSlice(newSliceEx({title: 'bb', start: 1, end: 2})); |
| tsg.pushSlice(newSliceEx({title: 'bb', start: 4, end: 5})); |
| tsg.createSubSlices(); |
| |
| var row = new tr.c.analysis.MultiEventSummary('x', tsg.slices.slice(0)); |
| assert.equal(row.duration, 5); |
| assert.equal(row.selfTime, 4); |
| assert.isUndefined(row.cpuDuration); |
| assert.isUndefined(row.cpuSelfTime); |
| }); |
| |
| test('summaryRowWithCpu', function() { |
| var model = new Model(); |
| var thread = model.getOrCreateProcess(1).getOrCreateThread(2); |
| var tsg = thread.sliceGroup; |
| |
| tsg.pushSlice(newSliceEx({title: 'a', start: 0, end: 3, |
| cpuStart: 0, cpuEnd: 3})); |
| tsg.pushSlice(newSliceEx({title: 'b', start: 1, end: 2, |
| cpuStart: 1, cpuEnd: 1.75})); |
| tsg.pushSlice(newSliceEx({title: 'b', start: 4, end: 5, |
| cpuStart: 3, cpuEnd: 3.75})); |
| tsg.createSubSlices(); |
| |
| var row = new tr.c.analysis.MultiEventSummary('x', tsg.slices.slice(0)); |
| assert.equal(row.duration, 5); |
| assert.equal(row.selfTime, 4); |
| assert.equal(row.cpuDuration, 4.5); |
| assert.equal(row.cpuSelfTime, 3.75); |
| }); |
| |
| test('summaryRowNonSlice', function() { |
| var model = new Model(); |
| var thread = model.getOrCreateProcess(1).getOrCreateThread(2); |
| var tsg = thread.sliceGroup; |
| |
| var fe1 = new tr.model.FlowEvent('cat', 1234, 'title', 7, 10, {}); |
| var fe2 = new tr.model.FlowEvent('cat', 1234, 'title', 8, 20, {}); |
| model.flowEvents.push(fe1); |
| model.flowEvents.push(fe2); |
| |
| var row = new tr.c.analysis.MultiEventSummary('a', [fe1, fe2]); |
| assert.equal(row.duration, 0); |
| assert.equal(row.selfTime, 0); |
| assert.isUndefined(row.cpuDuration); |
| assert.isUndefined(row.cpuSelfTime); |
| }); |
| |
| test('summaryNumAlerts', function() { |
| var slice = newSliceEx({title: 'b', start: 0, duration: 0.002}); |
| |
| var ALERT_INFO_1 = new tr.model.EventInfo( |
| 'Alert 1', 'Critical alert'); |
| |
| var alert = new tr.model.Alert(ALERT_INFO_1, 5, [slice]); |
| |
| var row = new tr.c.analysis.MultiEventSummary('a', [slice]); |
| assert.equal(row.numAlerts, 1); |
| }); |
| |
| test('argSummary', function() { |
| var model = new Model(); |
| var thread = model.getOrCreateProcess(1).getOrCreateThread(2); |
| var tsg = thread.sliceGroup; |
| |
| tsg.pushSlice(newSliceEx({title: 'a', start: 0, end: 3, |
| args: {value1: 3, value2: 'x', value3: 1}})); |
| tsg.pushSlice(newSliceEx({title: 'b', start: 1, end: 2, |
| args: {value1: 3, value2: 'y', value3: 2}})); |
| tsg.pushSlice(newSliceEx({title: 'b', start: 4, end: 5, |
| args: {value1: 3, value2: 'z', value3: 'x'}})); |
| tsg.createSubSlices(); |
| |
| var row = new tr.c.analysis.MultiEventSummary('x', tsg.slices.slice(0)); |
| assert.deepEqual(row.totalledArgs, {value1: 9}); |
| assert.deepEqual(row.untotallableArgs, ['value2', 'value3']); |
| }); |
| |
| }); |
| </script> |