• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1'use strict';
2
3const common = require('../common');
4const tmpdir = require('../common/tmpdir');
5const assert = require('assert');
6const { spawnSync } = require('child_process');
7const fixtures = require('../common/fixtures');
8const fs = require('fs');
9const env = {
10  ...process.env,
11  NODE_DEBUG_NATIVE: 'diagnostics',
12};
13
14if (!common.enoughTestMem)
15  common.skip('Insufficient memory for snapshot test');
16
17{
18  console.log('\nTesting limit = 3');
19  tmpdir.refresh();
20  const child = spawnSync(process.execPath, [
21    '--heapsnapshot-near-heap-limit=3',
22    '--max-old-space-size=512',
23    fixtures.path('workload', 'grow.js'),
24  ], {
25    cwd: tmpdir.path,
26    env: {
27      ...env,
28      TEST_CHUNK: 2000,
29    },
30  });
31  const stderr = child.stderr.toString();
32  console.log(stderr);
33  assert(common.nodeProcessAborted(child.status, child.signal),
34         'process should have aborted, but did not');
35  const list = fs.readdirSync(tmpdir.path)
36    .filter((file) => file.endsWith('.heapsnapshot'));
37  const risky = [...stderr.matchAll(
38    /Not generating snapshots because it's too risky/g)].length;
39  assert(list.length + risky > 0 && list.length <= 3,
40         `Generated ${list.length} snapshots ` +
41    `and ${risky} was too risky`);
42}
43