diff --git a/tests/waku_archive/test_driver_postgres.nim b/tests/waku_archive/test_driver_postgres.nim index 34a428615..78b71d707 100644 --- a/tests/waku_archive/test_driver_postgres.nim +++ b/tests/waku_archive/test_driver_postgres.nim @@ -23,6 +23,8 @@ suite "Postgres driver": driver = PostgresDriver(driverRes.get()) + (await driver.waitForPartition()).expect("Test has no DB partition") + asyncTeardown: let resetRes = await driver.reset() if resetRes.isErr(): diff --git a/tests/waku_archive/test_driver_postgres_query.nim b/tests/waku_archive/test_driver_postgres_query.nim index 8bbdc52c0..872580737 100644 --- a/tests/waku_archive/test_driver_postgres_query.nim +++ b/tests/waku_archive/test_driver_postgres_query.nim @@ -38,6 +38,8 @@ suite "Postgres driver - queries": driver = PostgresDriver(driverRes.get()) + (await driver.waitForPartition()).expect("Test has no DB partition") + asyncTeardown: let resetRes = await driver.reset() diff --git a/waku/waku_archive/driver/postgres_driver/postgres_driver.nim b/waku/waku_archive/driver/postgres_driver/postgres_driver.nim index 9b0e14c84..84da050ce 100644 --- a/waku/waku_archive/driver/postgres_driver/postgres_driver.nim +++ b/waku/waku_archive/driver/postgres_driver/postgres_driver.nim @@ -1422,6 +1422,21 @@ proc removeOldestPartition( proc containsAnyPartition*(self: PostgresDriver): bool = return not self.partitionMngr.isEmpty() +proc waitForPartition*( + self: PostgresDriver, timeout = chronos.seconds(5) +): Future[ArchiveDriverResult[void]] {.async.} = + let pollInterval = chronos.milliseconds(100) + var elapsed = chronos.milliseconds(0) + + while elapsed < timeout: + if self.containsAnyPartition(): + return ok() + + await sleepAsync(pollInterval) + elapsed += pollInterval + + return err("PostgresDriver.waitForPartition() timed out after " & $timeout) + method decreaseDatabaseSize*( driver: PostgresDriver, targetSizeInBytes: int64, forceRemoval: bool = false ): Future[ArchiveDriverResult[void]] {.async.} =