Skip to content

Commit 91bb429

Browse files
committed
Make tests work again
1 parent b5a175e commit 91bb429

9 files changed

+115
-102
lines changed

Sources/ConnectionPoolModule/ConnectionRequest.swift

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
import Atomics
12

23
public struct ConnectionRequest<Connection: PooledConnection>: ConnectionRequestProtocol {
34
public typealias ID = Int

Sources/ConnectionPoolTestUtils/MockRequest.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ public final class MockRequest<Connection: PooledConnection>: ConnectionRequestP
1010
}
1111
}
1212

13-
public init() {}
13+
public init(connectionType: Connection.Type = Connection.self) {}
1414

1515
public var id: ID { ID(self) }
1616

Tests/ConnectionPoolModuleTests/ConnectionPoolTests.swift

Lines changed: 44 additions & 42 deletions
Large diffs are not rendered by default.

Tests/ConnectionPoolModuleTests/ConnectionRequestTests.swift

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,9 +4,12 @@ import XCTest
44

55
final class ConnectionRequestTests: XCTestCase {
66

7+
let executor = NothingConnectionPoolExecutor()
8+
79
func testHappyPath() async throws {
8-
let mockConnection = MockConnection(id: 1)
9-
let lease = try await withCheckedThrowingContinuation { (continuation: CheckedContinuation<ConnectionLease<MockConnection>, any Error>) in
10+
let mockConnection = MockConnection(id: 1, executor: self.executor)
11+
let lease = try await withCheckedThrowingContinuation {
12+
(continuation: CheckedContinuation<ConnectionLease<MockConnection<NothingConnectionPoolExecutor>>, any Error>) in
1013
let request = ConnectionRequest(id: 42, continuation: continuation)
1114
XCTAssertEqual(request.id, 42)
1215
let lease = ConnectionLease(connection: mockConnection) {
@@ -20,7 +23,8 @@ final class ConnectionRequestTests: XCTestCase {
2023

2124
func testSadPath() async throws {
2225
do {
23-
_ = try await withCheckedThrowingContinuation { (continuation: CheckedContinuation<MockConnection, any Error>) in
26+
_ = try await withCheckedThrowingContinuation {
27+
(continuation: CheckedContinuation<MockConnection<NothingConnectionPoolExecutor>, any Error>) in
2428
continuation.resume(with: .failure(ConnectionPoolError.requestCancelled))
2529
}
2630
XCTFail("This point should not be reached")

Tests/ConnectionPoolModuleTests/NoKeepAliveBehaviorTests.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ import XCTest
55
@available(macOS 13.0, iOS 16.0, tvOS 16.0, watchOS 9.0, *)
66
final class NoKeepAliveBehaviorTests: XCTestCase {
77
func testNoKeepAlive() {
8-
let keepAliveBehavior = NoOpKeepAliveBehavior(connectionType: MockConnection.self)
8+
let keepAliveBehavior = NoOpKeepAliveBehavior(connectionType: MockConnection<MockExecutor>.self)
99
XCTAssertNil(keepAliveBehavior.keepAliveFrequency)
1010
}
1111
}

Tests/ConnectionPoolModuleTests/PoolStateMachine+ConnectionGroupTests.swift

Lines changed: 9 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,8 @@ import XCTest
66
final class PoolStateMachine_ConnectionGroupTests: XCTestCase {
77
var idGenerator: ConnectionIDGenerator!
88

9+
let executor = NothingConnectionPoolExecutor()
10+
911
override func setUp() {
1012
self.idGenerator = ConnectionIDGenerator()
1113
super.setUp()
@@ -41,7 +43,7 @@ final class PoolStateMachine_ConnectionGroupTests: XCTestCase {
4143

4244
var connected: UInt16 = 0
4345
for request in requests {
44-
let newConnection = MockConnection(id: request.connectionID)
46+
let newConnection = MockConnection(id: request.connectionID, executor: self.executor)
4547
let (_, context) = connections.newConnectionEstablished(newConnection, maxStreams: 1)
4648
XCTAssertEqual(context.info, .idle(availableStreams: 1, newIdle: true))
4749
XCTAssertEqual(context.use, .persisted)
@@ -76,7 +78,7 @@ final class PoolStateMachine_ConnectionGroupTests: XCTestCase {
7678
XCTAssertEqual(connections.soonAvailableConnections, 1)
7779
XCTAssertEqual(connections.stats, .init(connecting: 1))
7880

79-
let newConnection = MockConnection(id: request.connectionID)
81+
let newConnection = MockConnection(id: request.connectionID, executor: self.executor)
8082
let (_, establishedContext) = connections.newConnectionEstablished(newConnection, maxStreams: 1)
8183
XCTAssertEqual(establishedContext.info, .idle(availableStreams: 1, newIdle: true))
8284
XCTAssertEqual(establishedContext.use, .demand)
@@ -184,14 +186,14 @@ final class PoolStateMachine_ConnectionGroupTests: XCTestCase {
184186
}
185187
XCTAssertEqual(connections.stats, .init(connecting: 3))
186188

187-
let newSecondConnection = MockConnection(id: secondRequest.connectionID)
189+
let newSecondConnection = MockConnection(id: secondRequest.connectionID, executor: self.executor)
188190
let (_, establishedSecondConnectionContext) = connections.newConnectionEstablished(newSecondConnection, maxStreams: 1)
189191
XCTAssertEqual(establishedSecondConnectionContext.info, .idle(availableStreams: 1, newIdle: true))
190192
XCTAssertEqual(establishedSecondConnectionContext.use, .persisted)
191193
XCTAssertEqual(connections.stats, .init(connecting: 2, idle: 1, availableStreams: 1))
192194
XCTAssertEqual(connections.soonAvailableConnections, 2)
193195

194-
let newThirdConnection = MockConnection(id: thirdRequest.connectionID)
196+
let newThirdConnection = MockConnection(id: thirdRequest.connectionID, executor: self.executor)
195197
let (thirdConnectionIndex, establishedThirdConnectionContext) = connections.newConnectionEstablished(newThirdConnection, maxStreams: 1)
196198
XCTAssertEqual(establishedThirdConnectionContext.info, .idle(availableStreams: 1, newIdle: true))
197199
XCTAssertEqual(establishedThirdConnectionContext.use, .demand)
@@ -238,7 +240,7 @@ final class PoolStateMachine_ConnectionGroupTests: XCTestCase {
238240
}
239241
XCTAssertEqual(connections.stats, .init(connecting: 2))
240242

241-
let newFirstConnection = MockConnection(id: firstRequest.connectionID)
243+
let newFirstConnection = MockConnection(id: firstRequest.connectionID, executor: self.executor)
242244
let (_, establishedFirstConnectionContext) = connections.newConnectionEstablished(newFirstConnection, maxStreams: 1)
243245
XCTAssertEqual(establishedFirstConnectionContext.info, .idle(availableStreams: 1, newIdle: true))
244246
XCTAssertEqual(establishedFirstConnectionContext.use, .demand)
@@ -273,7 +275,7 @@ final class PoolStateMachine_ConnectionGroupTests: XCTestCase {
273275
XCTAssertEqual(requests.count, 1)
274276
guard let firstRequest = requests.first else { return XCTFail("Expected to have a request here") }
275277

276-
let newConnection = MockConnection(id: firstRequest.connectionID)
278+
let newConnection = MockConnection(id: firstRequest.connectionID, executor: self.executor)
277279
let (connectionIndex, establishedConnectionContext) = connections.newConnectionEstablished(newConnection, maxStreams: 1)
278280
XCTAssertEqual(establishedConnectionContext.info, .idle(availableStreams: 1, newIdle: true))
279281
XCTAssertEqual(establishedConnectionContext.use, .persisted)
@@ -307,7 +309,7 @@ final class PoolStateMachine_ConnectionGroupTests: XCTestCase {
307309

308310
guard let firstRequest = connections.createNewDemandConnectionIfPossible() else { return XCTFail("Expected to have a request here") }
309311

310-
let newConnection = MockConnection(id: firstRequest.connectionID)
312+
let newConnection = MockConnection(id: firstRequest.connectionID, executor: self.executor)
311313
let (connectionIndex, establishedConnectionContext) = connections.newConnectionEstablished(newConnection, maxStreams: 1)
312314
XCTAssertEqual(establishedConnectionContext.info, .idle(availableStreams: 1, newIdle: true))
313315
XCTAssertEqual(connections.stats, .init(idle: 1, availableStreams: 1))

Tests/ConnectionPoolModuleTests/PoolStateMachine+ConnectionStateTests.swift

Lines changed: 10 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,8 @@ final class PoolStateMachine_ConnectionStateTests: XCTestCase {
77

88
typealias TestConnectionState = TestPoolStateMachine.ConnectionState
99

10+
let executor = NothingConnectionPoolExecutor()
11+
1012
func testStartupLeaseReleaseParkLease() {
1113
let connectionID = 1
1214
var state = TestConnectionState(id: connectionID)
@@ -15,7 +17,7 @@ final class PoolStateMachine_ConnectionStateTests: XCTestCase {
1517
XCTAssertEqual(state.isAvailable, false)
1618
XCTAssertEqual(state.isConnected, false)
1719
XCTAssertEqual(state.isLeased, false)
18-
let connection = MockConnection(id: connectionID)
20+
let connection = MockConnection(id: connectionID, executor: self.executor)
1921
XCTAssertEqual(state.connected(connection, maxStreams: 1), .idle(availableStreams: 1, newIdle: true))
2022
XCTAssertEqual(state.isIdle, true)
2123
XCTAssertEqual(state.isAvailable, true)
@@ -58,7 +60,7 @@ final class PoolStateMachine_ConnectionStateTests: XCTestCase {
5860
func testStartupParkLeaseBeforeTimersRegistered() {
5961
let connectionID = 1
6062
var state = TestConnectionState(id: connectionID)
61-
let connection = MockConnection(id: connectionID)
63+
let connection = MockConnection(id: connectionID, executor: self.executor)
6264
XCTAssertEqual(state.connected(connection, maxStreams: 1), .idle(availableStreams: 1, newIdle: true))
6365
let parkResult = state.parkConnection(scheduleKeepAliveTimer: true, scheduleIdleTimeoutTimer: true)
6466
XCTAssertEqual(
@@ -84,7 +86,7 @@ final class PoolStateMachine_ConnectionStateTests: XCTestCase {
8486
func testStartupParkLeasePark() {
8587
let connectionID = 1
8688
var state = TestConnectionState(id: connectionID)
87-
let connection = MockConnection(id: connectionID)
89+
let connection = MockConnection(id: connectionID, executor: self.executor)
8890
XCTAssertEqual(state.connected(connection, maxStreams: 1), .idle(availableStreams: 1, newIdle: true))
8991
let parkResult = state.parkConnection(scheduleKeepAliveTimer: true, scheduleIdleTimeoutTimer: true)
9092
XCTAssert(
@@ -145,14 +147,14 @@ final class PoolStateMachine_ConnectionStateTests: XCTestCase {
145147
)
146148
XCTAssertEqual(state.retryConnect(), forthBackoffTimerCancellationToken)
147149

148-
let connection = MockConnection(id: connectionID)
150+
let connection = MockConnection(id: connectionID, executor: self.executor)
149151
XCTAssertEqual(state.connected(connection, maxStreams: 1), .idle(availableStreams: 1, newIdle: true))
150152
}
151153

152154
func testLeaseMultipleStreams() {
153155
let connectionID = 1
154156
var state = TestConnectionState(id: connectionID)
155-
let connection = MockConnection(id: connectionID)
157+
let connection = MockConnection(id: connectionID, executor: self.executor)
156158
XCTAssertEqual(state.connected(connection, maxStreams: 100), .idle(availableStreams: 100, newIdle: true))
157159
let timers = state.parkConnection(scheduleKeepAliveTimer: true, scheduleIdleTimeoutTimer: false)
158160
guard let keepAliveTimer = timers.first else { return XCTFail("Expected to get a keepAliveTimer") }
@@ -185,7 +187,7 @@ final class PoolStateMachine_ConnectionStateTests: XCTestCase {
185187
func testRunningKeepAliveReducesAvailableStreams() {
186188
let connectionID = 1
187189
var state = TestConnectionState(id: connectionID)
188-
let connection = MockConnection(id: connectionID)
190+
let connection = MockConnection(id: connectionID, executor: self.executor)
189191
XCTAssertEqual(state.connected(connection, maxStreams: 100), .idle(availableStreams: 100, newIdle: true))
190192
let timers = state.parkConnection(scheduleKeepAliveTimer: true, scheduleIdleTimeoutTimer: false)
191193
guard let keepAliveTimer = timers.first else { return XCTFail("Expected to get a keepAliveTimer") }
@@ -217,7 +219,7 @@ final class PoolStateMachine_ConnectionStateTests: XCTestCase {
217219
func testRunningKeepAliveDoesNotReduceAvailableStreams() {
218220
let connectionID = 1
219221
var state = TestConnectionState(id: connectionID)
220-
let connection = MockConnection(id: connectionID)
222+
let connection = MockConnection(id: connectionID, executor: self.executor)
221223
XCTAssertEqual(state.connected(connection, maxStreams: 100), .idle(availableStreams: 100, newIdle: true))
222224
let timers = state.parkConnection(scheduleKeepAliveTimer: true, scheduleIdleTimeoutTimer: false)
223225
guard let keepAliveTimer = timers.first else { return XCTFail("Expected to get a keepAliveTimer") }
@@ -242,7 +244,7 @@ final class PoolStateMachine_ConnectionStateTests: XCTestCase {
242244
func testRunKeepAliveRacesAgainstIdleClose() {
243245
let connectionID = 1
244246
var state = TestConnectionState(id: connectionID)
245-
let connection = MockConnection(id: connectionID)
247+
let connection = MockConnection(id: connectionID, executor: self.executor)
246248
XCTAssertEqual(state.connected(connection, maxStreams: 1), .idle(availableStreams: 1, newIdle: true))
247249
let parkResult = state.parkConnection(scheduleKeepAliveTimer: true, scheduleIdleTimeoutTimer: true)
248250
guard let keepAliveTimer = parkResult.first, let idleTimer = parkResult.second else {

Tests/ConnectionPoolModuleTests/PoolStateMachine+RequestQueueTests.swift

Lines changed: 13 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ final class PoolStateMachine_RequestQueueTests: XCTestCase {
1111
var queue = TestQueue()
1212
XCTAssert(queue.isEmpty)
1313

14-
let request1 = MockRequest()
14+
let request1 = MockRequest(connectionType: MockConnection<NothingConnectionPoolExecutor>.self)
1515
queue.queue(request1)
1616
XCTAssertEqual(queue.count, 1)
1717
XCTAssertFalse(queue.isEmpty)
@@ -25,11 +25,11 @@ final class PoolStateMachine_RequestQueueTests: XCTestCase {
2525
var queue = TestQueue()
2626
XCTAssert(queue.isEmpty)
2727

28-
var request1 = MockRequest()
28+
var request1 = MockRequest(connectionType: MockConnection<NothingConnectionPoolExecutor>.self)
2929
queue.queue(request1)
30-
var request2 = MockRequest()
30+
var request2 = MockRequest(connectionType: MockConnection<NothingConnectionPoolExecutor>.self)
3131
queue.queue(request2)
32-
var request3 = MockRequest()
32+
var request3 = MockRequest(connectionType: MockConnection<NothingConnectionPoolExecutor>.self)
3333
queue.queue(request3)
3434

3535
do {
@@ -49,11 +49,11 @@ final class PoolStateMachine_RequestQueueTests: XCTestCase {
4949
var queue = TestQueue()
5050
XCTAssert(queue.isEmpty)
5151

52-
var request1 = MockRequest()
52+
var request1 = MockRequest(connectionType: MockConnection<NothingConnectionPoolExecutor>.self)
5353
queue.queue(request1)
54-
var request2 = MockRequest()
54+
var request2 = MockRequest(connectionType: MockConnection<NothingConnectionPoolExecutor>.self)
5555
queue.queue(request2)
56-
var request3 = MockRequest()
56+
var request3 = MockRequest(connectionType: MockConnection<NothingConnectionPoolExecutor>.self)
5757
queue.queue(request3)
5858

5959
do {
@@ -76,11 +76,11 @@ final class PoolStateMachine_RequestQueueTests: XCTestCase {
7676
var queue = TestQueue()
7777
XCTAssert(queue.isEmpty)
7878

79-
var request1 = MockRequest()
79+
var request1 = MockRequest(connectionType: MockConnection<NothingConnectionPoolExecutor>.self)
8080
queue.queue(request1)
81-
var request2 = MockRequest()
81+
var request2 = MockRequest(connectionType: MockConnection<NothingConnectionPoolExecutor>.self)
8282
queue.queue(request2)
83-
var request3 = MockRequest()
83+
var request3 = MockRequest(connectionType: MockConnection<NothingConnectionPoolExecutor>.self)
8484
queue.queue(request3)
8585

8686
do {
@@ -113,11 +113,11 @@ final class PoolStateMachine_RequestQueueTests: XCTestCase {
113113
var queue = TestQueue()
114114
XCTAssert(queue.isEmpty)
115115

116-
var request1 = MockRequest()
116+
var request1 = MockRequest(connectionType: MockConnection<NothingConnectionPoolExecutor>.self)
117117
queue.queue(request1)
118-
var request2 = MockRequest()
118+
var request2 = MockRequest(connectionType: MockConnection<NothingConnectionPoolExecutor>.self)
119119
queue.queue(request2)
120-
var request3 = MockRequest()
120+
var request3 = MockRequest(connectionType: MockConnection<NothingConnectionPoolExecutor>.self)
121121
queue.queue(request3)
122122

123123
do {

0 commit comments

Comments
 (0)