Browse Source

test: dynamic port in dgram tests

Removed common.PORT from test-dgram-close-in-listening,
test-dgram-close-is-not-callback, test-dgram-close,
test-dgram-exclusive-implicit-bind and test-dgram-oob-buffer
in order to eliminate the possibility of port collision.

Refs: https://github.com/nodejs/node/issues/12376
PR-URL: https://github.com/nodejs/node/pull/12623
Reviewed-By: Anna Henningsen <anna@addaleax.net>
v6
Sebastian Plesciuc 8 years ago
committed by Anna Henningsen
parent
commit
d289678352
No known key found for this signature in database GPG Key ID: D8B9F5AEAE84E4CF
  1. 14
      test/parallel/test-dgram-close-in-listening.js
  2. 15
      test/parallel/test-dgram-close-is-not-callback.js
  3. 31
      test/parallel/test-dgram-close.js
  4. 13
      test/parallel/test-dgram-exclusive-implicit-bind.js
  5. 21
      test/parallel/test-dgram-oob-buffer.js

14
test/parallel/test-dgram-close-in-listening.js

@ -13,6 +13,14 @@ socket.on('listening', function() {
socket.close(); socket.close();
}); });
// adds a listener to 'listening' to send the data when // get a random port for send
// the socket is available const portGetter = dgram.createSocket('udp4')
socket.send(buf, 0, buf.length, common.PORT, 'localhost'); .bind(0, 'localhost', common.mustCall(() => {
// adds a listener to 'listening' to send the data when
// the socket is available
socket.send(buf, 0, buf.length,
portGetter.address().port,
portGetter.address().address);
portGetter.close();
}));

15
test/parallel/test-dgram-close-is-not-callback.js

@ -6,9 +6,16 @@ const buf = Buffer.alloc(1024, 42);
const socket = dgram.createSocket('udp4'); const socket = dgram.createSocket('udp4');
socket.send(buf, 0, buf.length, common.PORT, 'localhost'); // get a random port for send
const portGetter = dgram.createSocket('udp4')
.bind(0, 'localhost', common.mustCall(() => {
socket.send(buf, 0, buf.length,
portGetter.address().port,
portGetter.address().address);
// if close callback is not function, ignore the argument. // if close callback is not function, ignore the argument.
socket.close('bad argument'); socket.close('bad argument');
portGetter.close();
socket.on('close', common.mustCall()); socket.on('close', common.mustCall());
}));

31
test/parallel/test-dgram-close.js

@ -32,14 +32,23 @@ const buf = Buffer.alloc(1024, 42);
let socket = dgram.createSocket('udp4'); let socket = dgram.createSocket('udp4');
const handle = socket._handle; const handle = socket._handle;
socket.send(buf, 0, buf.length, common.PORT, 'localhost'); // get a random port for send
assert.strictEqual(socket.close(common.mustCall()), socket); const portGetter = dgram.createSocket('udp4')
socket.on('close', common.mustCall()); .bind(0, 'localhost', common.mustCall(() => {
socket = null; socket.send(buf, 0, buf.length,
portGetter.address().port,
// Verify that accessing handle after closure doesn't throw portGetter.address().address);
setImmediate(function() {
setImmediate(function() { assert.strictEqual(socket.close(common.mustCall()), socket);
console.log('Handle fd is: ', handle.fd); socket.on('close', common.mustCall());
}); socket = null;
});
// Verify that accessing handle after closure doesn't throw
setImmediate(function() {
setImmediate(function() {
console.log('Handle fd is: ', handle.fd);
});
});
portGetter.close();
}));

13
test/parallel/test-dgram-exclusive-implicit-bind.js

@ -70,15 +70,15 @@ if (cluster.isMaster) {
}); });
target.on('listening', function() { target.on('listening', function() {
cluster.fork(); cluster.fork({PORT: target.address().port});
cluster.fork(); cluster.fork({PORT: target.address().port});
if (!common.isWindows) { if (!common.isWindows) {
cluster.fork({BOUND: 'y'}); cluster.fork({BOUND: 'y', PORT: target.address().port});
cluster.fork({BOUND: 'y'}); cluster.fork({BOUND: 'y', PORT: target.address().port});
} }
}); });
target.bind({port: common.PORT, exclusive: true}); target.bind({port: 0, exclusive: true});
return; return;
} }
@ -98,7 +98,8 @@ if (process.env.BOUND === 'y') {
source.unref(); source.unref();
} }
assert(process.env.PORT);
const buf = Buffer.from(process.pid.toString()); const buf = Buffer.from(process.pid.toString());
const interval = setInterval(() => { const interval = setInterval(() => {
source.send(buf, common.PORT, '127.0.0.1'); source.send(buf, process.env.PORT, '127.0.0.1');
}, 1).unref(); }, 1).unref();

21
test/parallel/test-dgram-oob-buffer.js

@ -29,12 +29,17 @@ const dgram = require('dgram');
const socket = dgram.createSocket('udp4'); const socket = dgram.createSocket('udp4');
const buf = Buffer.from([1, 2, 3, 4]); const buf = Buffer.from([1, 2, 3, 4]);
const portGetter = dgram.createSocket('udp4')
.bind(0, 'localhost', common.mustCall(() => {
const address = portGetter.address();
portGetter.close(common.mustCall(() => {
socket.send(buf, 0, 0, address.port, address.address, common.noop);
socket.send(buf, 0, 4, address.port, address.address, common.noop);
socket.send(buf, 1, 3, address.port, address.address, common.noop);
socket.send(buf, 3, 1, address.port, address.address, common.noop);
// Since length of zero means nothing, don't error despite OOB.
socket.send(buf, 4, 0, address.port, address.address, common.noop);
socket.send(buf, 0, 0, common.PORT, '127.0.0.1', common.noop); // useful? no socket.close();
socket.send(buf, 0, 4, common.PORT, '127.0.0.1', common.noop); }));
socket.send(buf, 1, 3, common.PORT, '127.0.0.1', common.noop); }));
socket.send(buf, 3, 1, common.PORT, '127.0.0.1', common.noop);
// Since length of zero means nothing, don't error despite OOB.
socket.send(buf, 4, 0, common.PORT, '127.0.0.1', common.noop);
socket.close();

Loading…
Cancel
Save