blob: 2e57b0970d85c21c3fc66c364d5eb23b0925b29f [file] [log] [blame]
<!DOCTYPE html>
<!--
Copyright (c) 2015 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="/model/attribute.html">
<link rel="import" href="/model/container_memory_dump.html">
<link rel="import" href="/model/memory_allocator_dump.html">
<script>
'use strict';
tr.b.unittest.testSuite(function() {
var ContainerMemoryDump = tr.model.ContainerMemoryDump;
var MemoryAllocatorDump = tr.model.MemoryAllocatorDump;
var MemoryAllocatorDumpLink = tr.model.MemoryAllocatorDumpLink;
var ScalarAttribute = tr.model.ScalarAttribute;
function setUpParentChildRelationship(parent, child) {
child.parent = parent;
parent.children.push(child);
}
test('memoryAllocatorDumps_aggregateAttributes', function() {
var md = new ContainerMemoryDump(42);
var oilpanDump = new MemoryAllocatorDump(md, 'oilpan');
oilpanDump.addAttribute('objects_count', new ScalarAttribute('objects', 7));
var oilpanBucket1Dump = new MemoryAllocatorDump(
md, 'oilpan/bucket1', oilpanDump);
oilpanBucket1Dump.addAttribute('size',
new ScalarAttribute('bytes', 512));
oilpanBucket1Dump.addAttribute('objects_count',
new ScalarAttribute('objects', 3));
oilpanBucket1Dump.addAttribute('inner_size',
new ScalarAttribute('bytes', 256));
setUpParentChildRelationship(oilpanDump, oilpanBucket1Dump);
var oilpanBucket2Dump = new MemoryAllocatorDump(
md, 'oilpan/bucket2', oilpanDump);
setUpParentChildRelationship(oilpanDump, oilpanBucket2Dump);
var oilpanBucket2StringsDump = new MemoryAllocatorDump(
md, 'oilpan/bucket2/strings', oilpanBucket2Dump);
oilpanBucket2StringsDump.addAttribute('size',
new ScalarAttribute('bytes', 512));
oilpanBucket2StringsDump.addAttribute('objects_count',
new ScalarAttribute('objects', 4));
oilpanBucket2StringsDump.addAttribute('inner_size',
new ScalarAttribute('bytes', 512));
setUpParentChildRelationship(oilpanBucket2Dump, oilpanBucket2StringsDump);
oilpanDump.aggregateAttributes();
// oilpan has *some* attributes aggregated.
assert.equal(oilpanDump.attributes['objects_count'].value, 7);
assert.equal(oilpanDump.attributes['inner_size'].value, 768);
assert.equal(oilpanDump.attributes['size'].value, 1024);
// oilpan/bucket2 has *all* attributes aggregated.
assert.equal(oilpanBucket2Dump.attributes['objects_count'].value,
4);
assert.equal(oilpanBucket2Dump.attributes['inner_size'].value, 512);
assert.equal(oilpanBucket2Dump.attributes['size'].value, 512);
// oilpan/bucket2/strings has *no* attributes aggregated.
assert.equal(oilpanBucket2StringsDump.attributes[
'objects_count'].value, 4);
assert.equal(oilpanBucket2StringsDump.attributes['inner_size'].value, 512);
assert.equal(oilpanBucket2StringsDump.attributes['size'].value, 512);
});
test('memoryAllocatorDumpLink_instantiate', function() {
var d1 = new MemoryAllocatorDump('v8/isolate1');
var d2 = new MemoryAllocatorDump('oilpan/document1');
var link = new MemoryAllocatorDumpLink(d1, d2, 3);
assert.strictEqual(link.source, d1);
assert.strictEqual(link.target, d2);
assert.strictEqual(link.importance, 3);
});
});
</script>