Skip to content

Commit 7df0a17

Browse files
committed
DatabaseInfo → Database
1 parent 82676d3 commit 7df0a17

File tree

2 files changed

+27
-28
lines changed

2 files changed

+27
-28
lines changed

Tests/AppTests/Helpers/DatabasePool.swift

Lines changed: 24 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -21,8 +21,7 @@ import ShellOut
2121
actor DatabasePool {
2222
typealias DatabaseID = UUID
2323

24-
#warning("rename to Database")
25-
struct DatabaseInfo: Hashable {
24+
struct Database: Hashable {
2625
var id: DatabaseID
2726
var port: Int
2827
}
@@ -35,10 +34,10 @@ actor DatabasePool {
3534
self.maxCount = maxCount
3635
}
3736

38-
var availableDatabases: Set<DatabaseInfo> = .init()
37+
var availableDatabases: Set<Database> = .init()
3938

4039
func setUp() async throws {
41-
try await withThrowingTaskGroup(of: DatabaseInfo.self) { group in
40+
try await withThrowingTaskGroup(of: Database.self) { group in
4241
for _ in (0..<maxCount) {
4342
group.addTask {
4443
try await self.launchDB()
@@ -52,43 +51,43 @@ actor DatabasePool {
5251

5352
func tearDown() async throws {
5453
try await withThrowingTaskGroup { group in
55-
for dbInfo in availableDatabases {
54+
for db in availableDatabases {
5655
group.addTask {
57-
try await self.removeDB(dbInfo: dbInfo)
56+
try await self.removeDB(database: db)
5857
}
5958
}
6059
try await group.waitForAll()
6160
}
6261
}
6362

64-
func withDatabase(_ operation: @Sendable (DatabaseInfo) async throws -> Void) async throws {
65-
let dbID = try await retainDatabase()
63+
func withDatabase(_ operation: @Sendable (Database) async throws -> Void) async throws {
64+
let db = try await retainDatabase()
6665
do {
6766
// print("⚠️ available", availableDatabases.map(\.port).sorted())
68-
try await operation(dbID)
69-
try await releaseDatabase(dbInfo: dbID)
67+
try await operation(db)
68+
try await releaseDatabase(database: db)
7069
} catch {
71-
try await releaseDatabase(dbInfo: dbID)
70+
try await releaseDatabase(database: db)
7271
throw error
7372
}
7473
}
7574

76-
private func retainDatabase() async throws -> DatabaseInfo {
77-
var dbInfo = availableDatabases.randomElement()
78-
while dbInfo == nil {
75+
private func retainDatabase() async throws -> Database {
76+
var database = availableDatabases.randomElement()
77+
while database == nil {
7978
try await Task.sleep(for: .milliseconds(100))
80-
dbInfo = availableDatabases.randomElement()
79+
database = availableDatabases.randomElement()
8180
}
82-
guard let dbInfo else { fatalError("dbInfo cannot be nil here") }
83-
availableDatabases.remove(dbInfo)
84-
return dbInfo
81+
guard let database else { fatalError("database cannot be nil here") }
82+
availableDatabases.remove(database)
83+
return database
8584
}
8685

87-
private func releaseDatabase(dbInfo: DatabaseInfo) async throws {
88-
availableDatabases.insert(dbInfo)
86+
private func releaseDatabase(database: Database) async throws {
87+
availableDatabases.insert(database)
8988
}
9089

91-
private func launchDB(maxAttempts: Int = 3) async throws -> DatabaseInfo {
90+
private func launchDB(maxAttempts: Int = 3) async throws -> Database {
9291
let id = UUID()
9392
let port = Int.random(in: 10_000...65_000)
9493
_ = try? await ShellOut.shellOut(to: .removeDB(id: id))
@@ -99,10 +98,10 @@ actor DatabasePool {
9998
return .init(id: id, port: port)
10099
}
101100

102-
private func removeDB(dbInfo: DatabaseInfo, maxAttempts: Int = 3) async throws {
101+
private func removeDB(database: Database, maxAttempts: Int = 3) async throws {
103102
try await run(maxAttempts: 3) { attempt in
104-
// print("⚠️ Removing DB \(dbInfo.id) on port \(dbInfo.port) (attempt: \(attempt))")
105-
try await ShellOut.shellOut(to: .removeDB(id: dbInfo.id))
103+
// print("⚠️ Removing DB \(database.id) on port \(database.port) (attempt: \(attempt))")
104+
try await ShellOut.shellOut(to: .removeDB(id: database.id))
106105
}
107106
}
108107
}
@@ -111,7 +110,7 @@ actor DatabasePool {
111110
import PostgresNIO
112111
import Vapor
113112

114-
extension DatabasePool.DatabaseInfo {
113+
extension DatabasePool.Database {
115114

116115
func setupDb(_ environment: Environment) async throws {
117116
await DotEnvFile.load(for: environment, fileio: .init(threadPool: .singleton))

Tests/AppTests/Helpers/TestSupport.swift

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -29,10 +29,10 @@ func withApp(
2929
$0.logger = .noop
3030
}
3131

32-
try await DatabasePool.shared.withDatabase { dbInfo in
33-
try await dbInfo.setupDb(environment)
32+
try await DatabasePool.shared.withDatabase { database in
33+
try await database.setupDb(environment)
3434
let app = try await Application.make(environment)
35-
try await configure(app, databasePort: dbInfo.port)
35+
try await configure(app, databasePort: database.port)
3636

3737
return try await run {
3838
try await setup(app)

0 commit comments

Comments
 (0)