node/test/disabled/test-dgram-send-error.js
Roman Reiss f29762f4dd test: enable linting for tests
Enable linting for the test directory. A number of changes was made so
all tests conform the current rules used by lib and src directories. The
only exception for tests is that unreachable (dead) code is allowed.

test-fs-non-number-arguments-throw had to be excluded from the changes
because of a weird issue on Windows CI.

PR-URL: https://github.com/nodejs/io.js/pull/1721
Reviewed-By: Ben Noordhuis <info@bnoordhuis.nl>
2015-05-19 21:21:27 +02:00

62 lines
1.6 KiB
JavaScript

'use strict';
// Some operating systems report errors when an UDP message is sent to an
// unreachable host. This error can be reported by sendto() and even by
// recvfrom(). Node should not propagate this error to the user.
// We test this by sending a bunch of packets to random IPs. In the meantime
// we also send packets to ourselves to verify that after receiving an error
// we can still receive packets successfully.
var ITERATIONS = 1000;
var assert = require('assert'),
common = require('../common'),
dgram = require('dgram');
var buf = new Buffer(1024);
buf.fill(42);
var packetsReceived = 0,
packetsSent = 0;
var socket = dgram.createSocket('udp4');
socket.on('message', onMessage);
socket.on('listening', doSend);
socket.bind(common.PORT);
function onMessage(message, info) {
packetsReceived++;
if (packetsReceived < ITERATIONS) {
doSend();
} else {
socket.close();
}
}
function afterSend(err) {
if (err) throw err;
packetsSent++;
}
function doSend() {
// Generate a random IP.
var parts = [];
for (var i = 0; i < 4; i++) {
// Generate a random number in the range 1..254.
parts.push(Math.floor(Math.random() * 254) + 1);
}
var ip = parts.join('.');
socket.send(buf, 0, buf.length, 1, ip, afterSend);
socket.send(buf, 0, buf.length, common.PORT, '127.0.0.1', afterSend);
}
process.on('exit', function() {
console.log(packetsSent + ' UDP packets sent, ' +
packetsReceived + ' received');
assert.strictEqual(packetsSent, ITERATIONS * 2);
assert.strictEqual(packetsReceived, ITERATIONS);
});