aboutsummaryrefslogtreecommitdiffstats
path: root/packages/plugins-queue-restate/src/tests/utils.ts
blob: e02d2dee7ffc3c168805177567ee3674e7c59eb8 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
export async function waitUntil(
  f: () => Promise<boolean>,
  description: string,
  timeoutMs = 60000,
): Promise<void> {
  const startTime = Date.now();

  while (Date.now() - startTime < timeoutMs) {
    console.log(`Waiting for ${description}...`);
    try {
      const res = await f();
      if (res) {
        console.log(`${description}: success`);
        return;
      }
    } catch (error) {
      console.log(`${description}: error, retrying...: ${error}`);
    }
    await new Promise((resolve) => setTimeout(resolve, 1000));
  }

  throw new Error(`${description}: timeout after ${timeoutMs}ms`);
}