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: nodejs#6258
PR-URL: nodejs#6280
Reviewed-By: Jochen Eisinger <[email protected]>
Reviewed-By: Ben Noordhuis <[email protected]>
Reviewed-By: James M Snell <[email protected]>
  • Loading branch information
indutny committed Apr 20, 2016
1 parent 5f0fcd6 commit e1cf634
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 e1cf634

Please sign in to comment.