diff options
Diffstat (limited to 'dom/heapsnapshot/tests/unit/test_census_diff_06.js')
-rw-r--r-- | dom/heapsnapshot/tests/unit/test_census_diff_06.js | 137 |
1 files changed, 137 insertions, 0 deletions
diff --git a/dom/heapsnapshot/tests/unit/test_census_diff_06.js b/dom/heapsnapshot/tests/unit/test_census_diff_06.js new file mode 100644 index 000000000..430ff8c9c --- /dev/null +++ b/dom/heapsnapshot/tests/unit/test_census_diff_06.js @@ -0,0 +1,137 @@ +/* Any copyright is dedicated to the Public Domain. + http://creativecommons.org/publicdomain/zero/1.0/ */ + +// Test diffing census reports of a "complex" and "realistic" breakdown. + +const BREAKDOWN = { + by: "coarseType", + objects: { + by: "allocationStack", + then: { + by: "objectClass", + then: { by: "count", count: false, bytes: true }, + other: { by: "count", count: false, bytes: true } + }, + noStack: { + by: "objectClass", + then: { by: "count", count: false, bytes: true }, + other: { by: "count", count: false, bytes: true } + } + }, + strings: { + by: "internalType", + then: { by: "count", count: false, bytes: true } + }, + scripts: { + by: "internalType", + then: { by: "count", count: false, bytes: true } + }, + other: { + by: "internalType", + then: { by: "count", count: false, bytes: true } + }, +}; + +const stack1 = saveStack(); +const stack2 = saveStack(); +const stack3 = saveStack(); + +const REPORT1 = { + objects: new Map([ + [stack1, { Function: { bytes: 1 }, + Object: { bytes: 2 }, + other: { bytes: 0 }, + }], + [stack2, { Array: { bytes: 3 }, + Date: { bytes: 4 }, + other: { bytes: 0 }, + }], + ["noStack", { Object: { bytes: 3 }}], + ]), + strings: { + JSAtom: { bytes: 10 }, + JSLinearString: { bytes: 5 }, + }, + scripts: { + JSScript: { bytes: 1 }, + "js::jit::JitCode": { bytes: 2 }, + }, + other: { + "mozilla::dom::Thing": { bytes: 1 }, + } +}; + +const REPORT2 = { + objects: new Map([ + [stack2, { Array: { bytes: 1 }, + Date: { bytes: 2 }, + other: { bytes: 3 }, + }], + [stack3, { Function: { bytes: 1 }, + Object: { bytes: 2 }, + other: { bytes: 0 }, + }], + ["noStack", { Object: { bytes: 3 }}], + ]), + strings: { + JSAtom: { bytes: 5 }, + JSLinearString: { bytes: 10 }, + }, + scripts: { + JSScript: { bytes: 2 }, + "js::LazyScript": { bytes: 42 }, + "js::jit::JitCode": { bytes: 1 }, + }, + other: { + "mozilla::dom::OtherThing": { bytes: 1 }, + } +}; + +const EXPECTED = { + "objects": new Map([ + [stack1, { Function: { bytes: -1 }, + Object: { bytes: -2 }, + other: { bytes: 0 }, + }], + [stack2, { Array: { bytes: -2 }, + Date: { bytes: -2 }, + other: { bytes: 3 }, + }], + [stack3, { Function: { bytes: 1 }, + Object: { bytes: 2 }, + other: { bytes: 0 }, + }], + ["noStack", { Object: { bytes: 0 }}], + ]), + "scripts": { + "JSScript": { + "bytes": 1 + }, + "js::jit::JitCode": { + "bytes": -1 + }, + "js::LazyScript": { + "bytes": 42 + } + }, + "strings": { + "JSAtom": { + "bytes": -5 + }, + "JSLinearString": { + "bytes": 5 + } + }, + "other": { + "mozilla::dom::Thing": { + "bytes": -1 + }, + "mozilla::dom::OtherThing": { + "bytes": 1 + } + } +}; + +function run_test() { + assertDiff(BREAKDOWN, REPORT1, REPORT2, EXPECTED); +} |