mirror of
https://github.com/stablyai/orca.git
synced 2026-10-18 08:03:22 +00:00
33 lines
1.3 KiB
TypeScript
33 lines
1.3 KiB
TypeScript
import { describe, expect, it } from 'vitest'
|
|
import { createPluginPanelCallAdmission } from './plugin-panel-call-admission'
|
|
|
|
describe('createPluginPanelCallAdmission', () => {
|
|
it('shares the rate budget across panel sessions for one plugin', () => {
|
|
let now = 0
|
|
const admission = createPluginPanelCallAdmission({
|
|
limits: { maxMessages: 2, perMs: 1_000 },
|
|
now: () => now
|
|
})
|
|
|
|
expect(admission.admit('orca-samples.one', { method: 'one' })).toBeNull()
|
|
expect(admission.admit('orca-samples.one', { method: 'two' })).toBeNull()
|
|
expect(admission.admit('orca-samples.one', { method: 'three' })).toBe('rate_limited')
|
|
expect(admission.admit('orca-samples.two', { method: 'one' })).toBeNull()
|
|
|
|
now = 1_000
|
|
expect(admission.admit('orca-samples.one', { method: 'four' })).toBeNull()
|
|
})
|
|
|
|
it('rejects oversized calls and can revoke a plugin budget', () => {
|
|
const admission = createPluginPanelCallAdmission({
|
|
limits: { maxBytes: 32, maxMessages: 1, perMs: 10_000 },
|
|
now: () => 0
|
|
})
|
|
|
|
expect(admission.admit('orca-samples.one', { payload: 'x'.repeat(64) })).toBe('oversized')
|
|
expect(admission.admit('orca-samples.one', {})).toBe('rate_limited')
|
|
admission.clear('orca-samples.one')
|
|
expect(admission.admit('orca-samples.one', {})).toBeNull()
|
|
})
|
|
})
|