Files
UXP-Fixed/devtools/shared/heapsnapshot/tests/unit/test_census_diff_06.js
T
2018-02-02 04:16:08 -05:00

138 lines
3.0 KiB
JavaScript

/* 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);
}