Fix container resource sampling and surface collection failures
This commit is contained in:
@@ -38,6 +38,21 @@ async function learned() {
|
||||
}
|
||||
|
||||
describe('measured instance capacity', () => {
|
||||
it('reports sampling failure without inventing measurements and clears it after recovery', async () => {
|
||||
const { heartbeat, getHost } = await import('../../src/lib/server/hosts/index.js');
|
||||
const { capacityCalibration } = await import('../../src/lib/server/hosts/calibration.js');
|
||||
const error = 'Container resource sampling failed.';
|
||||
heartbeat(hostId, { ...inventory, instanceResourcesError: error });
|
||||
expect(getHost(hostId)?.inventory.instanceResourcesError).toBe(error);
|
||||
expect(capacityCalibration(hostId).running.samples).toBe(0);
|
||||
for (const invalid of [42, {}, 'x'.repeat(501)]) {
|
||||
expect(() => heartbeat(hostId, { ...inventory, instanceResourcesError: invalid })).toThrow('Invalid instance resource sampling error');
|
||||
}
|
||||
await report(0);
|
||||
expect(getHost(hostId)?.inventory.instanceResourcesError).toBeUndefined();
|
||||
expect(capacityCalibration(hostId).running.samples).toBe(1);
|
||||
});
|
||||
|
||||
it('uses temporary allowances until startup and running evidence mature, then replaces both defaults', async () => {
|
||||
const { capacityCalibration } = await import('../../src/lib/server/hosts/calibration.js');
|
||||
expect(capacityCalibration(hostId).startup).toMatchObject({ source: 'bootstrap', cpuCores: 0.5, memoryBytes: GiB });
|
||||
|
||||
Reference in New Issue
Block a user