mirror of https://github.com/lukechilds/node.git
Browse Source
This change fixes a known issue where `maxBuffer` limits by characters rather than bytes. Benchmark added to confirm no performance regression occurs with this change. PR-URL: https://github.com/nodejs/node/pull/6764 Fixes: https://github.com/nodejs/node/issues/1901 Reviewed-By: Brian White <mscdex@mscdex.net>v6.x
Rich Trott
9 years ago
committed by
Rod Vagg
5 changed files with 96 additions and 41 deletions
@ -0,0 +1,30 @@ |
|||
'use strict'; |
|||
const common = require('../common.js'); |
|||
const bench = common.createBenchmark(main, { |
|||
len: [64, 256, 1024, 4096, 32768], |
|||
dur: [5] |
|||
}); |
|||
|
|||
const exec = require('child_process').exec; |
|||
function main(conf) { |
|||
bench.start(); |
|||
|
|||
const dur = +conf.dur; |
|||
const len = +conf.len; |
|||
|
|||
const msg = `"${'.'.repeat(len)}"`; |
|||
msg.match(/./); |
|||
const options = {'stdio': ['ignore', 'pipe', 'ignore']}; |
|||
// NOTE: Command below assumes bash shell.
|
|||
const child = exec(`while\n echo ${msg}\ndo :; done\n`, options); |
|||
|
|||
var bytes = 0; |
|||
child.stdout.on('data', function(msg) { |
|||
bytes += msg.length; |
|||
}); |
|||
|
|||
setTimeout(function() { |
|||
child.kill(); |
|||
bench.end(bytes); |
|||
}, dur * 1000); |
|||
} |
@ -0,0 +1,15 @@ |
|||
'use strict'; |
|||
const common = require('../common'); |
|||
const assert = require('assert'); |
|||
const cp = require('child_process'); |
|||
const unicode = '中文测试'; // Length = 4, Byte length = 13
|
|||
|
|||
if (process.argv[2] === 'child') { |
|||
console.error(unicode); |
|||
} else { |
|||
const cmd = `${process.execPath} ${__filename} child`; |
|||
|
|||
cp.exec(cmd, {maxBuffer: 10}, common.mustCall((err, stdout, stderr) => { |
|||
assert.strictEqual(err.message, 'stderr maxBuffer exceeded'); |
|||
})); |
|||
} |
@ -1,5 +1,4 @@ |
|||
'use strict'; |
|||
// Refs: https://github.com/nodejs/node/issues/1901
|
|||
const common = require('../common'); |
|||
const assert = require('assert'); |
|||
const cp = require('child_process'); |
Loading…
Reference in new issue