test: fix unreliable async-hooks/test-signalwrap
Use an interval to keep the event loop open so the test does not exit before receiving all signals fom asynchronous `exec()` calls. PR-URL: https://github.com/nodejs/node/pull/17827 Fixes: https://github.com/nodejs/node/issues/14070 Reviewed-By: Colin Ihrig <cjihrig@gmail.com> Reviewed-By: Gibson Fahnestock <gibfahn@gmail.com>
This commit is contained in:
parent
81c2b59609
commit
457ceebabf
@ -1,7 +1,8 @@
|
|||||||
'use strict';
|
'use strict';
|
||||||
const common = require('../common');
|
const common = require('../common');
|
||||||
|
|
||||||
if (common.isWindows) return common.skip('no signals in Windows');
|
if (common.isWindows)
|
||||||
|
common.skip('no signals in Windows');
|
||||||
|
|
||||||
const assert = require('assert');
|
const assert = require('assert');
|
||||||
const initHooks = require('./init-hooks');
|
const initHooks = require('./init-hooks');
|
||||||
@ -11,6 +12,10 @@ const exec = require('child_process').exec;
|
|||||||
const hooks = initHooks();
|
const hooks = initHooks();
|
||||||
|
|
||||||
hooks.enable();
|
hooks.enable();
|
||||||
|
|
||||||
|
// Keep the event loop open so process doesn't exit before receiving signals.
|
||||||
|
const interval = setInterval(() => {}, 9999);
|
||||||
|
|
||||||
process.on('SIGUSR2', common.mustCall(onsigusr2, 2));
|
process.on('SIGUSR2', common.mustCall(onsigusr2, 2));
|
||||||
|
|
||||||
const as = hooks.activitiesOfTypes('SIGNALWRAP');
|
const as = hooks.activitiesOfTypes('SIGNALWRAP');
|
||||||
@ -66,6 +71,7 @@ function onsigusr2() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
function onsigusr2Again() {
|
function onsigusr2Again() {
|
||||||
|
clearInterval(interval);
|
||||||
setImmediate(() => {
|
setImmediate(() => {
|
||||||
checkInvocations(
|
checkInvocations(
|
||||||
signal1, { init: 1, before: 2, after: 2, destroy: 1 },
|
signal1, { init: 1, before: 2, after: 2, destroy: 1 },
|
||||||
|
Loading…
x
Reference in New Issue
Block a user