Files
openchamber/packages/electron/host-probe-policy.test.mjs
Jordi Ibáñez 70e04fc15f fix: avoid false offline results in Electron instance probes (#3415)
* fix: avoid false offline results in Electron instance probes

Use Chromium networking with one abortable deadline per direct-host attempt. Retry unreachable selector probes once while preserving identity, auth and compatibility checks, and clean up response bodies on every exit.

Add regression coverage and document the native probe invariants.

* fix: declare Electron probe's zod dependency

Declare the existing workspace zod version as an Electron runtime dependency so probe imports do not rely on root hoisting. Update only the matching lockfile workspace entry, without changing resolved versions or parsing behavior.
2026-09-09 17:44:38 +03:00

44 lines
1.5 KiB
JavaScript

import assert from 'node:assert/strict';
import test from 'node:test';
import {
FAST_HOST_PROBE_TIMEOUT_MS,
RETRY_HOST_PROBE_TIMEOUT_MS,
probeDirectHostWithRetry,
} from './host-probe-policy.mjs';
test('retries a fast unreachable direct-host probe with the slow timeout', async () => {
const timeouts = [];
const result = await probeDirectHostWithRetry(async (timeoutMs) => {
timeouts.push(timeoutMs);
return timeoutMs === FAST_HOST_PROBE_TIMEOUT_MS
? { status: 'unreachable', latencyMs: timeoutMs }
: { status: 'ok', latencyMs: 2_500 };
});
assert.deepEqual(timeouts, [FAST_HOST_PROBE_TIMEOUT_MS, RETRY_HOST_PROBE_TIMEOUT_MS]);
assert.deepEqual(result, { status: 'ok', latencyMs: 2_500 });
});
for (const status of ['ok', 'auth', 'wrong-service', 'incompatible', 'update-recommended']) {
test(`does not retry an authoritative ${status} result`, async () => {
const timeouts = [];
const result = await probeDirectHostWithRetry(async (timeoutMs) => {
timeouts.push(timeoutMs);
return { status, latencyMs: 12 };
});
assert.deepEqual(timeouts, [FAST_HOST_PROBE_TIMEOUT_MS]);
assert.equal(result.status, status);
});
}
test('stops after one unreachable retry', async () => {
const timeouts = [];
const result = await probeDirectHostWithRetry(async (timeoutMs) => {
timeouts.push(timeoutMs);
return { status: 'unreachable', latencyMs: timeoutMs };
});
assert.deepEqual(timeouts, [2_000, 10_000]);
assert.equal(result.status, 'unreachable');
});