You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

50 lines
1.1 KiB

'use strict';
const common = require('../common');
const net = require('net');
const assert = require('assert');
let cbcount = 0;
const N = 500000;
const 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();
});
});
let lastCalled = -1;
function makeCallback(c) {
let 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() {
const client = net.createConnection(common.PORT);
client.on('connect', function() {
for (let i = 0; i < N; i++) {
client.write('hello world', makeCallback(i));
}
client.end();
});
});
process.on('exit', function() {
assert.strictEqual(N, cbcount);
});