@@ -36,7 +36,9 @@ class HTTPConnectionPool_HTTP2ConnectionsTests: XCTestCase {
36
36
XCTAssertEqual ( conn1CreatedContext. availableStreams, 100 )
37
37
XCTAssertEqual ( conn1CreatedContext. isIdle, true )
38
38
XCTAssert ( conn1CreatedContext. eventLoop === el1)
39
- XCTAssertEqual ( connections. leaseStreams ( at: conn1Index, count: 1 ) , conn1)
39
+ let ( leasedConn1, leasdConnContext1) = connections. leaseStreams ( at: conn1Index, count: 1 )
40
+ XCTAssertEqual ( leasedConn1, conn1)
41
+ XCTAssertEqual ( leasdConnContext1. wasIdle, true )
40
42
41
43
// eventLoop connection
42
44
XCTAssertTrue ( connections. hasConnectionThatCanOrWillBeAbleToExecuteRequests)
@@ -48,7 +50,10 @@ class HTTPConnectionPool_HTTP2ConnectionsTests: XCTestCase {
48
50
XCTAssertEqual ( conn1CreatedContext. availableStreams, 100 )
49
51
XCTAssertTrue ( conn1CreatedContext. isIdle)
50
52
XCTAssert ( conn2CreatedContext. eventLoop === el2)
51
- XCTAssertEqual ( connections. leaseStreams ( at: conn2Index, count: 1 ) , conn2)
53
+
54
+ let ( leasedConn2, leasdConnContext2) = connections. leaseStreams ( at: conn2Index, count: 1 )
55
+ XCTAssertEqual ( leasedConn2, conn2)
56
+ XCTAssertEqual ( leasdConnContext2. wasIdle, true )
52
57
XCTAssertTrue ( connections. hasConnectionThatCanOrWillBeAbleToExecuteRequests ( for: el2) )
53
58
}
54
59
@@ -184,7 +189,10 @@ class HTTPConnectionPool_HTTP2ConnectionsTests: XCTestCase {
184
189
let conn2ID = connections. createNewConnection ( on: el1)
185
190
let conn2 : HTTPConnectionPool . Connection = . __testOnly_connection( id: conn2ID, eventLoop: el1)
186
191
let ( conn2Index, _) = connections. newHTTP2ConnectionEstablished ( conn2, maxConcurrentStreams: 100 )
187
- XCTAssertEqual ( connections. leaseStreams ( at: conn2Index, count: 1 ) , conn2)
192
+
193
+ let ( leasedConn1, leasdConnContext1) = connections. leaseStreams ( at: conn2Index, count: 1 )
194
+ XCTAssertEqual ( leasedConn1, conn2)
195
+ XCTAssertEqual ( leasdConnContext1. wasIdle, true )
188
196
XCTAssertNil ( connections. closeConnectionIfIdle ( conn2ID) )
189
197
}
190
198
@@ -201,8 +209,11 @@ class HTTPConnectionPool_HTTP2ConnectionsTests: XCTestCase {
201
209
_ = connections. newHTTP2ConnectionEstablished ( conn1, maxConcurrentStreams: 100 )
202
210
203
211
// connection is leased
204
- let lease = connections. leaseStream ( onPreferred: el1)
205
- XCTAssertEqual ( lease, conn1)
212
+ guard let ( leasedConn, leaseContext) = connections. leaseStream ( onPreferred: el1) else {
213
+ return XCTFail ( " lease unexpectedly failed " )
214
+ }
215
+ XCTAssertEqual ( leasedConn, conn1)
216
+ XCTAssertEqual ( leaseContext. wasIdle, true )
206
217
207
218
// timeout arrives minimal to late
208
219
XCTAssertEqual ( connections. closeConnectionIfIdle ( conn1ID) , nil )
@@ -238,7 +249,11 @@ class HTTPConnectionPool_HTTP2ConnectionsTests: XCTestCase {
238
249
_ = connections. newHTTP2ConnectionEstablished ( conn1, maxConcurrentStreams: 100 )
239
250
240
251
// we lease it just before timeout
241
- XCTAssertEqual ( connections. leaseStream ( onRequired: el1) , conn1)
252
+ guard let ( leasedConn, leaseContext) = connections. leaseStream ( onRequired: el1) else {
253
+ return XCTFail ( " lease unexpectedly failed " )
254
+ }
255
+ XCTAssertEqual ( leasedConn, conn1)
256
+ XCTAssertEqual ( leaseContext. wasIdle, true )
242
257
243
258
// timeout arrives minimal to late
244
259
XCTAssertEqual ( connections. closeConnectionIfIdle ( conn1ID) , nil )
@@ -273,10 +288,11 @@ class HTTPConnectionPool_HTTP2ConnectionsTests: XCTestCase {
273
288
XCTAssertEqual ( connections. stats. idleConnections, 4 )
274
289
275
290
// connection is leased
276
- guard let lease = connections. leaseStream ( onPreferred: el1) else {
291
+ guard let ( leasedConn , leaseContext ) = connections. leaseStream ( onPreferred: el1) else {
277
292
return XCTFail ( " Expected to be able to lease a connection " )
278
293
}
279
- XCTAssertEqual ( lease, . __testOnly_connection( id: 0 , eventLoop: el1) )
294
+ XCTAssertEqual ( leasedConn, . __testOnly_connection( id: 0 , eventLoop: el1) )
295
+ XCTAssertEqual ( leaseContext. wasIdle, true )
280
296
281
297
XCTAssertEqual ( connections. stats. backingOffConnections, 0 )
282
298
XCTAssertEqual ( connections. stats. leasedStreams, 1 )
@@ -292,7 +308,7 @@ class HTTPConnectionPool_HTTP2ConnectionsTests: XCTestCase {
292
308
293
309
let context = connections. shutdown ( )
294
310
XCTAssertEqual ( context. close. count, 3 )
295
- XCTAssertEqual ( context. cancel, [ lease ] )
311
+ XCTAssertEqual ( context. cancel, [ leasedConn ] )
296
312
XCTAssertEqual ( context. connectBackoff, [ backingOffID] )
297
313
298
314
XCTAssertEqual ( connections. stats. idleConnections, 0 )
@@ -302,8 +318,8 @@ class HTTPConnectionPool_HTTP2ConnectionsTests: XCTestCase {
302
318
XCTAssertEqual ( connections. stats. startingConnections, 1 )
303
319
XCTAssertFalse ( connections. isEmpty)
304
320
305
- let ( releaseIndex, _) = connections. releaseStream ( lease . id)
306
- XCTAssertEqual ( connections. closeConnection ( at: releaseIndex) , lease )
321
+ let ( releaseIndex, _) = connections. releaseStream ( leasedConn . id)
322
+ XCTAssertEqual ( connections. closeConnection ( at: releaseIndex) , leasedConn )
307
323
XCTAssertFalse ( connections. isEmpty)
308
324
309
325
guard let ( failIndex, _) = connections. failConnection ( startingID) else {
@@ -322,15 +338,22 @@ class HTTPConnectionPool_HTTP2ConnectionsTests: XCTestCase {
322
338
let conn1 : HTTPConnectionPool . Connection = . __testOnly_connection( id: conn1ID, eventLoop: el1)
323
339
let ( conn1Index, conn1CreatedContext) = connections. newHTTP2ConnectionEstablished ( conn1, maxConcurrentStreams: 100 )
324
340
XCTAssertEqual ( conn1CreatedContext. availableStreams, 100 )
325
- XCTAssertEqual ( connections. leaseStreams ( at: conn1Index, count: 100 ) , conn1)
341
+ let ( leasedConn1, leasdConnContext1) = connections. leaseStreams ( at: conn1Index, count: 100 )
342
+ XCTAssertEqual ( leasedConn1, conn1)
343
+ XCTAssertEqual ( leasdConnContext1. wasIdle, true )
326
344
327
345
XCTAssertNil ( connections. leaseStream ( onRequired: el1) , " should not be able to lease stream because they are all already leased " )
328
346
329
347
let ( _, releaseContext) = connections. releaseStream ( conn1ID)
330
348
XCTAssertFalse ( releaseContext. isIdle)
331
349
XCTAssertEqual ( releaseContext. availableStreams, 1 )
332
350
333
- XCTAssertEqual ( connections. leaseStream ( onRequired: el1) , conn1)
351
+ guard let ( leasedConn, leaseContext) = connections. leaseStream ( onRequired: el1) else {
352
+ return XCTFail ( " lease unexpectedly failed " )
353
+ }
354
+ XCTAssertEqual ( leasedConn, conn1)
355
+ XCTAssertEqual ( leaseContext. wasIdle, false )
356
+
334
357
XCTAssertNil ( connections. leaseStream ( onRequired: el1) , " should not be able to lease stream because they are all already leased " )
335
358
}
336
359
@@ -343,7 +366,10 @@ class HTTPConnectionPool_HTTP2ConnectionsTests: XCTestCase {
343
366
let conn1 : HTTPConnectionPool . Connection = . __testOnly_connection( id: conn1ID, eventLoop: el1)
344
367
let ( conn1Index, conn1CreatedContext) = connections. newHTTP2ConnectionEstablished ( conn1, maxConcurrentStreams: 10 )
345
368
XCTAssertEqual ( conn1CreatedContext. availableStreams, 10 )
346
- XCTAssertEqual ( connections. leaseStreams ( at: conn1Index, count: 2 ) , conn1)
369
+
370
+ let ( leasedConn1, leasdConnContext1) = connections. leaseStreams ( at: conn1Index, count: 2 )
371
+ XCTAssertEqual ( leasedConn1, conn1)
372
+ XCTAssertEqual ( leasdConnContext1. wasIdle, true )
347
373
348
374
XCTAssertTrue ( connections. goAwayReceived ( conn1ID) . eventLoop === el1)
349
375
@@ -421,7 +447,10 @@ class HTTPConnectionPool_HTTP2ConnectionsTests: XCTestCase {
421
447
let conn1 : HTTPConnectionPool . Connection = . __testOnly_connection( id: conn1ID, eventLoop: el1)
422
448
let ( conn1Index, conn1CreatedContext) = connections. newHTTP2ConnectionEstablished ( conn1, maxConcurrentStreams: 1 )
423
449
XCTAssertEqual ( conn1CreatedContext. availableStreams, 1 )
424
- XCTAssertEqual ( connections. leaseStreams ( at: conn1Index, count: 1 ) , conn1)
450
+
451
+ let ( leasedConn1, leasdConnContext1) = connections. leaseStreams ( at: conn1Index, count: 1 )
452
+ XCTAssertEqual ( leasedConn1, conn1)
453
+ XCTAssertEqual ( leasdConnContext1. wasIdle, true )
425
454
426
455
XCTAssertNil ( connections. leaseStream ( onRequired: el1) , " all streams are in use " )
427
456
@@ -430,7 +459,11 @@ class HTTPConnectionPool_HTTP2ConnectionsTests: XCTestCase {
430
459
XCTAssertTrue ( newSettingsContext1. eventLoop === el1)
431
460
XCTAssertFalse ( newSettingsContext1. isIdle)
432
461
433
- XCTAssertEqual ( connections. leaseStream ( onRequired: el1) , conn1)
462
+ guard let ( leasedConn2, leaseContext2) = connections. leaseStream ( onRequired: el1) else {
463
+ return XCTFail ( " lease unexpectedly failed " )
464
+ }
465
+ XCTAssertEqual ( leasedConn2, conn1)
466
+ XCTAssertEqual ( leaseContext2. wasIdle, false )
434
467
435
468
let ( _, newSettingsContext2) = connections. newHTTP2MaxConcurrentStreamsReceived ( conn1ID, newMaxStreams: 1 )
436
469
XCTAssertEqual ( newSettingsContext2. availableStreams, 0 )
@@ -449,7 +482,11 @@ class HTTPConnectionPool_HTTP2ConnectionsTests: XCTestCase {
449
482
XCTAssertTrue ( release2Context. isIdle)
450
483
XCTAssertEqual ( release2Context. availableStreams, 1 )
451
484
452
- XCTAssertEqual ( connections. leaseStream ( onRequired: el1) , conn1)
485
+ guard let ( leasedConn3, leaseContext3) = connections. leaseStream ( onRequired: el1) else {
486
+ return XCTFail ( " lease unexpectedly failed " )
487
+ }
488
+ XCTAssertEqual ( leasedConn3, conn1)
489
+ XCTAssertEqual ( leaseContext3. wasIdle, true )
453
490
}
454
491
455
492
func testLeaseOnPreferredEventLoopWithoutAnyAvailable( ) {
@@ -461,7 +498,9 @@ class HTTPConnectionPool_HTTP2ConnectionsTests: XCTestCase {
461
498
let conn1 : HTTPConnectionPool . Connection = . __testOnly_connection( id: conn1ID, eventLoop: el1)
462
499
let ( conn1Index, conn1CreatedContext) = connections. newHTTP2ConnectionEstablished ( conn1, maxConcurrentStreams: 1 )
463
500
XCTAssertEqual ( conn1CreatedContext. availableStreams, 1 )
464
- XCTAssertEqual ( connections. leaseStreams ( at: conn1Index, count: 1 ) , conn1)
501
+ let ( leasedConn1, leasdConnContext1) = connections. leaseStreams ( at: conn1Index, count: 1 )
502
+ XCTAssertEqual ( leasedConn1, conn1)
503
+ XCTAssertEqual ( leasdConnContext1. wasIdle, true )
465
504
466
505
XCTAssertNil ( connections. leaseStream ( onPreferred: el1) , " all streams are in use " )
467
506
}
@@ -494,7 +533,11 @@ class HTTPConnectionPool_HTTP2ConnectionsTests: XCTestCase {
494
533
let conn1 : HTTPConnectionPool . Connection = . __testOnly_connection( id: conn1ID, eventLoop: el1)
495
534
let ( conn1Index, conn1CreatedContext) = connections. newHTTP2ConnectionEstablished ( conn1, maxConcurrentStreams: 100 )
496
535
XCTAssertEqual ( conn1CreatedContext. availableStreams, 100 )
497
- XCTAssertEqual ( connections. leaseStreams ( at: conn1Index, count: 2 ) , conn1)
536
+
537
+ let ( leasedConn1, leasdConnContext1) = connections. leaseStreams ( at: conn1Index, count: 2 )
538
+ XCTAssertEqual ( leasedConn1, conn1)
539
+ XCTAssertEqual ( leasdConnContext1. wasIdle, true )
540
+
498
541
XCTAssertEqual (
499
542
connections. stats,
500
543
. init(
0 commit comments