Add fleet and per-host concurrency controls
This commit is contained in:
@@ -353,3 +353,20 @@ describe('durable host operations', () => {
|
||||
expect(api.getHostOperation(operation.id)?.state).toBe('pending');
|
||||
});
|
||||
});
|
||||
|
||||
it('limits preparing hosts at delivery, preserves replays, and releases capacity after completion', async () => {
|
||||
const api = await enrolled();
|
||||
const second = api.createHost({ name: 'Second' });
|
||||
api.enrollHost(api.createEnrollment(second.id).token, inventory);
|
||||
const { fleetSettings, saveFleetSettings } = await import('../../src/lib/server/settings.js');
|
||||
saveFleetSettings({ ...fleetSettings(), preparationConcurrency: 1 });
|
||||
const first = api.queueHostOperation(api.host.id, 'library.download', { libraryVersionId: 'one' });
|
||||
const next = api.queueHostOperation(second.id, 'library.download', { libraryVersionId: 'two' });
|
||||
const inspect = api.queueHostOperation(second.id, 'host.inspect', {});
|
||||
expect(api.pendingHostOperations(api.host.id).map(row => row.id)).toContain(first.id);
|
||||
expect(api.pendingHostOperations(second.id).map(row => row.id)).not.toContain(next.id);
|
||||
expect(api.pendingHostOperations(second.id).map(row => row.id)).toContain(inspect.id);
|
||||
expect(api.pendingHostOperations(api.host.id).map(row => row.id)).toContain(first.id);
|
||||
api.reportHostOperation(api.host.id, first.id, { state: 'completed', result: {} });
|
||||
expect(api.pendingHostOperations(second.id).map(row => row.id)).toContain(next.id);
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user