From 88728408e0cf38f49889001309da661d3c7c1b6b Mon Sep 17 00:00:00 2001 From: Santiago Gimeno Date: Thu, 4 Feb 2016 18:33:44 +0100 Subject: [PATCH] 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 Reviewed-By: Colin Ihrig PR-URL: https://github.com/nodejs/node/pull/5079 --- .../test-dgram-send-callback-recursive.js | 18 ++++++++++-------- 1 file changed, 10 insertions(+), 8 deletions(-) diff --git a/test/parallel/test-dgram-send-callback-recursive.js b/test/parallel/test-dgram-send-callback-recursive.js index bd2a8e7d918c3d..63edd5e58716f3 100644 --- a/test/parallel/test-dgram-send-callback-recursive.js +++ b/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(); });