Files
GO-3.0/electron/src/reticulum-resource-worker-pool.test.ts

20 lines
761 B
TypeScript

import { describe, expect, it, vi } from 'vitest';
import { ReticulumResourceWorkerPool } from './reticulum-resource-worker-pool';
describe('ReticulumResourceWorkerPool', () => {
it('bounds admitted work and applies backpressure before falling back', async () => {
const pool = new ReticulumResourceWorkerPool();
vi.spyOn(pool as any, 'pump').mockImplementation(() => undefined);
const tasks = Array.from({ length: 513 }, (_, index) =>
pool.run({ kind: 'delete_paths', paths: [`/tmp/resource-${index}`] })
);
await expect(tasks[512]).resolves.toBeNull();
expect(pool.stats()).toMatchObject({ queued: 256, waiting: 256, active: 0 });
pool.stop();
await expect(Promise.all(tasks)).resolves.toHaveLength(513);
});
});