Browse Source

test: refactor test-dgram-send-callback-recursive

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: https://github.com/nodejs/node/pull/5079
process-exit-stdio-flushing
Santiago Gimeno 9 years ago
committed by Matteo Collina
parent
commit
88728408e0
  1. 18
      test/parallel/test-dgram-send-callback-recursive.js

18
test/parallel/test-dgram-send-callback-recursive.js

@ -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();
});

Loading…
Cancel
Save