openreader/packages/compute-worker/tests/unit/worker-loop-policy.test.ts
Richard R 358a56cc9a refactor: implement modular monorepo packages
- Extract database schema and migrations into @openreader/database

- Extract startup and orchestration scripts into @openreader/bootstrap

- Move compute-worker into packages/compute-worker

- Remove runtime dependency on drizzle-kit

- Update Dockerfile to deploy isolated packages without merging node_modules
2026-06-13 13:51:18 -06:00

18 lines
911 B
TypeScript

import { describe, expect, test } from 'vitest';
import { buildQueueWaitTiming, decideRetryAction } from '../../src/jobs/worker-loop-policy';
describe('worker loop policy', () => {
test('returns queue wait timing with non-negative clamped duration', () => {
expect(buildQueueWaitTiming(1000, 1300)).toEqual({ queueWaitMs: 300 });
expect(buildQueueWaitTiming(1500, 1300)).toEqual({ queueWaitMs: 0 });
});
test('retry policy: layout jobs can retry until max attempts', () => {
expect(decideRetryAction({ kind: 'pdf_layout', deliveryCount: 1, pdfAttempts: 3 })).toBe('nak_retry');
expect(decideRetryAction({ kind: 'pdf_layout', deliveryCount: 3, pdfAttempts: 3 })).toBe('term_fail');
});
test('retry policy: whisper jobs terminate immediately by default', () => {
expect(decideRetryAction({ kind: 'whisper_align', deliveryCount: 1, pdfAttempts: 10 })).toBe('term_fail');
});
});