bench: fix up benchmarks after internal api change

This commit is contained in:
Ben Noordhuis 2013-07-19 23:59:41 +02:00
parent e1fe8d4ec0
commit d75f67f949
3 changed files with 103 additions and 104 deletions

View File

@ -2,6 +2,7 @@
// as many bytes as we can in the specified time (default = 10s) // as many bytes as we can in the specified time (default = 10s)
var common = require('../common.js'); var common = require('../common.js');
var util = require('util');
// if there are --dur=N and --len=N args, then // if there are --dur=N and --len=N args, then
// run the function with those settings. // run the function with those settings.
@ -27,26 +28,23 @@ function main(conf) {
} }
function fail(syscall) { function fail(err, syscall) {
var e = new Error(syscall + ' ' + errno); throw util._errnoException(err, syscall);
e.errno = e.code = errno;
e.syscall = syscall;
throw e;
} }
function server() { function server() {
var serverHandle = new TCP(); var serverHandle = new TCP();
var r = serverHandle.bind('127.0.0.1', PORT); var err = serverHandle.bind('127.0.0.1', PORT);
if (r) if (err)
fail('bind'); fail(err, 'bind');
var r = serverHandle.listen(511); err = serverHandle.listen(511);
if (r) if (err)
fail('listen'); fail(err, 'listen');
serverHandle.onconnection = function(clientHandle) { serverHandle.onconnection = function(err, clientHandle) {
if (!clientHandle) if (err)
fail('connect'); fail(err, 'connect');
// the meat of the benchmark is right here: // the meat of the benchmark is right here:
bench.start(); bench.start();
@ -57,11 +55,11 @@ function server() {
bench.end((bytes * 8) / (1024 * 1024 * 1024)); bench.end((bytes * 8) / (1024 * 1024 * 1024));
}, dur * 1000); }, dur * 1000);
clientHandle.onread = function(buffer) { clientHandle.onread = function(nread, buffer) {
// we're not expecting to ever get an EOF from the client. // we're not expecting to ever get an EOF from the client.
// just lots of data forever. // just lots of data forever.
if (!buffer) if (nread < 0)
fail('read'); fail(nread, 'read');
// don't slice the buffer. the point of this is to isolate, not // don't slice the buffer. the point of this is to isolate, not
// simulate real traffic. // simulate real traffic.
@ -93,41 +91,44 @@ function client() {
} }
var clientHandle = new TCP(); var clientHandle = new TCP();
var connectReq = clientHandle.connect('127.0.0.1', PORT); var connectReq = {};
var err = clientHandle.connect(connectReq, '127.0.0.1', PORT);
if (!connectReq) if (err)
fail('connect'); fail(err, 'connect');
clientHandle.readStart(); clientHandle.readStart();
connectReq.oncomplete = function() { connectReq.oncomplete = function(err) {
if (err)
fail(err, 'connect');
while (clientHandle.writeQueueSize === 0) while (clientHandle.writeQueueSize === 0)
write(); write();
}; };
function write() { function write() {
var writeReq var writeReq = { oncomplete: afterWrite };
var err;
switch (type) { switch (type) {
case 'buf': case 'buf':
writeReq = clientHandle.writeBuffer(chunk); err = clientHandle.writeBuffer(writeReq, chunk);
break; break;
case 'utf': case 'utf':
writeReq = clientHandle.writeUtf8String(chunk); err = clientHandle.writeUtf8String(writeReq, chunk);
break; break;
case 'asc': case 'asc':
writeReq = clientHandle.writeAsciiString(chunk); err = clientHandle.writeAsciiString(writeReq, chunk);
break; break;
} }
if (!writeReq) if (err)
fail('write'); fail(err, 'write');
writeReq.oncomplete = afterWrite;
} }
function afterWrite(status, handle, req) { function afterWrite(err, handle, req) {
if (status) if (err)
fail('write'); fail(err, 'write');
while (clientHandle.writeQueueSize === 0) while (clientHandle.writeQueueSize === 0)
write(); write();

View File

@ -2,6 +2,7 @@
// as many bytes as we can in the specified time (default = 10s) // as many bytes as we can in the specified time (default = 10s)
var common = require('../common.js'); var common = require('../common.js');
var util = require('util');
// if there are --dur=N and --len=N args, then // if there are --dur=N and --len=N args, then
// run the function with those settings. // run the function with those settings.
@ -26,42 +27,39 @@ function main(conf) {
server(); server();
} }
function fail(err, syscall) {
function fail(syscall) { throw util._errnoException(err, syscall);
var e = new Error(syscall + ' ' + errno);
e.errno = e.code = errno;
e.syscall = syscall;
throw e;
} }
function server() { function server() {
var serverHandle = new TCP(); var serverHandle = new TCP();
var r = serverHandle.bind('127.0.0.1', PORT); var err = serverHandle.bind('127.0.0.1', PORT);
if (r) if (err)
fail('bind'); fail(err, 'bind');
var r = serverHandle.listen(511); err = serverHandle.listen(511);
if (r) if (err)
fail('listen'); fail(err, 'listen');
serverHandle.onconnection = function(clientHandle) { serverHandle.onconnection = function(err, clientHandle) {
if (!clientHandle) if (err)
fail('connect'); fail(err, 'connect');
clientHandle.onread = function(buffer) { clientHandle.onread = function(nread, buffer) {
// we're not expecting to ever get an EOF from the client. // we're not expecting to ever get an EOF from the client.
// just lots of data forever. // just lots of data forever.
if (!buffer) if (nread < 0)
fail('read'); fail(nread, 'read');
var writeReq = clientHandle.writeBuffer(buffer); var writeReq = {};
err = clientHandle.writeBuffer(writeReq, buffer);
if (!writeReq) if (err)
fail('write'); fail(err, 'write');
writeReq.oncomplete = function(status, handle, req) { writeReq.oncomplete = function(status, handle, req) {
if (status) if (status)
fail('write'); fail(err, 'write');
}; };
}; };
@ -90,22 +88,26 @@ function client() {
} }
var clientHandle = new TCP(); var clientHandle = new TCP();
var connectReq = clientHandle.connect('127.0.0.1', PORT); var connectReq = {};
var err = clientHandle.connect(connectReq, '127.0.0.1', PORT);
var bytes = 0; var bytes = 0;
if (!connectReq) if (err)
fail('connect'); fail(err, 'connect');
clientHandle.readStart(); clientHandle.readStart();
clientHandle.onread = function(buffer) { clientHandle.onread = function(nread, buffer) {
if (!buffer) if (nread < 0)
fail('read'); fail(nread, 'read');
bytes += buffer.length; bytes += buffer.length;
}; };
connectReq.oncomplete = function() { connectReq.oncomplete = function(err) {
if (err)
fail(err, 'connect');
bench.start(); bench.start();
setTimeout(function() { setTimeout(function() {
@ -119,28 +121,27 @@ function client() {
}; };
function write() { function write() {
var writeReq var writeReq = { oncomplete: afterWrite };
var err;
switch (type) { switch (type) {
case 'buf': case 'buf':
writeReq = clientHandle.writeBuffer(chunk); err = clientHandle.writeBuffer(writeReq, chunk);
break; break;
case 'utf': case 'utf':
writeReq = clientHandle.writeUtf8String(chunk); err = clientHandle.writeUtf8String(writeReq, chunk);
break; break;
case 'asc': case 'asc':
writeReq = clientHandle.writeAsciiString(chunk); err = clientHandle.writeAsciiString(writeReq, chunk);
break; break;
} }
if (!writeReq) if (err)
fail('write'); fail(err, 'write');
writeReq.oncomplete = afterWrite;
} }
function afterWrite(status, handle, req) { function afterWrite(err, handle, req) {
if (status) if (err)
fail('write'); fail(err, 'write');
while (clientHandle.writeQueueSize === 0) while (clientHandle.writeQueueSize === 0)
write(); write();

View File

@ -2,6 +2,7 @@
// as many bytes as we can in the specified time (default = 10s) // as many bytes as we can in the specified time (default = 10s)
var common = require('../common.js'); var common = require('../common.js');
var util = require('util');
// if there are dur=N and len=N args, then // if there are dur=N and len=N args, then
// run the function with those settings. // run the function with those settings.
@ -26,27 +27,23 @@ function main(conf) {
server(); server();
} }
function fail(err, syscall) {
function fail(syscall) { throw util._errnoException(err, syscall);
var e = new Error(syscall + ' ' + errno);
e.errno = e.code = errno;
e.syscall = syscall;
throw e;
} }
function server() { function server() {
var serverHandle = new TCP(); var serverHandle = new TCP();
var r = serverHandle.bind('127.0.0.1', PORT); var err = serverHandle.bind('127.0.0.1', PORT);
if (r) if (err)
fail('bind'); fail(err, 'bind');
var r = serverHandle.listen(511); err = serverHandle.listen(511);
if (r) if (err)
fail('listen'); fail(err, 'listen');
serverHandle.onconnection = function(clientHandle) { serverHandle.onconnection = function(err, clientHandle) {
if (!clientHandle) if (err)
fail('connect'); fail(err, 'connect');
var chunk; var chunk;
switch (type) { switch (type) {
@ -71,28 +68,27 @@ function server() {
write(); write();
function write() { function write() {
var writeReq var writeReq = { oncomplete: afterWrite };
var err;
switch (type) { switch (type) {
case 'buf': case 'buf':
writeReq = clientHandle.writeBuffer(chunk); err = clientHandle.writeBuffer(writeReq, chunk);
break; break;
case 'utf': case 'utf':
writeReq = clientHandle.writeUtf8String(chunk); err = clientHandle.writeUtf8String(writeReq, chunk);
break; break;
case 'asc': case 'asc':
writeReq = clientHandle.writeAsciiString(chunk); err = clientHandle.writeAsciiString(writeReq, chunk);
break; break;
} }
if (!writeReq) if (err)
fail('write'); fail(err, 'write');
writeReq.oncomplete = afterWrite;
} }
function afterWrite(status, handle, req) { function afterWrite(err, handle, req) {
if (status) if (err)
fail('write'); fail(err, 'write');
while (clientHandle.writeQueueSize === 0) while (clientHandle.writeQueueSize === 0)
write(); write();
@ -104,18 +100,19 @@ function server() {
function client() { function client() {
var clientHandle = new TCP(); var clientHandle = new TCP();
var connectReq = clientHandle.connect('127.0.0.1', PORT); var connectReq = {};
var err = clientHandle.connect(connectReq, '127.0.0.1', PORT);
if (!connectReq) if (err)
fail('connect'); fail(err, 'connect');
connectReq.oncomplete = function() { connectReq.oncomplete = function() {
var bytes = 0; var bytes = 0;
clientHandle.onread = function(buffer) { clientHandle.onread = function(nread, buffer) {
// we're not expecting to ever get an EOF from the client. // we're not expecting to ever get an EOF from the client.
// just lots of data forever. // just lots of data forever.
if (!buffer) if (nread < 0)
fail('read'); fail(nread, 'read');
// don't slice the buffer. the point of this is to isolate, not // don't slice the buffer. the point of this is to isolate, not
// simulate real traffic. // simulate real traffic.