node/test/pummel/test-net-write-callbacks.js

50 lines
1.0 KiB
JavaScript

'use strict';
var common = require('../common');
var net = require('net');
var assert = require('assert');
var cbcount = 0;
var N = 500000;
var server = net.Server(function(socket) {
socket.on('data', function(d) {
console.error('got %d bytes', d.length);
});
socket.on('end', function() {
console.error('end');
socket.destroy();
server.close();
});
});
var lastCalled = -1;
function makeCallback(c) {
var called = false;
return function() {
if (called)
throw new Error('called callback #' + c + ' more than once');
called = true;
if (c < lastCalled)
throw new Error('callbacks out of order. last=' + lastCalled +
' current=' + c);
lastCalled = c;
cbcount++;
};
}
server.listen(common.PORT, function() {
var client = net.createConnection(common.PORT);
client.on('connect', function() {
for (var i = 0; i < N; i++) {
client.write('hello world', makeCallback(i));
}
client.end();
});
});
process.on('exit', function() {
assert.equal(N, cbcount);
});