Skip to content

Commit

Permalink
test: spawn new processes in vm-cached-data
Browse files Browse the repository at this point in the history
V8 may start caching scripts from the first run soon. Preventively
execute scripts in another process to ensure no test failures due to
an update in the future.

See: #6258
PR-URL: #6280
Reviewed-By: Jochen Eisinger <jochen@chromium.org>
Reviewed-By: Ben Noordhuis <info@bnoordhuis.nl>
Reviewed-By: James M Snell <jasnell@gmail.com>
  • Loading branch information
indutny authored and jasnell committed Apr 26, 2016
1 parent d94283c commit 6e57d2d
Showing 1 changed file with 26 additions and 9 deletions.
35 changes: 26 additions & 9 deletions test/parallel/test-vm-cached-data.js
Original file line number Diff line number Diff line change
Expand Up @@ -2,19 +2,38 @@
require('../common');
const assert = require('assert');
const vm = require('vm');
const spawnSync = require('child_process').spawnSync;
const Buffer = require('buffer').Buffer;

function getSource(tag) {
return `(function ${tag}() { return \'${tag}\'; })`;
}

function produce(source) {
const script = new vm.Script(source, {
produceCachedData: true
});
assert(!script.cachedDataProduced || script.cachedData instanceof Buffer);
function produce(source, count) {
if (!count)
count = 1;

const out = spawnSync(process.execPath, [ '-e', `
var assert = require('assert');
var vm = require('vm');
let data;
for (var i = 0; i < ${count}; i++) {
var script = new vm.Script(process.argv[1], {
produceCachedData: true
});
assert(!script.cachedDataProduced || script.cachedData instanceof Buffer);
if (script.cachedDataProduced)
data = script.cachedData.toString('base64');
}
console.log(data);
`, source]);

assert.equal(out.status, 0, out.stderr + '');

return script.cachedData;
return Buffer.from(out.stdout.toString(), 'base64');
}

function testProduceConsume() {
Expand All @@ -34,9 +53,7 @@ testProduceConsume();
function testProduceMultiple() {
const source = getSource('original');

produce(source);
produce(source);
produce(source);
produce(source, 3);
}
testProduceMultiple();

Expand Down

0 comments on commit 6e57d2d

Please sign in to comment.