From fd0bec4f3c1d929e5c68a650fc95747cf123b7f4 Mon Sep 17 00:00:00 2001 From: Rich Trott Date: Mon, 16 May 2016 14:59:52 -0700 Subject: [PATCH] dgram,test: add addMembership/dropMembership tests The only tests for `addMembership()` and `dropMembership()` (from the `dgram` module) were in `test/internet` which means they almost never get run. This adds checks in `test/parallel`. PR-URL: https://github.com/nodejs/node/pull/6753 Reviewed-By: James M Snell Reviewed-By: Colin Ihrig Reviewed-By: Ben Noordhuis --- test/parallel/test-dgram-membership.js | 87 ++++++++++++++++++++++++++ 1 file changed, 87 insertions(+) create mode 100644 test/parallel/test-dgram-membership.js diff --git a/test/parallel/test-dgram-membership.js b/test/parallel/test-dgram-membership.js new file mode 100644 index 00000000000000..ed5fb2897cbd3a --- /dev/null +++ b/test/parallel/test-dgram-membership.js @@ -0,0 +1,87 @@ +'use strict'; + +const common = require('../common'); +const assert = require('assert'); +const dgram = require('dgram'); +const multicastAddress = '224.0.0.114'; + +const setup = () => { + return dgram.createSocket({type: 'udp4', reuseAddr: true}); +}; + +// addMembership() on closed socket should throw +{ + const socket = setup(); + socket.close(common.mustCall(() => { + assert.throws(() => { socket.addMembership(multicastAddress); }, + /Not running/); + })); +} + +// dropMembership() on closed socket should throw +{ + const socket = setup(); + socket.close(common.mustCall(() => { + assert.throws(() => { socket.dropMembership(multicastAddress); }, + /Not running/); + })); +} + +// addMembership() with no argument should throw +{ + const socket = setup(); + assert.throws(() => { socket.addMembership(); }, + /multicast address must be specified/); + socket.close(); +} + +// dropMembership() with no argument should throw +{ + const socket = setup(); + assert.throws(() => { socket.dropMembership(); }, + /multicast address must be specified/); + socket.close(); +} + +// addMembership() with invalid multicast address should throw +{ + const socket = setup(); + assert.throws(() => { socket.addMembership('256.256.256.256'); }, /EINVAL/); + socket.close(); +} + +// dropMembership() with invalid multicast address should throw +{ + const socket = setup(); + assert.throws(() => { socket.dropMembership('256.256.256.256'); }, /EINVAL/); + socket.close(); +} + +// addMembership() with valid socket and multicast address should not throw +{ + const socket = setup(); + assert.doesNotThrow(() => { socket.addMembership(multicastAddress); }); + socket.close(); +} + +// dropMembership() without previous addMembership should throw +{ + const socket = setup(); + assert.throws( + () => { socket.dropMembership(multicastAddress); }, + /EADDRNOTAVAIL/ + ); + socket.close(); +} + +// dropMembership() after addMembership() should not throw +{ + const socket = setup(); + assert.doesNotThrow( + () => { + socket.addMembership(multicastAddress); + socket.dropMembership(multicastAddress); + } + ); + socket.close(); +}