blob: 8200550fba6c9bb64260af5ecc89693b84f6d47a [file] [log] [blame]
<!DOCTYPE html>
<!--
Copyright (c) 2014 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="/tracing/core/test_utils.html">
<link rel="import" href="/tracing/model/helpers/chrome_model_helper.html">
<link rel="import" href="/tracing/extras/chrome/chrome_test_utils.html">
<link rel="import" href="/tracing/extras/importer/trace_event_importer.html">
<link rel="import" href="/tracing/core/test_utils.html">
<link rel="import" href="/tracing/model/model.html">
<script>
'use strict';
tr.b.unittest.testSuite(function() {
var newAsyncSliceEx = tr.c.TestUtils.newAsyncSliceEx;
test('getLatencyData', function() {
var m = tr.e.chrome.ChromeTestUtils.newChromeModel(function(m) {
m.browserMain.asyncSliceGroup.push(newAsyncSliceEx({
title: 'InputLatency::GestureScrollUpdate',
cat: 'benchmark',
start: 0,
end: 10,
id: '0x100',
isTopLevel: true,
args: {
data: {
INPUT_EVENT_LATENCY_ORIGINAL_COMPONENT: {'time' : 0},
INPUT_EVENT_LATENCY_TERMINATED_FRAME_SWAP_COMPONENT: {time: 10}
}
}
}));
});
var modelHelper = m.getOrCreateHelper(tr.model.helpers.ChromeModelHelper);
var latencyEvents = modelHelper.browserHelper.getLatencyEventsInRange(
m.bounds);
assert.equal(latencyEvents.length, 1);
});
test('getFrametime', function() {
var frame_ts;
var events = [];
// Browser process 3507
events.push({'cat' : '__metadata', 'pid' : 3507, 'tid' : 3507, 'ts' : 0, 'ph' : 'M', 'name' : 'thread_name', 'args' : {'name' : 'CrBrowserMain'}}); // @suppress longLineCheck
// Renderer process 3508
events.push({'cat' : '__metadata', 'pid' : 3508, 'tid' : 3508, 'ts' : 0, 'ph' : 'M', 'name' : 'thread_name', 'args' : {'name' : 'CrRendererMain'}}); // @suppress longLineCheck
// Compositor thread 3510
events.push({'cat' : '__metadata', 'pid' : 3508, 'tid' : 3510, 'ts' : 0, 'ph' : 'M', 'name' : 'thread_name', 'args' : {'name' : 'Compositor'}}); // @suppress longLineCheck
// Renderer process 3509
events.push({'cat' : '__metadata', 'pid' : 3509, 'tid' : 3509, 'ts' : 0, 'ph' : 'M', 'name' : 'thread_name', 'args' : {'name' : 'CrRendererMain'}}); // @suppress longLineCheck
// Compositor thread 3511
events.push({'cat' : '__metadata', 'pid' : 3509, 'tid' : 3511, 'ts' : 0, 'ph' : 'M', 'name' : 'thread_name', 'args' : {'name' : 'Compositor'}}); // @suppress longLineCheck
frame_ts = 0;
// Add impl rendering stats for browser process 3507
for (var i = 0; i < 10; i++) {
events.push({'cat' : 'benchmark', 'pid' : 3507, 'tid' : 3507, 'ts' : frame_ts, 'ph' : 'i', 'name' : 'BenchmarkInstrumentation::ImplThreadRenderingStats', 's' : 't'}); // @suppress longLineCheck
frame_ts += 16000 + 1000 * (i % 2);
}
frame_ts = 0;
// Add main rendering stats for renderer process 3508
for (var i = 0; i < 10; i++) {
events.push({'cat' : 'benchmark', 'pid' : 3508, 'tid' : 3508, 'ts' : frame_ts, 'ph' : 'i', 'name' : 'BenchmarkInstrumentation::MainThreadRenderingStats', 's' : 't'}); // @suppress longLineCheck
frame_ts += 16000 + 1000 * (i % 2);
}
events.push({'cat' : 'benchmark', 'pid' : 3508, 'tid' : 3510, 'ts' : 1600, 'ph' : 'i', 'name' : 'KeepAlive', 's' : 't'}); // @suppress longLineCheck
frame_ts = 0;
// Add impl and main rendering stats for renderer process 3509
for (var i = 0; i < 10; i++) {
events.push({'cat' : 'benchmark', 'pid' : 3509, 'tid' : 3511, 'ts' : frame_ts, 'ph' : 'i', 'name' : 'BenchmarkInstrumentation::ImplThreadRenderingStats', 's' : 't'}); // @suppress longLineCheck
events.push({'cat' : 'benchmark', 'pid' : 3509, 'tid' : 3509, 'ts' : frame_ts, 'ph' : 'i', 'name' : 'BenchmarkInstrumentation::MainThreadRenderingStats', 's' : 't'}); // @suppress longLineCheck
frame_ts += 16000 + 1000 * (i % 2);
}
var m = tr.c.TestUtils.newModelWithEvents([events]);
var modelHelper = m.getOrCreateHelper(tr.model.helpers.ChromeModelHelper);
// Testing browser impl and main rendering stats.
var frameEvents = modelHelper.browserHelper.getFrameEventsInRange(
tr.model.helpers.IMPL_FRAMETIME_TYPE, m.bounds);
var frametimeData = tr.model.helpers.getFrametimeDataFromEvents(
frameEvents);
assert.equal(frametimeData.length, 9);
for (var i = 0; i < frametimeData.length; i++) {
assert.equal(frametimeData[i].frametime, 16 + i % 2);
}
// No main rendering stats.
frameEvents = modelHelper.browserHelper.getFrameEventsInRange(
tr.model.helpers.MAIN_FRAMETIME_TYPE, m.bounds);
assert.equal(frameEvents.length, 0);
// Testing renderer 3508 impl and main rendering stats.
frameEvents = modelHelper.rendererHelpers[3508].getFrameEventsInRange(
tr.model.helpers.MAIN_FRAMETIME_TYPE, m.bounds);
frametimeData = tr.model.helpers.getFrametimeDataFromEvents(frameEvents);
assert.equal(frametimeData.length, 9);
for (var i = 0; i < frametimeData.length; i++) {
assert.equal(frametimeData[i].frametime, 16 + i % 2);
}
// No impl rendering stats.
frameEvents = modelHelper.rendererHelpers[3508].getFrameEventsInRange(
tr.model.helpers.IMPL_FRAMETIME_TYPE, m.bounds);
assert.equal(frameEvents.length, 0);
// Testing renderer 3509 impl and main rendering stats.
frameEvents = modelHelper.rendererHelpers[3509].getFrameEventsInRange(
tr.model.helpers.IMPL_FRAMETIME_TYPE, m.bounds);
frametimeData = tr.model.helpers.getFrametimeDataFromEvents(frameEvents);
assert.equal(frametimeData.length, 9);
for (var i = 0; i < frametimeData.length; i++) {
assert.equal(frametimeData[i].frametime, 16 + i % 2);
}
frameEvents = modelHelper.rendererHelpers[3509].getFrameEventsInRange(
tr.model.helpers.MAIN_FRAMETIME_TYPE, m.bounds);
frametimeData = tr.model.helpers.getFrametimeDataFromEvents(frameEvents);
assert.equal(frametimeData.length, 9);
for (var i = 0; i < frametimeData.length; i++) {
assert.equal(frametimeData[i].frametime, 16 + i % 2);
}
});
});
</script>