Skip to content

Commit 8288f57

Browse files
geeksilva97aduh95
authored andcommitted
test: fix test-abortsignal-drop-settled-signals flakiness
PR-URL: #56197 Reviewed-By: Ruben Bridgewater <ruben@bridgewater.de> Reviewed-By: Michaël Zasso <targos@protonmail.com> Reviewed-By: Luigi Pinca <luigipinca@gmail.com> Reviewed-By: Jason Zhang <xzha4350@gmail.com> Reviewed-By: James M Snell <jasnell@gmail.com> Reviewed-By: Chemi Atlow <chemi@atlow.co.il>
1 parent f4faedf commit 8288f57

File tree

1 file changed

+16
-23
lines changed

1 file changed

+16
-23
lines changed

test/parallel/test-abortsignal-drop-settled-signals.mjs

+16-23
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
// Flags: --expose_gc
22
//
33
import '../common/index.mjs';
4+
import { gcUntil } from '../common/gc.js';
45
import { describe, it } from 'node:test';
56

67
function makeSubsequentCalls(limit, done, holdReferences = false) {
@@ -141,37 +142,29 @@ it('drops settled dependant signals when signal is composite', (t, done) => {
141142
);
142143

143144
setImmediate(() => {
144-
global.gc();
145+
global.gc({ execution: 'async' }).then(() => {
146+
t.assert.strictEqual(composedSignalRef.deref(), undefined);
147+
t.assert.strictEqual(controllers[0].signal[kDependantSignals].size, 2);
148+
t.assert.strictEqual(controllers[1].signal[kDependantSignals].size, 1);
145149

146-
t.assert.strictEqual(composedSignalRef.deref(), undefined);
147-
t.assert.strictEqual(controllers[0].signal[kDependantSignals].size, 2);
148-
t.assert.strictEqual(controllers[1].signal[kDependantSignals].size, 1);
149-
150-
setImmediate(() => {
151-
t.assert.strictEqual(controllers[0].signal[kDependantSignals].size, 0);
152-
t.assert.strictEqual(controllers[1].signal[kDependantSignals].size, 0);
150+
setImmediate(() => {
151+
t.assert.strictEqual(controllers[0].signal[kDependantSignals].size, 0);
152+
t.assert.strictEqual(controllers[1].signal[kDependantSignals].size, 0);
153153

154-
done();
154+
done();
155+
});
155156
});
156157
});
157158
});
158159

159160
it('drops settled signals even when there are listeners', (t, done) => {
160-
runWithOrphanListeners(limit, (signalRefs) => {
161-
setImmediate(() => {
162-
global.gc();
163-
setImmediate(() => {
164-
global.gc(); // One more call needed to clean up the deeper composed signals
165-
setImmediate(() => {
166-
global.gc(); // One more call needed to clean up the deeper composed signals
167-
168-
const unGCedSignals = [...signalRefs].filter((ref) => ref.deref());
169-
170-
t.assert.strictEqual(unGCedSignals.length, 0);
161+
runWithOrphanListeners(limit, async (signalRefs) => {
162+
await gcUntil('all signals are GCed', () => {
163+
const unGCedSignals = [...signalRefs].filter((ref) => ref.deref());
171164

172-
done();
173-
});
174-
});
165+
return unGCedSignals.length === 0;
175166
});
167+
168+
done();
176169
});
177170
});

0 commit comments

Comments
 (0)