node/test/pummel/test-heapdump-shadow-realm.js
Joyee Cheung dca4d84349
test: use setImmediate() in test-heapdump-shadowrealm.js
With a tight loop the GC may not have enough time to kick in.
Try setImmediate() instead.

PR-URL: https://github.com/nodejs/node/pull/49573
Refs: https://github.com/nodejs/node/issues/49572
Reviewed-By: Luigi Pinca <luigipinca@gmail.com>
Reviewed-By: Chengzhong Wu <legendecas@gmail.com>
2023-09-11 15:56:01 +00:00

43 lines
1000 B
JavaScript

// Flags: --experimental-shadow-realm --expose-internals
'use strict';
require('../common');
const { validateSnapshotNodes } = require('../common/heap');
validateSnapshotNodes('Node / ShadowRealm', []);
let realm;
let counter = 0;
// Create a bunch of un-referenced ShadowRealms to make sure the heap
// snapshot can handle it.
function createRealms() {
// Use setImmediate to give GC some time to kick in to avoid OOM.
if (counter++ < 100) {
realm = new ShadowRealm();
realm.evaluate('undefined');
setImmediate(createRealms);
} else {
validateHeap();
// Keep the realm alive.
realm.evaluate('undefined');
}
}
function validateHeap() {
validateSnapshotNodes('Node / Environment', [
{
children: [
{ node_name: 'Node / shadow_realms', edge_name: 'shadow_realms' },
],
},
]);
validateSnapshotNodes('Node / shadow_realms', [
{
children: [
{ node_name: 'Node / ShadowRealm' },
],
},
]);
}
createRealms();