blob: 207568d11dfd9a029c3255c2c29b7c28478b74ba [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="/tracing/ui/base/deep_utils.html">
<link rel="import"
href="/tracing/ui/analysis/memory_dump_allocator_details_pane.html">
<link rel="import" href="/tracing/core/test_utils.html">
<link rel="import" href="/tracing/model/attribute.html">
<link rel="import" href="/tracing/model/container_memory_dump.html">
<link rel="import" href="/tracing/model/event_set.html">
<link rel="import" href="/tracing/model/memory_allocator_dump.html">
<script>
'use strict';
tr.b.unittest.testSuite(function() {
var MemoryAllocatorDump = tr.model.MemoryAllocatorDump;
var MemoryAllocatorDumpLink = tr.model.MemoryAllocatorDumpLink;
var ContainerMemoryDump = tr.model.ContainerMemoryDump;
var ScalarAttribute = tr.model.ScalarAttribute;
function createMemoryAllocatorDump() {
var memoryDump = new ContainerMemoryDump(-10);
var rootDump = new MemoryAllocatorDump(memoryDump, 'v8');
rootDump.addAttribute('size',
new ScalarAttribute('bytes', 1073741824) /* 1 GiB */);
rootDump.addAttribute('inner_size',
new ScalarAttribute('bytes', 2097152) /* 2 MiB */);
rootDump.addAttribute('objects_count', new ScalarAttribute('objects', 204));
var subDump1 = new MemoryAllocatorDump(memoryDump, 'v8/heaps');
subDump1.addAttribute('size',
new ScalarAttribute('bytes', 805306368) /* 768 MiB */);
rootDump.children.push(subDump1);
subDump1.parent = rootDump;
var subDump2 = new MemoryAllocatorDump(memoryDump, 'v8/__42BEEF');
subDump2.addAttribute('size',
new ScalarAttribute('bytes', 268435456) /* 256 MiB */);
rootDump.children.push(subDump2);
subDump2.parent = rootDump;
var ownerDump = new MemoryAllocatorDump(memoryDump, 'oilpan/cow');
var ownershipLink = new MemoryAllocatorDumpLink(ownerDump, subDump2);
ownerDump.owns = ownershipLink;
subDump2.ownedBy.push(ownershipLink);
return rootDump;
}
test('instantiate_empty', function() {
var viewEl = document.createElement(
'tr-ui-a-memory-dump-allocator-details-pane');
this.addHTMLOutput(viewEl);
});
test('instantiate_nonEmpty', function() {
var memoryAllocatorDump = createMemoryAllocatorDump();
var viewEl = document.createElement(
'tr-ui-a-memory-dump-allocator-details-pane');
viewEl.memoryAllocatorDump = memoryAllocatorDump;
this.addHTMLOutput(viewEl);
var table = tr.b.findDeepElementMatching(
viewEl, 'tr-ui-b-table');
var rows = table.tableRows;
var columns = table.tableColumns;
assert.lengthOf(rows, 1);
assert.lengthOf(columns, 4);
var titleColumn = columns[0];
var sizeColumn = columns[1];
var innerSizeColumn = columns[2];
var objectsCountColumn = columns[3];
// Check the rows of the table.
var rootRow = rows[0];
assert.equal(titleColumn.value(rootRow), 'v8');
assert.equal(sizeColumn.value(rootRow).numBytes, 1073741824);
assert.equal(innerSizeColumn.value(rootRow).numBytes, 2097152);
assert.equal(objectsCountColumn.value(rootRow), 204);
assert.lengthOf(rootRow.subRows, 2);
var subRow1 = rootRow.subRows[0];
assert.equal(titleColumn.value(subRow1), 'heaps');
assert.equal(sizeColumn.value(subRow1).numBytes, 805306368);
assert.equal(innerSizeColumn.value(subRow1), '');
assert.equal(objectsCountColumn.value(subRow1), '');
assert.isUndefined(subRow1.subRows);
var subRow2 = rootRow.subRows[1];
assert.equal(
titleColumn.value(subRow2).textContent, 'suballocation by oilpan/cow');
assert.equal(
titleColumn.value(subRow2).title, 'Suballocation name: v8/__42BEEF');
assert.equal(sizeColumn.value(subRow2).numBytes, 268435456);
assert.equal(innerSizeColumn.value(subRow2), '');
assert.equal(objectsCountColumn.value(subRow2), '');
assert.isUndefined(subRow2.subRows);
});
});
</script>