test: add trace-gc flag test

PR-URL: https://github.com/nodejs/node/pull/42471
Reviewed-By: James M Snell <jasnell@gmail.com>
Reviewed-By: Gireesh Punathil <gpunathi@in.ibm.com>
Reviewed-By: Darshan Sen <raisinten@gmail.com>
Reviewed-By: Luigi Pinca <luigipinca@gmail.com>
Reviewed-By: Gerhard Stöbich <deb2001-github@yahoo.de>
This commit is contained in:
Tony Gorez 2022-03-28 22:15:08 +02:00 committed by GitHub
parent dfdfd2471f
commit 00cb0912ef
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 49 additions and 0 deletions

9
test/fixtures/gc.js vendored Normal file
View File

@ -0,0 +1,9 @@
let arr = new Array(300_000).fill('a');
for (let index = 0; index < arr.length; index++) {
arr[index] = Math.random();
}
arr = [];
// .gc() is called to generate a Mark-sweep event
global.gc();

View File

@ -0,0 +1,40 @@
'use strict';
// This test verifies that `--trace-gc` flag is well integrated.
// We'll check here, that the console outputs gc events properly.
require('../common');
const assert = require('assert');
const { spawnSync } = require('child_process');
const fixtures = require('../common/fixtures');
{
const childProcess = spawnSync(process.execPath, [
'--trace-gc',
'--expose-gc',
fixtures.path('gc.js'),
]);
const output = childProcess.stdout.toString().trim();
const lines = splitByLine(output);
const scavengeRegex = /\bScavenge\b/;
const expectedOutput = [
scavengeRegex,
scavengeRegex,
scavengeRegex,
scavengeRegex,
/\bMark-sweep\b/,
];
lines.forEach((line, index) => {
assert.match(line, expectedOutput[index]);
});
}
/**
* HELPERS
*/
function splitByLine(str) {
return str.split(/\n/);
}