feat(gateway): support per-channel and per-session queue policy overrides

This commit is contained in:
William Valentin
2026-02-16 11:51:26 -08:00
parent f7284a4ef1
commit fbd24d4379
11 changed files with 181 additions and 9 deletions
+24
View File
@@ -80,6 +80,8 @@ describe('configSchema — server', () => {
expect(result.server.queue.mode).toBe('collect');
expect(result.server.queue.cap).toBe(50);
expect(result.server.queue.overflow).toBe('drop_old');
expect(result.server.queue.overrides.channels).toEqual({});
expect(result.server.queue.overrides.sessions).toEqual({});
});
it('accepts custom queue settings', () => {
@@ -98,6 +100,28 @@ describe('configSchema — server', () => {
expect(result.server.queue.overflow).toBe('drop_new');
});
it('accepts queue override settings', () => {
const result = configSchema.parse({
...minimalConfig,
server: {
queue: {
overrides: {
channels: {
ws: { mode: 'collect', cap: 5 },
},
sessions: {
'ws:vip-user': { mode: 'interrupt', overflow: 'drop_new' },
},
},
},
},
});
expect(result.server.queue.overrides.channels.ws.mode).toBe('collect');
expect(result.server.queue.overrides.channels.ws.cap).toBe(5);
expect(result.server.queue.overrides.sessions['ws:vip-user'].mode).toBe('interrupt');
expect(result.server.queue.overrides.sessions['ws:vip-user'].overflow).toBe('drop_new');
});
it('defaults discovery settings', () => {
const result = configSchema.parse(minimalConfig);
expect(result.server.discovery.enabled).toBe(false);