blob: b1b34e4b0631dfb45fc0080ea066a30b8827a584 [file] [log] [blame]
Chris Craik44c28202015-05-12 17:25:16 -07001<!DOCTYPE html>
2<!--
3Copyright (c) 2015 The Chromium Authors. All rights reserved.
4Use of this source code is governed by a BSD-style license that can be
5found in the LICENSE file.
6-->
7
8<link rel="import" href="/core/test_utils.html">
9<link rel="import" href="/core/trace_model/attribute.html">
10<link rel="import" href="/core/trace_model/global_memory_dump.html">
11<link rel="import" href="/core/trace_model/process_memory_dump.html">
12
13<script>
14'use strict';
15
16/**
17 * @fileoverview Helper functions for memory dump analysis sub-view tests.
18 */
19tv.exportTo('tv.c.analysis', function() {
20 var GlobalMemoryDump = tv.c.trace_model.GlobalMemoryDump;
21 var ProcessMemoryDump = tv.c.trace_model.ProcessMemoryDump;
22 var MemoryAllocatorDump = tv.c.trace_model.MemoryAllocatorDump;
23 var VMRegion = tv.c.trace_model.VMRegion;
24 var VMRegionByteStats = tv.c.trace_model.VMRegionByteStats;
25 var ScalarAttribute = tv.c.trace_model.ScalarAttribute;
26
27 function createTestGlobalMemoryDump() {
28 var model = tv.c.test_utils.newModel(function(model) {
29 var p1 = model.getOrCreateProcess(1);
30 var p2 = model.getOrCreateProcess(2);
31
32 var gmd = new GlobalMemoryDump(model, 42);
33 model.globalMemoryDumps.push(gmd);
34
35 // One process with VM regions.
36 var pmd1 = new ProcessMemoryDump(gmd, p1, 41);
37 p1.memoryDumps.push(pmd1);
38 gmd.processMemoryDumps[p1.pid] = pmd1;
39 pmd1.vmRegions = [
40 VMRegion.fromDict({
41 startAddress: 1024,
42 sizeInBytes: 20971520, /* 20 MiB */
43 protectionFlags: VMRegion.PROTECTION_FLAG_READ,
44 mappedFile: '[stack]',
45 byteStats: VMRegionByteStats.fromDict({
46 privateResident: 8388608, /* 8 MiB */
47 sharedResident: 12582912, /* 12 MiB */
48 proportionalResident: 10485760 /* 10 MiB */
49 })
50 })
51 ];
52
53 // One process with allocator dumps.
54 var pmd2 = new ProcessMemoryDump(gmd, p2, 43);
55 p2.memoryDumps.push(pmd2);
56 gmd.processMemoryDumps[p2.pid] = pmd2;
57 pmd2.memoryAllocatorDumps = (function() {
58 var oilpanDump = new MemoryAllocatorDump('oilpan');
59 oilpanDump.addAttribute('outer_size',
60 new ScalarAttribute('bytes', 2147483648) /* 2 GiB */);
61 oilpanDump.addAttribute('inner_size',
62 new ScalarAttribute('bytes', 5242880) /* 5 MiB */);
63 oilpanDump.addAttribute('objects_count',
64 new ScalarAttribute('objects', 2015));
65
66 var v8Dump = new MemoryAllocatorDump('v8');
67 v8Dump.addAttribute('outer_size',
68 new ScalarAttribute('bytes', 1073741824) /* 1 GiB */);
69 v8Dump.addAttribute('inner_size',
70 new ScalarAttribute('bytes', 2097152) /* 2 MiB */);
71 v8Dump.addAttribute('objects_count',
72 new ScalarAttribute('objects', 204));
73
74 return [oilpanDump, v8Dump];
75 })();
76 });
77
78 return model.globalMemoryDumps[0];
79 }
80
81 function createTestProcessMemoryDump() {
82 var globalMemoryDump = createTestGlobalMemoryDump();
83 return globalMemoryDump.processMemoryDumps[2];
84 }
85
86 return {
87 createTestGlobalMemoryDump: createTestGlobalMemoryDump,
88 createTestProcessMemoryDump: createTestProcessMemoryDump
89 };
90});
91</script>