test: unflake "should respect interval" (#20298)

This commit is contained in:
Dmitry Gozman 2023-01-23 17:57:37 -08:00 committed by GitHub
parent 7fcec1a06b
commit 38f260cc51
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -117,7 +117,7 @@ export async function pollAgainstTimeout<T>(callback: () => Promise<{ continuePo
const wrappedCallback = () => Promise.resolve().then(callback); const wrappedCallback = () => Promise.resolve().then(callback);
while (true) { while (true) {
const elapsed = monotonicTime() - startTime; const elapsed = monotonicTime() - startTime;
if (timeout !== 0 && elapsed > timeout) if (timeout !== 0 && elapsed >= timeout)
break; break;
const received = timeout !== 0 ? await raceAgainstTimeout(wrappedCallback, timeout - elapsed) const received = timeout !== 0 ? await raceAgainstTimeout(wrappedCallback, timeout - elapsed)
: await wrappedCallback().then(value => ({ result: value, timedOut: false })); : await wrappedCallback().then(value => ({ result: value, timedOut: false }));
@ -126,11 +126,9 @@ export async function pollAgainstTimeout<T>(callback: () => Promise<{ continuePo
lastResult = received.result.result; lastResult = received.result.result;
if (!received.result.continuePolling) if (!received.result.continuePolling)
return { result: received.result.result, timedOut: false }; return { result: received.result.result, timedOut: false };
let interval = pollIntervals!.shift() ?? lastPollInterval; const interval = pollIntervals!.shift() ?? lastPollInterval;
if (timeout !== 0) { if (timeout !== 0 && startTime + timeout <= monotonicTime() + interval)
const elapsed = monotonicTime() - startTime; break;
interval = Math.min(interval, Math.max(timeout - elapsed, 1));
}
await new Promise(x => setTimeout(x, interval)); await new Promise(x => setTimeout(x, interval));
} }
return { timedOut: true, result: lastResult }; return { timedOut: true, result: lastResult };