Files
openclaw/apps/shared/OpenClawKit/Tests/OpenClawKitTests/TestAsyncHelpers.swift
Peter Steinberger b6e90cbed4 test: raise async wait ceilings that flaked under CI load (#109222)
vi.waitFor in the ACP abort test and the shared Swift waitUntil helper
both timed out on contended runners while passing solo; polling waits
return immediately when healthy, so the higher ceilings cost nothing.
2026-07-16 10:30:50 -07:00

25 lines
753 B
Swift

import Foundation
struct AsyncWaitTimeoutError: Error, CustomStringConvertible {
let label: String
var description: String {
"Timeout waiting for: \(self.label)"
}
}
func waitUntil(
_ label: String,
// Polling returns as soon as the condition holds; the generous ceiling
// only matters under full-suite parallel load, where 3s flaked on CI.
timeoutSeconds: Double = 15.0,
pollMs: UInt64 = 10,
_ condition: @escaping @Sendable () async -> Bool) async throws
{
let deadline = Date().addingTimeInterval(timeoutSeconds)
while Date() < deadline {
if await condition() { return }
try await Task.sleep(nanoseconds: pollMs * 1_000_000)
}
throw AsyncWaitTimeoutError(label: label)
}