mirror of
https://github.com/bilawalsidhu/gods-eye-view.git
synced 2026-11-05 02:44:02 +00:00
test(wind): verify shared acquisition cancels after final disconnect
This commit is contained in:
1 parent
ca9d1640a0
commit
ed2ca6ac6c
1 file changed
+18
@@ -233,3 +233,21 @@ test('wind failure backoff prevents unbounded repeated upstream acquisition', as
|
||||
assert.equal(JSON.parse(results[0].body).reason, 'Wind upstream unavailable');
|
||||
await request('/'); assert.equal(calls, 1);
|
||||
});
|
||||
|
||||
test('shared upstream work survives one disconnect and aborts when the final client leaves', async () => {
|
||||
const { EventEmitter } = await import('node:events');
|
||||
let handler; let signal; let loads = 0;
|
||||
const plugin = proxy({ models: { gfs: ({ signal: next }) => {
|
||||
loads++; signal = next;
|
||||
return new Promise((resolve, reject) => next.addEventListener('abort', () => reject(next.reason), { once: true }));
|
||||
} } });
|
||||
plugin.configureServer({ middlewares: { use: (_path, value) => { handler = value; } } });
|
||||
const first = new EventEmitter(); const second = new EventEmitter();
|
||||
const a = handler({ url: '/manifest', method: 'GET' }, first);
|
||||
const b = handler({ url: '/manifest', method: 'GET' }, second);
|
||||
assert.equal(loads, 1);
|
||||
first.emit('close'); assert.equal(signal.aborted, false);
|
||||
second.emit('close'); assert.equal(signal.aborted, true);
|
||||
await Promise.all([a,b]);
|
||||
assert.equal(first.listenerCount('close'), 0); assert.equal(second.listenerCount('close'), 0);
|
||||
});
|
||||
Reference in new issue
Block a user