Skip to content

Commit 8470ca9

Browse files
committed
Add debug logging
1 parent 01fd1af commit 8470ca9

File tree

1 file changed

+21
-0
lines changed

1 file changed

+21
-0
lines changed

Tests/AppTests/Helpers/DatabasePool.swift

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,9 @@ actor DatabasePool {
4040
var availableDatabases: Set<Database> = .init()
4141

4242
func setUp() async throws {
43+
let start = Date()
44+
print("ℹ️ \(#function) start")
45+
defer { print("ℹ️ \(#function) end", Date().timeIntervalSince(start)) }
4346
// Call DotEnvFile.load once to ensure env variables are set
4447
await DotEnvFile.load(for: .testing, fileio: .init(threadPool: .singleton))
4548

@@ -88,6 +91,9 @@ actor DatabasePool {
8891
}
8992

9093
func withDatabase(_ operation: @Sendable (Database) async throws -> Void) async throws {
94+
let start = Date()
95+
print("ℹ️ \(#function) start")
96+
defer { print("ℹ️ \(#function) end", Date().timeIntervalSince(start)) }
9197
let db = try await retainDatabase()
9298
do {
9399
try await operation(db)
@@ -116,8 +122,19 @@ actor DatabasePool {
116122
}
117123

118124
private func retainDatabase() async throws -> Database {
125+
let start = Date()
126+
print("ℹ️ \(#function) start")
127+
defer { print("ℹ️ \(#function) end", Date().timeIntervalSince(start)) }
119128
var database = availableDatabases.randomElement()
129+
var retry = 0
120130
while database == nil {
131+
defer { retry += 1 }
132+
if retry > 0 && retry % 50 == 0 {
133+
print("ℹ️ \(#function) available databases: \(availableDatabases.count) retry \(retry)")
134+
}
135+
if retry >= 1000 {
136+
throw "Retry count exceeded"
137+
}
121138
try await Task.sleep(for: .milliseconds(100))
122139
database = availableDatabases.randomElement()
123140
}
@@ -268,3 +285,7 @@ extension Environment {
268285
Environment.get("DATABASEPOOL_TEARDOWN").flatMap(\.asBool) ?? true
269286
}
270287
}
288+
289+
290+
#warning("remove later")
291+
extension String: Swift.Error { }

0 commit comments

Comments
 (0)