blob: 53d9a9f8d612941ed3ce0775513996cf4b3acfbc [file] [log] [blame]
<!DOCTYPE html>
<!--
Copyright 2016 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/base/utils.html">
<link rel="import" href="/tracing/core/test_utils.html">
<link rel="import" href="/tracing/value/histogram.html">
<link rel="import" href="/tracing/value/histogram_deserializer.html">
<script>
'use strict';
tr.b.unittest.testSuite(function() {
test('eventSet', function() {
let slice = undefined;
const model = tr.c.TestUtils.newModel(function(model) {
slice = tr.c.TestUtils.newSliceEx({
type: tr.model.ThreadSlice,
title: 'foo',
start: 0,
duration: 10
});
const thread = model.getOrCreateProcess(1).getOrCreateThread(2);
thread.sliceGroup.pushSlice(slice);
});
let d = new tr.v.d.RelatedEventSet(slice);
assert.strictEqual(tr.b.getOnlyElement([...d]), slice);
d = new tr.v.d.RelatedEventSet([slice]);
assert.strictEqual(tr.b.getOnlyElement([...d]), slice);
d = new tr.v.d.RelatedEventSet(new tr.model.EventSet([slice]));
assert.strictEqual(tr.b.getOnlyElement([...d]), slice);
const d2 = tr.v.d.Diagnostic.fromDict(d.asDict());
assert.instanceOf(d2, tr.v.d.RelatedEventSet);
assert.instanceOf(tr.b.getOnlyElement([...d2]), tr.v.d.EventRef);
d2.resolve(model, true);
assert.strictEqual(tr.b.getOnlyElement([...d2]), slice);
});
test('merge', function() {
let aSlice;
let bSlice;
const model = tr.c.TestUtils.newModel(function(model) {
aSlice = tr.c.TestUtils.newSliceEx({
type: tr.model.ThreadSlice,
title: 'a',
start: 0,
duration: 10
});
bSlice = tr.c.TestUtils.newSliceEx({
type: tr.model.ThreadSlice,
title: 'b',
start: 1,
duration: 10
});
const thread = model.getOrCreateProcess(1).getOrCreateThread(2);
thread.sliceGroup.pushSlice(aSlice);
thread.sliceGroup.pushSlice(bSlice);
});
assert.notEqual(aSlice.stableId, bSlice.stableId);
const aHist = new tr.v.Histogram('a', tr.b.Unit.byName.count);
const bHist = new tr.v.Histogram('b', tr.b.Unit.byName.count);
const aEvents = new tr.v.d.RelatedEventSet(aSlice);
const bEvents = new tr.v.d.RelatedEventSet(bSlice);
aEvents.canonicalUrl_ = 'http://a';
bEvents.canonicalUrl_ = 'http://b';
aHist.diagnostics.set('events', aEvents);
bHist.diagnostics.set('events', bEvents);
let mergedHist = aHist.clone();
mergedHist.addHistogram(bHist);
mergedHist = tr.v.Histogram.fromDict(mergedHist.asDict());
const mergedEvents = mergedHist.diagnostics.get('events');
const aSlice2 = tr.b.getOnlyElement(mergedEvents.get('http://a'));
assert.strictEqual(aSlice.stableId, aSlice2.stableId);
const bSlice2 = tr.b.getOnlyElement(mergedEvents.get('http://b'));
assert.strictEqual(bSlice.stableId, bSlice2.stableId);
});
test('deserialize', function() {
const d = new tr.v.HistogramDeserializer(['aaa']);
const events = tr.v.d.RelatedEventSet.deserialize([[42, 0, 10, 20]], d);
assert.lengthOf(events, 1);
const event = [...events][0];
assert.strictEqual(event.stableId, 42);
assert.strictEqual(event.title, 'aaa');
assert.strictEqual(event.start, 10);
assert.strictEqual(event.duration, 20);
});
});
</script>