Source code

Revision control

Copy as Markdown

Other Tools

var path = require('path');
var fs = require('fs');
var spawn = require('child_process').spawn;
function noop() {}
exports.noop = noop;
if (process.env.HTTP2_LOG) {
var logOutput = process.stderr;
if (process.stderr.isTTY) {
var bin = path.resolve(path.dirname(require.resolve('bunyan')), '..', 'bin', 'bunyan');
if(bin && fs.existsSync(bin)) {
logOutput = spawn(bin, ['-o', 'short'], {
stdio: [null, process.stderr, process.stderr]
}).stdin;
}
}
exports.createLogger = function(name) {
return require('bunyan').createLogger({
name: name,
stream: logOutput,
level: process.env.HTTP2_LOG,
serializers: require('../lib/http').serializers
});
};
exports.log = exports.createLogger('test');
exports.clientLog = exports.createLogger('client');
exports.serverLog = exports.createLogger('server');
} else {
exports.createLogger = function() {
return exports.log;
};
exports.log = exports.clientLog = exports.serverLog = {
fatal: noop,
error: noop,
warn : noop,
info : noop,
debug: noop,
trace: noop,
child: function() { return this; }
};
}
exports.callNTimes = function callNTimes(limit, done) {
if (limit === 0) {
done();
} else {
var i = 0;
return function() {
i += 1;
if (i === limit) {
done();
}
};
}
};
// Concatenate an array of buffers into a new buffer
exports.concat = function concat(buffers) {
var size = 0;
for (var i = 0; i < buffers.length; i++) {
size += buffers[i].length;
}
var concatenated = Buffer.alloc(size);
for (var cursor = 0, j = 0; j < buffers.length; cursor += buffers[j].length, j++) {
buffers[j].copy(concatenated, cursor);
}
return concatenated;
};
exports.random = function random(min, max) {
return min + Math.floor(Math.random() * (max - min + 1));
};
// Concatenate an array of buffers and then cut them into random size buffers
exports.shuffleBuffers = function shuffleBuffers(buffers) {
var concatenated = exports.concat(buffers), output = [], written = 0;
while (written < concatenated.length) {
var chunk_size = Math.min(concatenated.length - written, Math.ceil(Math.random()*20));
output.push(concatenated.slice(written, written + chunk_size));
written += chunk_size;
}
return output;
};