blob: 2cc5aeeb9b0f68985c23448d557400c944bbe104 [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 newChildDump(parentDump, name) {
var childDump = new MemoryAllocatorDump(
parentDump.containerMemoryDump, parentDump.fullName + '/' + name);
childDump.parent = parentDump;
parentDump.children.push(childDump);
return childDump;
}
test('memoryAllocatorDump_instantiate', function() {
var containerDump = new ContainerMemoryDump(42);
containerDump.containerName = 'super dump';
var dump = new MemoryAllocatorDump(containerDump, 'v8/objects/object7');
assert.equal(dump.name, 'object7');
assert.equal(dump.fullName, 'v8/objects/object7');
assert.strictEqual(dump.containerMemoryDump, containerDump);
assert.equal(dump.quantifiedName, '\'v8/objects/object7\' in super dump');
});
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 = newChildDump(oilpanDump, 'bucket1');
oilpanBucket1Dump.addAttribute('size',
new ScalarAttribute('bytes', 512));
oilpanBucket1Dump.addAttribute('objects_count',
new ScalarAttribute('objects', 3));
oilpanBucket1Dump.addAttribute('inner_size',
new ScalarAttribute('bytes', 256));
var oilpanBucket2Dump = newChildDump(oilpanDump, 'bucket2');
var oilpanBucket2StringsDump = newChildDump(oilpanBucket2Dump, 'strings');
oilpanBucket2StringsDump.addAttribute('size',
new ScalarAttribute('bytes', 512));
oilpanBucket2StringsDump.addAttribute('objects_count',
new ScalarAttribute('objects', 4));
oilpanBucket2StringsDump.addAttribute('inner_size',
new ScalarAttribute('bytes', 512));
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('memoryAllocatorDumps_isDescendantOf', function() {
var md = new ContainerMemoryDump(42);
var v8Dump = new MemoryAllocatorDump(md, 'v8');
var v8HeapsDump = newChildDump(v8Dump, 'heaps');
var v8ObjectsDump = newChildDump(v8Dump, 'objects');
var v8Object1Dump = newChildDump(v8ObjectsDump, 'obj1');
var v8Object2Dump = newChildDump(v8ObjectsDump, 'obj2');
var oilpanDump = new MemoryAllocatorDump(md, 'oilpan');
assert.isTrue(v8Dump.isDescendantOf(v8Dump));
assert.isTrue(v8HeapsDump.isDescendantOf(v8Dump));
assert.isTrue(v8ObjectsDump.isDescendantOf(v8Dump));
assert.isTrue(v8Object1Dump.isDescendantOf(v8Dump));
assert.isTrue(v8Object2Dump.isDescendantOf(v8Dump));
assert.isTrue(v8ObjectsDump.isDescendantOf(v8ObjectsDump));
assert.isTrue(v8Object1Dump.isDescendantOf(v8ObjectsDump));
assert.isTrue(v8Object2Dump.isDescendantOf(v8ObjectsDump));
assert.isTrue(oilpanDump.isDescendantOf(oilpanDump));
assert.isFalse(v8Dump.isDescendantOf(oilpanDump));
assert.isFalse(v8Dump.isDescendantOf(v8HeapsDump));
assert.isFalse(v8Dump.isDescendantOf(v8ObjectsDump));
assert.isFalse(v8Dump.isDescendantOf(v8Object1Dump));
assert.isFalse(v8Dump.isDescendantOf(v8Object2Dump));
assert.isFalse(v8Object1Dump.isDescendantOf(v8Object2Dump));
assert.isFalse(v8Object2Dump.isDescendantOf(v8Object1Dump));
});
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>