0
0
mirror of https://github.com/nodejs/node.git synced 2024-11-30 07:27:22 +01:00
nodejs/test/parallel/test-net-server-max-connections-close-makes-more-available.js
Rich Trott b4258bba11 test: improve chained property readability
A new version of ESLint flags chained properties on multiple lines that
were not flagged by the previous version of ESLint. In preparation for
turning that feature on, adjust alignment to that expected by the
linter.

This change happened to be predominantly around assertions using
`assert()` and `assert.equal()`. These were changed to
`assert.strictEqual()` where possible.

PR-URL: https://github.com/nodejs/node/pull/7920
Reviewed-By: Michaël Zasso <mic.besace@gmail.com>
Reviewed-By: James M Snell <jasnell@gmail.com>
Reviewed-By: Colin Ihrig <cjihrig@gmail.com>
2016-08-02 09:52:50 -07:00

91 lines
2.4 KiB
JavaScript

'use strict';
const common = require('../common');
var assert = require('assert');
var net = require('net');
// Sets the server's maxConnections property to 1.
// Open 2 connections (connection 0 and connection 1).
// Connection 0 should be accepted.
// Connection 1 should be rejected.
// Closes connection 0.
// Open 2 more connections (connection 2 and 3).
// Connection 2 should be accepted.
// Connection 3 should be rejected.
var connections = [];
var received = [];
var sent = [];
var createConnection = function(index) {
console.error('creating connection ' + index);
return new Promise(function(resolve, reject) {
var connection = net.createConnection(server.address().port, function() {
var msg = '' + index;
console.error('sending message: ' + msg);
this.write(msg);
sent.push(msg);
});
connection.on('error', function(err) {
assert.equal(err.code, 'ECONNRESET');
resolve();
});
connection.on('data', function(e) {
console.error('connection ' + index + ' received response');
resolve();
});
connection.on('end', function() {
console.error('ending ' + index);
resolve();
});
connections[index] = connection;
});
};
var closeConnection = function(index) {
console.error('closing connection ' + index);
return new Promise(function(resolve, reject) {
connections[index].on('end', function() {
resolve();
});
connections[index].end();
});
};
var server = net.createServer(function(socket) {
socket.on('data', function(data) {
console.error('received message: ' + data);
received.push('' + data);
socket.write('acknowledged');
});
});
server.maxConnections = 1;
server.listen(0, function() {
createConnection(0)
.then(createConnection.bind(null, 1))
.then(closeConnection.bind(null, 0))
.then(createConnection.bind(null, 2))
.then(createConnection.bind(null, 3))
.then(server.close.bind(server))
.then(closeConnection.bind(null, 2));
});
process.on('exit', function() {
// Confirm that all connections tried to send data...
assert.deepStrictEqual(sent, ['0', '1', '2', '3']);
// ...but that only connections 0 and 2 were successful.
assert.deepStrictEqual(received, ['0', '2']);
});
process.on('unhandledRejection', function() {
console.error('promise rejected');
common.fail('A promise in the chain rejected');
});