Skip to content

Commit e6264d3

Browse files
committed
Make sure we always run setup on the discovered dbs
1 parent 4722ba2 commit e6264d3

File tree

1 file changed

+19
-15
lines changed

1 file changed

+19
-15
lines changed

Tests/AppTests/Helpers/DatabasePool.swift

Lines changed: 19 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -47,24 +47,12 @@ actor DatabasePool {
4747
// We don't have docker available in CI to probe for running dbs.
4848
// Instead, we have a hard-coded list of dbs we launch in the GH workflow
4949
// file and correspondingly, we hard-code their ports here.
50-
let runningDbs = Set((6000..<6008).map(Database.init))
51-
try await withThrowingTaskGroup(of: Database.self) { group in
52-
for db in runningDbs {
53-
group.addTask {
54-
try await db.setup(for: .testing)
55-
return db
56-
}
57-
}
58-
for try await db in group {
59-
availableDatabases.insert(db)
60-
}
61-
}
50+
let runningDbs = (6000..<6008).map(Database.init)
51+
availableDatabases = try await Set(setupDatabases(runningDbs))
6252
} else {
6353
// Re-use up to maxCount running dbs
6454
let runningDbs = try await runningDatabases()
65-
for db in runningDbs.prefix(maxCount) {
66-
availableDatabases.insert(db)
67-
}
55+
availableDatabases = try await Set(setupDatabases(runningDbs.prefix(maxCount)))
6856

6957
do { // Delete overprovisioned dbs
7058
let overprovisioned = runningDbs.dropFirst(maxCount)
@@ -132,6 +120,22 @@ actor DatabasePool {
132120
.map(Database.init(port:))
133121
}
134122

123+
private func setupDatabases(_ databases: any Collection<Database>) async throws -> [Database] {
124+
try await withThrowingTaskGroup(of: Database.self) { group in
125+
for db in databases {
126+
group.addTask {
127+
try await db.setup(for: .testing)
128+
return db
129+
}
130+
}
131+
var availableDatabases = [Database]()
132+
for try await db in group {
133+
availableDatabases.append(db)
134+
}
135+
return availableDatabases
136+
}
137+
}
138+
135139
private func retainDatabase() async throws -> Database {
136140
var database = availableDatabases.randomElement()
137141
while database == nil {

0 commit comments

Comments
 (0)