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 <michael_dawson@ca.ibm.com> Reviewed-By: James Snell <jasnell@gmail.com>>
This commit is contained in:
parent
178ac3367f
commit
8aa589c069
@ -10,6 +10,7 @@ var _fsopen = fs.open;
|
|||||||
var _fsclose = fs.close;
|
var _fsclose = fs.close;
|
||||||
|
|
||||||
var loopCount = 50;
|
var loopCount = 50;
|
||||||
|
var totalCheck = 50;
|
||||||
var emptyTxt = path.join(common.fixturesDir, 'empty.txt');
|
var emptyTxt = path.join(common.fixturesDir, 'empty.txt');
|
||||||
|
|
||||||
fs.open = function() {
|
fs.open = function() {
|
||||||
@ -26,6 +27,19 @@ function testLeak(endFn, callback) {
|
|||||||
console.log('testing for leaks from fs.createReadStream().%s()...', endFn);
|
console.log('testing for leaks from fs.createReadStream().%s()...', endFn);
|
||||||
|
|
||||||
var i = 0;
|
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() {
|
setInterval(function() {
|
||||||
var s = fs.createReadStream(emptyTxt);
|
var s = fs.createReadStream(emptyTxt);
|
||||||
@ -33,12 +47,7 @@ function testLeak(endFn, callback) {
|
|||||||
|
|
||||||
if (++i === loopCount) {
|
if (++i === loopCount) {
|
||||||
clearTimeout(this);
|
clearTimeout(this);
|
||||||
setTimeout(function() {
|
setTimeout(checkFunction, 100);
|
||||||
assert.equal(0, openCount, 'no leaked file descriptors using ' +
|
|
||||||
endFn + '() (got ' + openCount + ')');
|
|
||||||
openCount = 0;
|
|
||||||
callback && setTimeout(callback, 100);
|
|
||||||
}, 100);
|
|
||||||
}
|
}
|
||||||
}, 2);
|
}, 2);
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user