Skip to content

Commit

Permalink
test: refactor test-dgram-send-callback-recursive
Browse files Browse the repository at this point in the history
Just send 10 messages recursively and check that the send calls are
asynchronous by asserting that a `setImmediate` callback has been called
in-between. It avoids a race condition in the test when the recursive
limit is reached without having received at least 10 messages.

Reviewed-By: Matteo Collina <matteo.collina@gmail.com>
Reviewed-By: Colin Ihrig <cjihrig@gmail.com>
PR-URL: nodejs#5079
  • Loading branch information
santigimeno authored and mcollina committed Feb 26, 2016
1 parent dff01d1 commit 8872840
Showing 1 changed file with 10 additions and 8 deletions.
18 changes: 10 additions & 8 deletions test/parallel/test-dgram-send-callback-recursive.js
Original file line number Diff line number Diff line change
Expand Up @@ -5,23 +5,25 @@ const assert = require('assert');
const dgram = require('dgram');
const client = dgram.createSocket('udp4');
const chunk = 'abc';
var recursiveCount = 0;
var received = 0;
let received = 0;
let sent = 0;
const limit = 10;
const recursiveLimit = 100;
let async = false;

function onsend() {
if (recursiveCount > recursiveLimit) {
throw new Error('infinite loop detected');
}
if (received < limit) {
if (sent++ < limit) {
client.send(
chunk, 0, chunk.length, common.PORT, common.localhostIPv4, onsend);
} else {
assert.strictEqual(async, true, 'Send should be asynchronous.');
}
recursiveCount++;
}

client.on('listening', function() {
setImmediate(function() {
async = true;
});

onsend();
});

Expand Down

0 comments on commit 8872840

Please sign in to comment.