Skip to content

Commit

Permalink
test: use gcUntil() in test-v8-serialize-leak
Browse files Browse the repository at this point in the history
Previously this can be flaky because the there could be a delay
of the deallocation after gc() is invoked. Use gcUntil() to run
the GC multiple times to make the test more robust.

PR-URL: #49168
Reviewed-By: Yagiz Nizipli <[email protected]>
Reviewed-By: Luigi Pinca <[email protected]>
  • Loading branch information
joyeecheung authored and targos committed Nov 26, 2023
1 parent bd17f0b commit e18de80
Showing 1 changed file with 15 additions and 11 deletions.
26 changes: 15 additions & 11 deletions test/parallel/test-v8-serialize-leak.js
Original file line number Diff line number Diff line change
Expand Up @@ -8,22 +8,26 @@ if (common.isIBMi)
common.skip('On IBMi, the rss memory always returns zero');

const v8 = require('v8');
const assert = require('assert');

const before = process.memoryUsage.rss();

for (let i = 0; i < 1000000; i++) {
v8.serialize('');
}

global.gc();

const after = process.memoryUsage.rss();

if (process.config.variables.asan) {
assert(after < before * 10, `asan: before=${before} after=${after}`);
} else if (process.config.variables.node_builtin_modules_path) {
assert(after < before * 4, `node_builtin_modules_path: before=${before} after=${after}`);
} else {
assert(after < before * 2, `before=${before} after=${after}`);
async function main() {
await common.gcUntil('RSS should go down', () => {
const after = process.memoryUsage.rss();
if (process.config.variables.asan) {
console.log(`asan: before=${before} after=${after}`);
return after < before * 10;
} else if (process.config.variables.node_builtin_modules_path) {
console.log(`node_builtin_modules_path: before=${before} after=${after}`);
return after < before * 10;
}
console.log(`before=${before} after=${after}`);
return after < before * 10;
});
}

main();

0 comments on commit e18de80

Please sign in to comment.