| <!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> |