codexmobile-relay / scripts /relay-smoke.mjs
Codex
deploy: CodexMobile Relay
90f0300
Raw
History Blame Contribute Delete
2.46 kB
import {
connectMac
} from './relay-smoke-support.mjs';
import {
fail,
relayUrl,
secret,
spawnRelay,
waitForRelay
} from './relay-smoke-env.mjs';
import { runBasicRelayAssertions } from './relay-smoke-basic.mjs';
import {
verifyBrowserPendingLimit,
verifyCachedTokenBypassesValidationRateLimit,
verifyForwardedHttp,
verifyGlobalPendingLimit,
verifyMacOfflineState,
verifyPerTokenRequestCap,
verifyRelaySecretRotationGraceWindow,
verifyRelayStartup
} from './relay-smoke-relay-scenarios.mjs';
import {
verifyBrowserEvents,
verifyDifferentMacDoesNotReplaceActiveMac,
verifyIdleAndActiveHeartbeat,
verifyReconnectAndUnsupportedRoutes
} from './relay-smoke-mac-scenarios.mjs';
import {
verifyRealConnectorForwardsLocalWsEvents,
verifyRealConnectorStreamsGeneratedAssets,
verifyRealConnectorStreamsMultipartRequests,
verifyRealConnectorStreamsSpeechAudio,
verifyRealConnectorTunnelsRealtimeVoice
} from './relay-smoke-connector-scenarios.mjs';
async function main() {
runBasicRelayAssertions();
const relay = spawnRelay();
try {
await waitForRelay(relay);
await verifyRelayStartup();
await verifyRelaySecretRotationGraceWindow();
await verifyMacOfflineState();
const mac = await connectMac({ relayUrl, secret, reachable: true });
await verifyDifferentMacDoesNotReplaceActiveMac(mac);
await verifyIdleAndActiveHeartbeat(mac);
const pendingLimitMac = await verifyBrowserPendingLimit(
await verifyCachedTokenBypassesValidationRateLimit(
await verifyPerTokenRequestCap(
await verifyForwardedHttp(mac)
)
)
);
const globalLimitMac = await verifyGlobalPendingLimit(pendingLimitMac);
globalLimitMac.ws.close();
await new Promise((resolve) => setTimeout(resolve, 100));
const eventMac = await connectMac({ relayUrl, secret, reachable: true });
await verifyBrowserEvents(eventMac);
eventMac.ws.close();
await new Promise((resolve) => setTimeout(resolve, 100));
await verifyReconnectAndUnsupportedRoutes();
await verifyRealConnectorForwardsLocalWsEvents();
await verifyRealConnectorTunnelsRealtimeVoice();
await verifyRealConnectorStreamsMultipartRequests();
await verifyRealConnectorStreamsGeneratedAssets();
await verifyRealConnectorStreamsSpeechAudio();
console.log('Relay smoke ok');
} finally {
relay.kill('SIGTERM');
}
}
main().catch((error) => fail(error.message, error.stack));