blob: 8a76363af684d024e7281b093046a8bcc06d2499 [file] [log] [blame]
<!DOCTYPE html>
<!--
Copyright (c) 2019 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/extras/chrome/chrome_test_utils.html">
<link rel="import" href="/tracing/metrics/reported_by_page_metric.html">
<link rel="import" href="/tracing/value/histogram_set.html">
<script>
'use strict';
tr.b.unittest.testSuite(function() {
function addEvent(mainThread, event) {
mainThread.sliceGroup.pushSlice(tr.c.TestUtils.newSliceEx({
cat: 'blink.user_timing',
title: event.title,
start: event.start,
duration: 0.0,
args: {data: {navigationId: event.navigationId}}
}));
}
test('time_to_viewable', function() {
const model = tr.e.chrome.ChromeTestUtils.newChromeModel(function(model) {
const rendererProcess = model.rendererProcess;
const mainThread = model.rendererMain;
addEvent(mainThread, {
title: 'navigationStart',
start: 200,
navigationId: '0xA'
});
addEvent(mainThread, {
title: 'navigationStart',
start: 400,
navigationId: '0xB'
});
addEvent(mainThread, {
title: 'navigationStart',
start: 600,
navigationId: '0xC'
});
addEvent(mainThread, {
title: 'telemetry:reported_by_page:viewable',
start: 500,
navigationId: '0xB'
});
addEvent(mainThread, {
title: 'telemetry:reported_by_page:viewable',
start: 1000,
navigationId: '0xA'
});
});
const histograms = new tr.v.HistogramSet();
tr.metrics.reportedByPageMetric(histograms, model);
const hist = histograms.getHistogramNamed(
'reported_by_page:time_to_viewable');
assert.strictEqual(2, hist.running.count);
assert.strictEqual(((1000 - 200) + (500 - 400)) * 0.5, hist.running.mean);
});
test('time_to_interactive', function() {
const model = tr.e.chrome.ChromeTestUtils.newChromeModel(function(model) {
const rendererProcess = model.rendererProcess;
const mainThread = model.rendererMain;
addEvent(mainThread, {
title: 'navigationStart',
start: 200,
navigationId: '0xA'
});
addEvent(mainThread, {
title: 'navigationStart',
start: 400,
navigationId: '0xB'
});
addEvent(mainThread, {
title: 'navigationStart',
start: 600,
navigationId: '0xC'
});
addEvent(mainThread, {
title: 'telemetry:reported_by_page:interactive',
start: 500,
navigationId: '0xB'
});
addEvent(mainThread, {
title: 'telemetry:reported_by_page:interactive',
start: 1000,
navigationId: '0xA'
});
});
const histograms = new tr.v.HistogramSet();
tr.metrics.reportedByPageMetric(histograms, model);
const hist = histograms.getHistogramNamed(
'reported_by_page:time_to_interactive');
assert.strictEqual(2, hist.running.count);
assert.strictEqual(((1000 - 200) + (500 - 400)) * 0.5, hist.running.mean);
});
test('benchmark_time', function() {
const model = tr.e.chrome.ChromeTestUtils.newChromeModel(function(model) {
const rendererProcess = model.rendererProcess;
const mainThread = model.rendererMain;
addEvent(mainThread, {
title: 'telemetry:reported_by_page:benchmark_begin',
start: 200,
navigationId: '0xA'
});
addEvent(mainThread, {
title: 'telemetry:reported_by_page:benchmark_begin',
start: 400,
navigationId: '0xB'
});
addEvent(mainThread, {
title: 'telemetry:reported_by_page:benchmark_begin',
start: 600,
navigationId: '0xC'
});
addEvent(mainThread, {
title: 'telemetry:reported_by_page:benchmark_end',
start: 500,
navigationId: '0xB'
});
addEvent(mainThread, {
title: 'telemetry:reported_by_page:benchmark_end',
start: 1000,
navigationId: '0xA'
});
});
const histograms = new tr.v.HistogramSet();
tr.metrics.reportedByPageMetric(histograms, model);
const hist = histograms.getHistogramNamed(
'reported_by_page:benchmark_time');
assert.strictEqual(2, hist.running.count);
assert.strictEqual(((1000 - 200) + (500 - 400)) * 0.5, hist.running.mean);
});
});
</script>