mirror of
https://github.com/stablyai/orca.git
synced 2026-10-30 16:47:34 +00:00
37 lines
1.2 KiB
TypeScript
37 lines
1.2 KiB
TypeScript
import { afterEach, describe, expect, it, vi } from 'vitest'
|
|
import { SharedControlReconnectScheduler } from './remote-runtime-shared-control-reconnect'
|
|
|
|
afterEach(() => {
|
|
vi.useRealTimers()
|
|
})
|
|
|
|
describe('SharedControlReconnectScheduler', () => {
|
|
it('advances one pending backoff without leaving its timer armed', async () => {
|
|
vi.useFakeTimers()
|
|
const scheduler = new SharedControlReconnectScheduler()
|
|
const open = vi.fn()
|
|
scheduler.schedule({ intentionallyClosed: false, delaysMs: [30_000], open })
|
|
|
|
expect(scheduler.retryNow()).toBe(true)
|
|
expect(scheduler.retryNow()).toBe(false)
|
|
expect(open).toHaveBeenCalledTimes(1)
|
|
|
|
await vi.advanceTimersByTimeAsync(30_000)
|
|
expect(open).toHaveBeenCalledTimes(1)
|
|
})
|
|
|
|
it('does not advance cleared or intentionally closed work', () => {
|
|
vi.useFakeTimers()
|
|
const scheduler = new SharedControlReconnectScheduler()
|
|
const open = vi.fn()
|
|
scheduler.schedule({ intentionallyClosed: false, delaysMs: [30_000], open })
|
|
scheduler.clear()
|
|
|
|
expect(scheduler.retryNow()).toBe(false)
|
|
|
|
scheduler.schedule({ intentionallyClosed: true, delaysMs: [30_000], open })
|
|
expect(scheduler.retryNow()).toBe(false)
|
|
expect(open).not.toHaveBeenCalled()
|
|
})
|
|
})
|