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.
 
 
 
 
 
 

55 lines
1.3 KiB

var common = require('../common');
var assert = require('assert');
var spawn = require('child_process').spawn;
var net = require('net');
function expect(activeHandles, activeRequests) {
assert.equal(process._getActiveHandles().length, activeHandles);
assert.equal(process._getActiveRequests().length, activeRequests);
}
var handles = [];
(function() {
expect(0, 0);
var server = net.createServer().listen(common.PORT);
expect(1, 0);
server.close();
expect(1, 0); // server handle doesn't shut down until next tick
handles.push(server);
})();
(function() {
function onlookup() {
setImmediate(function() {
assert.equal(process._getActiveRequests().length, 0);
});
};
expect(1, 0);
var conn = net.createConnection(common.PORT);
conn.on('lookup', onlookup);
conn.on('error', function() { assert(false); });
expect(2, 1);
conn.destroy();
expect(2, 1); // client handle doesn't shut down until next tick
handles.push(conn);
})();
(function() {
var n = 0;
handles.forEach(function(handle) {
handle.once('close', onclose);
});
function onclose() {
if (++n === handles.length) {
// Allow the server handle a few loop iterations to wind down.
setImmediate(function() {
setImmediate(function() {
assert.equal(process._getActiveHandles().length, 0);
});
});
}
}
})();