@@ -1219,176 +1219,6 @@ class ConnectionPoolTests: XCTestCase {
1219
1219
self . http1ConnectionProvider. execute ( action, logger: HTTPClient . loggingDisabled)
1220
1220
}
1221
1221
1222
- // MARK: - Connection Tests
1223
-
1224
- func testConnectionReleaseActive( ) throws {
1225
- let channel = ActiveChannel ( eventLoop: self . eventLoop)
1226
- var snapshot = self . http1ConnectionProvider. state. testsOnly_getInternalState ( )
1227
-
1228
- let connection = Connection ( channel: channel, provider: self . http1ConnectionProvider)
1229
- snapshot. openedConnectionsCount = 1
1230
- snapshot. leasedConnections. insert ( ConnectionKey ( connection) )
1231
-
1232
- self . http1ConnectionProvider. state. testsOnly_setInternalState ( snapshot)
1233
-
1234
- XCTAssertEqual ( 0 , snapshot. availableConnections. count)
1235
- XCTAssertEqual ( 1 , snapshot. leasedConnections. count)
1236
- XCTAssertEqual ( 0 , snapshot. waiters. count)
1237
- XCTAssertEqual ( 0 , snapshot. pending)
1238
- XCTAssertEqual ( 1 , snapshot. openedConnectionsCount)
1239
-
1240
- connection. release ( closing: false , logger: HTTPClient . loggingDisabled)
1241
-
1242
- // XCTAssertFalse(connection.isInUse)
1243
- snapshot = self . http1ConnectionProvider. state. testsOnly_getInternalState ( )
1244
- XCTAssertEqual ( 1 , snapshot. availableConnections. count)
1245
- XCTAssertEqual ( 0 , snapshot. leasedConnections. count)
1246
- XCTAssertEqual ( 0 , snapshot. waiters. count)
1247
- XCTAssertEqual ( 0 , snapshot. pending)
1248
- XCTAssertEqual ( 1 , snapshot. openedConnectionsCount)
1249
-
1250
- // cleanup
1251
- // this cleanup code needs to go and use HTTP1ConnectionProvider's API instead
1252
- // (https://github.com/swift-server/async-http-client/issues/234)
1253
- connection. remoteClosed ( logger: HTTPClient . loggingDisabled)
1254
- }
1255
-
1256
- func testConnectionReleaseInactive( ) throws {
1257
- let channel = EmbeddedChannel ( )
1258
-
1259
- var snapshot = self . http1ConnectionProvider. state. testsOnly_getInternalState ( )
1260
-
1261
- let connection = Connection ( channel: channel, provider: self . http1ConnectionProvider)
1262
- snapshot. openedConnectionsCount = 1
1263
- snapshot. leasedConnections. insert ( ConnectionKey ( connection) )
1264
-
1265
- self . http1ConnectionProvider. state. testsOnly_setInternalState ( snapshot)
1266
-
1267
- XCTAssertEqual ( 0 , snapshot. availableConnections. count)
1268
- XCTAssertEqual ( 1 , snapshot. leasedConnections. count)
1269
- XCTAssertEqual ( 0 , snapshot. waiters. count)
1270
- XCTAssertEqual ( 0 , snapshot. pending)
1271
- XCTAssertEqual ( 1 , snapshot. openedConnectionsCount)
1272
-
1273
- connection. release ( closing: true , logger: HTTPClient . loggingDisabled)
1274
-
1275
- snapshot = self . http1ConnectionProvider. state. testsOnly_getInternalState ( )
1276
- XCTAssertEqual ( 0 , snapshot. availableConnections. count)
1277
- XCTAssertEqual ( 0 , snapshot. leasedConnections. count)
1278
- XCTAssertEqual ( 0 , snapshot. waiters. count)
1279
- XCTAssertEqual ( 0 , snapshot. pending)
1280
- XCTAssertEqual ( 0 , snapshot. openedConnectionsCount)
1281
- }
1282
-
1283
- func testConnectionRemoteCloseRelease( ) throws {
1284
- let channel = EmbeddedChannel ( )
1285
-
1286
- var snapshot = self . http1ConnectionProvider. state. testsOnly_getInternalState ( )
1287
-
1288
- let connection = Connection ( channel: channel, provider: self . http1ConnectionProvider)
1289
- snapshot. availableConnections. append ( connection)
1290
- snapshot. openedConnectionsCount = 1
1291
-
1292
- self . http1ConnectionProvider. state. testsOnly_setInternalState ( snapshot)
1293
-
1294
- XCTAssertEqual ( 1 , snapshot. availableConnections. count)
1295
- XCTAssertEqual ( 0 , snapshot. leasedConnections. count)
1296
- XCTAssertEqual ( 0 , snapshot. waiters. count)
1297
- XCTAssertEqual ( 0 , snapshot. pending)
1298
- XCTAssertEqual ( 1 , snapshot. openedConnectionsCount)
1299
-
1300
- connection. remoteClosed ( logger: HTTPClient . loggingDisabled)
1301
-
1302
- snapshot = self . http1ConnectionProvider. state. testsOnly_getInternalState ( )
1303
- XCTAssertEqual ( 0 , snapshot. availableConnections. count)
1304
- XCTAssertEqual ( 0 , snapshot. leasedConnections. count)
1305
- XCTAssertEqual ( 0 , snapshot. waiters. count)
1306
- XCTAssertEqual ( 0 , snapshot. pending)
1307
- XCTAssertEqual ( 0 , snapshot. openedConnectionsCount)
1308
- }
1309
-
1310
- func testConnectionTimeoutRelease( ) throws {
1311
- let channel = EmbeddedChannel ( )
1312
-
1313
- var snapshot = self . http1ConnectionProvider. state. testsOnly_getInternalState ( )
1314
-
1315
- let connection = Connection ( channel: channel, provider: self . http1ConnectionProvider)
1316
- snapshot. availableConnections. append ( connection)
1317
- snapshot. openedConnectionsCount = 1
1318
-
1319
- self . http1ConnectionProvider. state. testsOnly_setInternalState ( snapshot)
1320
-
1321
- XCTAssertEqual ( 1 , snapshot. availableConnections. count)
1322
- XCTAssertEqual ( 0 , snapshot. leasedConnections. count)
1323
- XCTAssertEqual ( 0 , snapshot. waiters. count)
1324
- XCTAssertEqual ( 0 , snapshot. pending)
1325
- XCTAssertEqual ( 1 , snapshot. openedConnectionsCount)
1326
-
1327
- connection. timeout ( logger: HTTPClient . loggingDisabled)
1328
-
1329
- snapshot = self . http1ConnectionProvider. state. testsOnly_getInternalState ( )
1330
- XCTAssertEqual ( 0 , snapshot. availableConnections. count)
1331
- XCTAssertEqual ( 0 , snapshot. leasedConnections. count)
1332
- XCTAssertEqual ( 0 , snapshot. waiters. count)
1333
- XCTAssertEqual ( 0 , snapshot. pending)
1334
- XCTAssertEqual ( 0 , snapshot. openedConnectionsCount)
1335
- }
1336
-
1337
- func testAcquireAvailableBecomesUnavailable( ) throws {
1338
- let channel = ActiveChannel ( eventLoop: self . eventLoop)
1339
- var snapshot = self . http1ConnectionProvider. state. testsOnly_getInternalState ( )
1340
-
1341
- let connection = Connection ( channel: channel, provider: self . http1ConnectionProvider)
1342
- snapshot. availableConnections. append ( connection)
1343
- snapshot. openedConnectionsCount = 1
1344
-
1345
- self . http1ConnectionProvider. state. testsOnly_setInternalState ( snapshot)
1346
-
1347
- XCTAssertEqual ( 1 , snapshot. availableConnections. count)
1348
- XCTAssertEqual ( 0 , snapshot. leasedConnections. count)
1349
- XCTAssertEqual ( 0 , snapshot. waiters. count)
1350
- XCTAssertEqual ( 0 , snapshot. pending)
1351
- XCTAssertEqual ( 1 , snapshot. openedConnectionsCount)
1352
-
1353
- XCTAssertTrue ( self . http1ConnectionProvider. enqueue ( ) )
1354
-
1355
- let action = self . http1ConnectionProvider. state. acquire ( waiter: . init( promise: self . eventLoop. makePromise ( ) , setupComplete: self . eventLoop. makeSucceededFuture ( ( ) ) , preference: . indifferent) )
1356
- switch action {
1357
- case . lease( let connection, let waiter) :
1358
- // Since this connection is already in use, this should be a no-op and state should not have changed from normal lease
1359
- connection. timeout ( logger: HTTPClient . loggingDisabled)
1360
-
1361
- snapshot = self . http1ConnectionProvider. state. testsOnly_getInternalState ( )
1362
- XCTAssertTrue ( connection. isActiveEstimation)
1363
- XCTAssertTrue ( snapshot. leasedConnections. contains ( ConnectionKey ( connection) ) )
1364
- XCTAssertEqual ( 0 , snapshot. availableConnections. count)
1365
- XCTAssertEqual ( 1 , snapshot. leasedConnections. count)
1366
- XCTAssertEqual ( 0 , snapshot. waiters. count)
1367
- XCTAssertEqual ( 0 , snapshot. pending)
1368
- XCTAssertEqual ( 1 , snapshot. openedConnectionsCount)
1369
-
1370
- // This is unrecoverable, but in this case we create a new connection, so state again should not change, even though release will be called
1371
- // This is important to preventself.http1ConnectionProvider deletion since connection is released and there could be 0 waiters
1372
- connection. remoteClosed ( logger: HTTPClient . loggingDisabled)
1373
-
1374
- snapshot = self . http1ConnectionProvider. state. testsOnly_getInternalState ( )
1375
- XCTAssertTrue ( snapshot. leasedConnections. contains ( ConnectionKey ( connection) ) )
1376
- XCTAssertEqual ( 0 , snapshot. availableConnections. count)
1377
- XCTAssertEqual ( 1 , snapshot. leasedConnections. count)
1378
- XCTAssertEqual ( 0 , snapshot. waiters. count)
1379
- XCTAssertEqual ( 0 , snapshot. pending)
1380
- XCTAssertEqual ( 1 , snapshot. openedConnectionsCount)
1381
-
1382
- // cleanup
1383
- // this cleanup code needs to go and use HTTP1ConnectionProvider's API instead
1384
- // (https://github.com/swift-server/async-http-client/issues/234)
1385
- waiter. promise. fail ( TempError ( ) )
1386
- self . http1ConnectionProvider. release ( connection: connection, closing: true , logger: HTTPClient . loggingDisabled)
1387
- default :
1388
- XCTFail ( " Unexpected action: \( action) " )
1389
- }
1390
- }
1391
-
1392
1222
// MARK: - Shutdown tests
1393
1223
1394
1224
func testShutdownOnPendingAndSuccess( ) {
@@ -1555,79 +1385,3 @@ class ConnectionPoolTests: XCTestCase {
1555
1385
self . http1ConnectionProvider = nil
1556
1386
}
1557
1387
}
1558
-
1559
- class ActiveChannel : Channel , ChannelCore {
1560
- struct NotImplementedError : Error { }
1561
-
1562
- func localAddress0( ) throws -> SocketAddress {
1563
- throw NotImplementedError ( )
1564
- }
1565
-
1566
- func remoteAddress0( ) throws -> SocketAddress {
1567
- throw NotImplementedError ( )
1568
- }
1569
-
1570
- func register0( promise: EventLoopPromise < Void > ? ) {
1571
- promise? . fail ( NotImplementedError ( ) )
1572
- }
1573
-
1574
- func bind0( to: SocketAddress , promise: EventLoopPromise < Void > ? ) {
1575
- promise? . fail ( NotImplementedError ( ) )
1576
- }
1577
-
1578
- func connect0( to: SocketAddress , promise: EventLoopPromise < Void > ? ) {
1579
- promise? . fail ( NotImplementedError ( ) )
1580
- }
1581
-
1582
- func write0( _ data: NIOAny , promise: EventLoopPromise < Void > ? ) {
1583
- promise? . fail ( NotImplementedError ( ) )
1584
- }
1585
-
1586
- func flush0( ) { }
1587
-
1588
- func read0( ) { }
1589
-
1590
- func close0( error: Error , mode: CloseMode , promise: EventLoopPromise < Void > ? ) {
1591
- promise? . succeed ( ( ) )
1592
- }
1593
-
1594
- func triggerUserOutboundEvent0( _ event: Any , promise: EventLoopPromise < Void > ? ) {
1595
- promise? . fail ( NotImplementedError ( ) )
1596
- }
1597
-
1598
- func channelRead0( _: NIOAny ) { }
1599
-
1600
- func errorCaught0( error: Error ) { }
1601
-
1602
- var allocator : ByteBufferAllocator
1603
- var closeFuture : EventLoopFuture < Void >
1604
- var eventLoop : EventLoop
1605
-
1606
- var localAddress : SocketAddress ?
1607
- var remoteAddress : SocketAddress ?
1608
- var parent : Channel ?
1609
- var isWritable : Bool = true
1610
- var isActive : Bool = true
1611
-
1612
- init ( eventLoop: EmbeddedEventLoop ) {
1613
- self . allocator = ByteBufferAllocator ( )
1614
- self . eventLoop = eventLoop
1615
- self . closeFuture = self . eventLoop. makeSucceededFuture ( ( ) )
1616
- }
1617
-
1618
- var _channelCore : ChannelCore {
1619
- return self
1620
- }
1621
-
1622
- var pipeline : ChannelPipeline {
1623
- return ChannelPipeline ( channel: self )
1624
- }
1625
-
1626
- func setOption< Option> ( _ option: Option , value: Option . Value ) -> EventLoopFuture < Void > where Option: ChannelOption {
1627
- preconditionFailure ( " Not implemented " )
1628
- }
1629
-
1630
- func getOption< Option> ( _: Option ) -> EventLoopFuture < Option . Value > where Option: ChannelOption {
1631
- preconditionFailure ( " Not implemented " )
1632
- }
1633
- }
0 commit comments