Mypal/dom/heapsnapshot/tests/unit/test_HeapSnapshot_takeCensu...

51 lines
1.5 KiB
JavaScript

/* Any copyright is dedicated to the Public Domain.
http://creativecommons.org/publicdomain/zero/1.0/ */
// Test that when we take a census and get a bucket list of ids that matched the
// given category, that the returned ids are all in the snapshot and their
// reported category.
function run_test() {
const g = newGlobal();
const dbg = new Debugger(g);
const path = saveNewHeapSnapshot({ debugger: dbg });
const snapshot = readHeapSnapshot(path);
const bucket = { by: "bucket" };
const count = { by: "count", count: true, bytes: false };
const objectClassCount = { by: "objectClass", then: count, other: count };
const byClassName = snapshot.takeCensus({
breakdown: {
by: "objectClass",
then: bucket,
other: bucket,
}
});
const byClassNameCount = snapshot.takeCensus({
breakdown: objectClassCount
});
const keys = new Set(Object.keys(byClassName));
equal(keys.size, Object.keys(byClassNameCount).length,
"Should have the same number of keys.");
for (let k of Object.keys(byClassNameCount)) {
ok(keys.has(k), "Should not have any unexpected class names");
}
for (let key of Object.keys(byClassName)) {
equal(byClassNameCount[key].count, byClassName[key].length,
"Length of the bucket and count should be equal");
for (let id of byClassName[key]) {
const desc = snapshot.describeNode(objectClassCount, id);
equal(desc[key].count, 1,
"Describing the bucketed node confirms that it belongs to the category");
}
}
do_test_finished();
}