Fix container resource sampling and surface collection failures

This commit is contained in:
2026-10-04 22:02:03 -04:00
parent 81f088739c
commit 148c74063b
9 changed files with 48 additions and 11 deletions
@@ -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 });