|
|
@ -52,14 +52,18 @@ export function WorkerTestPart() { |
|
|
|
{ id: string; status: "error" | "success"; error?: Error }[] |
|
|
|
{ id: string; status: "error" | "success"; error?: Error }[] |
|
|
|
>([]); |
|
|
|
>([]); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
const [buttonDisabled, setButtonDisabled] = useState(false); |
|
|
|
|
|
|
|
|
|
|
|
const [testState, runTests] = useAsyncFn(async () => { |
|
|
|
const [testState, runTests] = useAsyncFn(async () => { |
|
|
|
|
|
|
|
setButtonDisabled(true); |
|
|
|
function updateWorker(id: string, data: (typeof workerState)[number]) { |
|
|
|
function updateWorker(id: string, data: (typeof workerState)[number]) { |
|
|
|
setWorkerState((s) => { |
|
|
|
setWorkerState((s) => { |
|
|
|
return [...s.filter((v) => v.id !== id), data]; |
|
|
|
return [...s.filter((v) => v.id !== id), data]; |
|
|
|
}); |
|
|
|
}); |
|
|
|
} |
|
|
|
} |
|
|
|
setWorkerState([]); |
|
|
|
setWorkerState([]); |
|
|
|
for (const worker of workerList) { |
|
|
|
|
|
|
|
|
|
|
|
const workerPromises = workerList.map(async (worker) => { |
|
|
|
try { |
|
|
|
try { |
|
|
|
if (worker.url.endsWith("/")) { |
|
|
|
if (worker.url.endsWith("/")) { |
|
|
|
updateWorker(worker.id, { |
|
|
|
updateWorker(worker.id, { |
|
|
@ -67,7 +71,7 @@ export function WorkerTestPart() { |
|
|
|
status: "error", |
|
|
|
status: "error", |
|
|
|
error: new Error("URL ends with slash"), |
|
|
|
error: new Error("URL ends with slash"), |
|
|
|
}); |
|
|
|
}); |
|
|
|
continue; |
|
|
|
return; |
|
|
|
} |
|
|
|
} |
|
|
|
await singularProxiedFetch( |
|
|
|
await singularProxiedFetch( |
|
|
|
worker.url, |
|
|
|
worker.url, |
|
|
@ -85,7 +89,10 @@ export function WorkerTestPart() { |
|
|
|
error: err as Error, |
|
|
|
error: err as Error, |
|
|
|
}); |
|
|
|
}); |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
}); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
await Promise.all(workerPromises); |
|
|
|
|
|
|
|
setTimeout(() => setButtonDisabled(false), 5000); |
|
|
|
}, [workerList, setWorkerState]); |
|
|
|
}, [workerList, setWorkerState]); |
|
|
|
|
|
|
|
|
|
|
|
return ( |
|
|
|
return ( |
|
|
@ -112,7 +119,12 @@ export function WorkerTestPart() { |
|
|
|
})} |
|
|
|
})} |
|
|
|
<Divider /> |
|
|
|
<Divider /> |
|
|
|
<div className="flex justify-end"> |
|
|
|
<div className="flex justify-end"> |
|
|
|
<Button theme="purple" loading={testState.loading} onClick={runTests}> |
|
|
|
<Button |
|
|
|
|
|
|
|
theme="purple" |
|
|
|
|
|
|
|
loading={testState.loading} |
|
|
|
|
|
|
|
onClick={buttonDisabled ? undefined : runTests} |
|
|
|
|
|
|
|
disabled={buttonDisabled} |
|
|
|
|
|
|
|
> |
|
|
|
Test workers |
|
|
|
Test workers |
|
|
|
</Button> |
|
|
|
</Button> |
|
|
|
</div> |
|
|
|
</div> |
|
|
|