test: fix flaky timers-block-eventloop test

Due to extensive reliance on timings and the fs module, this test
is currently inherently flaky. Refactor it to simply use setImmediate
and only one busy loop.

PR-URL: https://github.com/nodejs/node/pull/18567
Reviewed-By: Matteo Collina <matteo.collina@gmail.com>
Reviewed-By: Ruben Bridgewater <ruben@bridgewater.de>
This commit is contained in:
Anatoli Papirovski 2018-02-04 16:49:00 -05:00
parent ef78a1e584
commit 6963a93d0e
No known key found for this signature in database
GPG Key ID: 614E2E1ABEB4B2C0

View File

@ -1,24 +1,18 @@
'use strict';
const common = require('../common');
const fs = require('fs');
const platformTimeout = common.platformTimeout;
const assert = require('assert');
let called = false;
const t1 = setInterval(() => {
common.busyLoop(platformTimeout(12));
}, platformTimeout(10));
const t2 = setInterval(() => {
common.busyLoop(platformTimeout(15));
}, platformTimeout(10));
const t3 =
setTimeout(common.mustNotCall('eventloop blocked!'), platformTimeout(200));
setTimeout(function() {
fs.stat('/dev/nonexistent', () => {
assert(!called);
called = true;
setImmediate(common.mustCall(() => {
clearInterval(t1);
clearInterval(t2);
clearTimeout(t3);
});
}, platformTimeout(50));
}));
}, 10);
const t2 = setInterval(() => {
common.busyLoop(20);
}, 10);