From 7d09ad3e8e590added1ec2e2744629f738afea26 Mon Sep 17 00:00:00 2001 From: Mark Nottingham Date: Tue, 26 Dec 2023 18:41:34 +1100 Subject: [PATCH] Timeout on test fetches --- test-engine/client/config.mjs | 1 + test-engine/client/test.mjs | 13 +++++++++++++ 2 files changed, 14 insertions(+) diff --git a/test-engine/client/config.mjs b/test-engine/client/config.mjs index fc7a202..147bdce 100644 --- a/test-engine/client/config.mjs +++ b/test-engine/client/config.mjs @@ -1,6 +1,7 @@ export let fetch = null export let useBrowserCache = false export let baseUrl = '' +export const requestTimeout = 10 // seconds export function setFetch (call) { if (call !== undefined) { diff --git a/test-engine/client/test.mjs b/test-engine/client/test.mjs index 0509236..4180160 100644 --- a/test-engine/client/test.mjs +++ b/test-engine/client/test.mjs @@ -28,12 +28,20 @@ export function makeTest (test) { prevRes = Object.fromEntries(responses[i - 1].headers) } const init = fetching.init(idx, reqConfig, prevRes) + const controller = new AbortController() + const timeout = setTimeout(() => { + controller.abort() + }, config.requestTimeout * 1000) + init.signal = controller.signal if (test.dump === true) clientUtils.logRequest(url, init, reqNum) return config.fetch(url, init) .then(response => { responses.push(response) return checkResponse(test, requests, idx, response) }) + .finally(() => { + clearTimeout(timeout) + }) }, pauseAfter: 'pause_after' in requests[i] }) @@ -55,6 +63,7 @@ export function makeTest (test) { } return clientUtils.putTestConfig(uuid, requests) + .catch(handleError) .then(runNextStep) .then(() => { return clientUtils.getServerState(uuid) @@ -288,3 +297,7 @@ function checkServerRequests (requests, responses, serverState) { } } } + +function handleError (err) { + console.error(`ERROR: ${err}`) +}