From 8aa589c0697f68076df2cf74fafa55eb0d0bba8e Mon Sep 17 00:00:00 2001 From: Junliang Yan Date: Tue, 6 Oct 2015 14:21:13 -0400 Subject: [PATCH] test: Fix test-fs-read-stream-fd-leak race cond Fix intermittent test failure on slower machines. Gives test longer time to complete but checks at regular intervals so that the test only runs longer on slower machines or in the failure case. PR-URL: https://github.com/nodejs/node/pull/3218 Fixes: https://github.com/nodejs/node/issues/3215 Reviewed-By: Michael Dawson Reviewed-By: James Snell > --- test/parallel/test-fs-read-stream-fd-leak.js | 21 ++++++++++++++------ 1 file changed, 15 insertions(+), 6 deletions(-) diff --git a/test/parallel/test-fs-read-stream-fd-leak.js b/test/parallel/test-fs-read-stream-fd-leak.js index 9bbb631348..bac7d5c121 100644 --- a/test/parallel/test-fs-read-stream-fd-leak.js +++ b/test/parallel/test-fs-read-stream-fd-leak.js @@ -10,6 +10,7 @@ var _fsopen = fs.open; var _fsclose = fs.close; var loopCount = 50; +var totalCheck = 50; var emptyTxt = path.join(common.fixturesDir, 'empty.txt'); fs.open = function() { @@ -26,6 +27,19 @@ function testLeak(endFn, callback) { console.log('testing for leaks from fs.createReadStream().%s()...', endFn); var i = 0; + var check = 0; + + var checkFunction = function() { + if (openCount != 0 && check < totalCheck) { + check++; + setTimeout(checkFunction, 100); + return; + } + assert.equal(0, openCount, 'no leaked file descriptors using ' + + endFn + '() (got ' + openCount + ')'); + openCount = 0; + callback && setTimeout(callback, 100); + }; setInterval(function() { var s = fs.createReadStream(emptyTxt); @@ -33,12 +47,7 @@ function testLeak(endFn, callback) { if (++i === loopCount) { clearTimeout(this); - setTimeout(function() { - assert.equal(0, openCount, 'no leaked file descriptors using ' + - endFn + '() (got ' + openCount + ')'); - openCount = 0; - callback && setTimeout(callback, 100); - }, 100); + setTimeout(checkFunction, 100); } }, 2); }