Monitor websites uptime using Cloudflare Workers
Something went wrong. Try again.
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970import { describe, expect, it } from 'vitest';
import { deriveAggregateStatus, percentile } from './status.js';
describe('aggregate monitor status', () => { const regions = ['us-east', 'eu-west', 'asia'] as const;
it('treats a Worker-reported timeout as down while excluding missing regions', () => { expect(deriveAggregateStatus(regions, [])).toBe('unknown'); expect( deriveAggregateStatus(regions, [ { regionId: 'us-east', success: false, status: 'network_failure' }, ]), ).toBe('down'); expect( deriveAggregateStatus(regions, [{ regionId: 'us-east', success: true, status: 'success' }]), ).toBe('up'); expect( deriveAggregateStatus(regions, [ { regionId: 'us-east', success: true, status: 'success' }, { regionId: 'eu-west', success: false, status: 'http_failure' }, ]), ).toBe('degraded'); });
it('returns up, degraded and down under the stated rules', () => { expect( deriveAggregateStatus( ['us-east'], [{ regionId: 'us-east', success: true, status: 'success' }], ), ).toBe('up'); expect( deriveAggregateStatus( ['us-east'], [{ regionId: 'us-east', success: false, status: 'network_failure' }], ), ).toBe('down'); expect( deriveAggregateStatus(regions, [ { regionId: 'us-east', success: false, status: 'http_failure' }, { regionId: 'eu-west', success: false, status: 'network_failure' }, { regionId: 'asia', success: false, status: 'http_failure' }, ]), ).toBe('down'); });
it('uses only returned Worker evidence at larger region counts', () => { expect( deriveAggregateStatus( ['us-east', 'us-west', 'canada-central', 'eu-west'], [ { regionId: 'us-east', success: false, status: 'http_failure' }, { regionId: 'us-west', success: false, status: 'network_failure' }, { regionId: 'canada-central', success: false, status: 'http_failure' }, { regionId: 'eu-west', success: true, status: 'success' }, ], ), ).toBe('degraded'); });});
describe('percentiles', () => { it('uses deterministic nearest-rank percentile selection', () => { expect(percentile([], 95)).toBeNull(); expect(percentile([40, 10, 30, 20], 50)).toBe(20); expect(percentile([40, 10, 30, 20], 95)).toBe(40); });});