Cover beta health continuity and readiness boundaries (Refs #149)
CI / checks (push) Successful in 5m29s
CI / checks (push) Successful in 5m29s
This commit is contained in:
@@ -152,6 +152,44 @@ describe('beta requirement evaluation', () => {
|
||||
expect(m.values.r0).toBe(0);
|
||||
});
|
||||
|
||||
it.each([
|
||||
{ minutes: 2, gap: 60_005 },
|
||||
{ minutes: 2.5, gap: 60_048 },
|
||||
{ minutes: 2.5, gap: 90_000 }
|
||||
])(
|
||||
'preserves a satisfied healthy-minute requirement after a $gap ms gap',
|
||||
({ minutes, gap }) => {
|
||||
const plan = planWith('healthy-minutes', 'failure-budget');
|
||||
const m = emptyMetrics();
|
||||
const previous = minutes * 60_000;
|
||||
for (let at = 0; at <= previous; at += 30_000) applySample(plan, m, at, true);
|
||||
expect(m.values.r0).toBe(minutes);
|
||||
expect(evaluateRequirements(plan, m, 0).every((r) => r.passed)).toBe(true);
|
||||
|
||||
applySample(plan, m, previous + gap, true);
|
||||
|
||||
expect(m.values.r0).toBeCloseTo(minutes + gap / 60_000);
|
||||
expect(m.wasHealthy).toBe(true);
|
||||
expect(m.outages).toBe(0);
|
||||
expect(evaluateRequirements(plan, m, 0).every((r) => r.passed)).toBe(true);
|
||||
}
|
||||
);
|
||||
|
||||
it('resets a satisfied healthy-minute requirement on an unhealthy sample within the freshness window', () => {
|
||||
const plan = planWith('healthy-minutes', 'failure-budget');
|
||||
const m = emptyMetrics();
|
||||
applySample(plan, m, 0, true);
|
||||
applySample(plan, m, 60_000, true);
|
||||
expect(evaluateRequirements(plan, m, 0)[0].passed).toBe(true);
|
||||
|
||||
applySample(plan, m, 90_000, false);
|
||||
|
||||
expect(m.values.r0).toBe(0);
|
||||
expect(m.wasHealthy).toBe(false);
|
||||
expect(m.outages).toBe(1);
|
||||
expect(evaluateRequirements(plan, m, 0)[0].passed).toBe(false);
|
||||
});
|
||||
|
||||
it('excludes monitoring gaps from healthy time and requires explicit manual sign-off', () => {
|
||||
const plan = planWith('healthy-minutes', 'failure-budget', 'manual');
|
||||
const m = emptyMetrics();
|
||||
|
||||
Reference in New Issue
Block a user