From 4e2e9be6abed3225406b466099e397acc0f914d2 Mon Sep 17 00:00:00 2001 From: "Matt A. Tobin" Date: Sat, 22 Feb 2020 17:32:39 -0500 Subject: Reclassify heapsnapshot and nsJSInspector as not part of devtools This resolves Issue #316 --- ...test_HeapAnalyses_getImmediatelyDominated_01.js | 81 ++++++++++++++++++++++ 1 file changed, 81 insertions(+) create mode 100644 dom/heapsnapshot/tests/unit/test_HeapAnalyses_getImmediatelyDominated_01.js (limited to 'dom/heapsnapshot/tests/unit/test_HeapAnalyses_getImmediatelyDominated_01.js') diff --git a/dom/heapsnapshot/tests/unit/test_HeapAnalyses_getImmediatelyDominated_01.js b/dom/heapsnapshot/tests/unit/test_HeapAnalyses_getImmediatelyDominated_01.js new file mode 100644 index 000000000..caf1c2056 --- /dev/null +++ b/dom/heapsnapshot/tests/unit/test_HeapAnalyses_getImmediatelyDominated_01.js @@ -0,0 +1,81 @@ +/* Any copyright is dedicated to the Public Domain. + http://creativecommons.org/publicdomain/zero/1.0/ */ + +// Test the HeapAnalyses{Client,Worker} "getImmediatelyDominated" request. + +function run_test() { + run_next_test(); +} + +const breakdown = { + by: "coarseType", + objects: { by: "count", count: true, bytes: true }, + scripts: { by: "count", count: true, bytes: true }, + strings: { by: "count", count: true, bytes: true }, + other: { by: "count", count: true, bytes: true }, +}; + +add_task(function* () { + const client = new HeapAnalysesClient(); + + const snapshotFilePath = saveNewHeapSnapshot(); + yield client.readHeapSnapshot(snapshotFilePath); + const dominatorTreeId = yield client.computeDominatorTree(snapshotFilePath); + + const partialTree = yield client.getDominatorTree({ + dominatorTreeId, + breakdown + }); + ok(partialTree.children.length > 0, + "root should immediately dominate some nodes"); + + // First, test getting a subset of children available. + const response = yield client.getImmediatelyDominated({ + dominatorTreeId, + breakdown, + nodeId: partialTree.nodeId, + startIndex: 0, + maxCount: partialTree.children.length - 1 + }); + + ok(Array.isArray(response.nodes)); + ok(response.nodes.every(node => node.parentId === partialTree.nodeId)); + ok(response.moreChildrenAvailable); + equal(response.path.length, 1); + equal(response.path[0], partialTree.nodeId); + + for (let node of response.nodes) { + equal(typeof node.shortestPaths, "object", + "Should have shortest paths"); + equal(typeof node.shortestPaths.nodes, "object", + "Should have shortest paths' nodes"); + equal(typeof node.shortestPaths.edges, "object", + "Should have shortest paths' edges"); + } + + // Next, test getting a subset of children available. + const secondResponse = yield client.getImmediatelyDominated({ + dominatorTreeId, + breakdown, + nodeId: partialTree.nodeId, + startIndex: 0, + maxCount: Infinity + }); + + ok(Array.isArray(secondResponse.nodes)); + ok(secondResponse.nodes.every(node => node.parentId === partialTree.nodeId)); + ok(!secondResponse.moreChildrenAvailable); + equal(secondResponse.path.length, 1); + equal(secondResponse.path[0], partialTree.nodeId); + + for (let node of secondResponse.nodes) { + equal(typeof node.shortestPaths, "object", + "Should have shortest paths"); + equal(typeof node.shortestPaths.nodes, "object", + "Should have shortest paths' nodes"); + equal(typeof node.shortestPaths.edges, "object", + "Should have shortest paths' edges"); + } + + client.destroy(); +}); -- cgit v1.2.3