@@ -261,19 +261,19 @@ class HTTPConnectionPool_HTTP2StateMachineTests: XCTestCase {
261
261
XCTAssertEqual ( closeAction. connection, . cleanupConnections( . init( ) , isShutdown: . yes( unclean: true ) ) )
262
262
XCTAssertEqual ( closeAction. request, . none)
263
263
}
264
-
264
+
265
265
func testHTTP1ToHTTP2MigrationAndShutdownIfFirstConnectionIsHTTP1( ) {
266
266
let elg = EmbeddedEventLoopGroup ( loops: 4 )
267
267
let el1 = elg. next ( )
268
-
268
+
269
269
let idGenerator = HTTPConnectionPool . Connection. ID. Generator ( )
270
270
var http1State = HTTPConnectionPool . HTTP1StateMachine ( idGenerator: idGenerator, maximumConcurrentConnections: 8 )
271
-
271
+
272
272
let mockRequest1 = MockHTTPRequest ( eventLoop: el1)
273
273
let request1 = HTTPConnectionPool . Request ( mockRequest1)
274
274
let mockRequest2 = MockHTTPRequest ( eventLoop: el1)
275
275
let request2 = HTTPConnectionPool . Request ( mockRequest2)
276
-
276
+
277
277
let executeAction1 = http1State. executeRequest ( request1)
278
278
XCTAssertEqual ( executeAction1. request, . scheduleRequestTimeout( for: request1, on: el1) )
279
279
guard case . createConnection( let conn1ID, _) = executeAction1. connection else {
@@ -284,44 +284,42 @@ class HTTPConnectionPool_HTTP2StateMachineTests: XCTestCase {
284
284
guard case . createConnection( let conn2ID, _) = executeAction2. connection else {
285
285
return XCTFail ( " unexpected connection action \( executeAction2. connection) " )
286
286
}
287
-
287
+
288
288
// first connection is a HTTP1 connection
289
289
let conn1 : HTTPConnectionPool . Connection = . __testOnly_connection( id: conn1ID, eventLoop: el1)
290
290
let conn1Action = http1State. newHTTP1ConnectionEstablished ( conn1)
291
291
XCTAssertEqual ( conn1Action. connection, . none)
292
292
XCTAssertEqual ( conn1Action. request, . executeRequest( request1, conn1, cancelTimeout: true ) )
293
293
294
-
295
294
// second connection is a HTTP2 connection and we need to migrate
296
295
let conn2 : HTTPConnectionPool . Connection = . __testOnly_connection( id: conn2ID, eventLoop: el1)
297
296
var http2State = HTTPConnectionPool . HTTP2StateMachine ( idGenerator: idGenerator)
298
-
297
+
299
298
let migrationAction = http2State. migrateConnectionsFromHTTP1 (
300
299
connections: http1State. connections,
301
300
requests: http1State. requests
302
301
)
303
302
XCTAssertEqual ( migrationAction, . none)
304
-
303
+
305
304
let http2ConnectAction = http2State. newHTTP2ConnectionEstablished ( conn2, maxConcurrentStreams: 100 )
306
305
XCTAssertEqual ( http2ConnectAction. connection, . none)
307
306
guard case . executeRequestsAndCancelTimeouts( [ request2] , conn2) = http2ConnectAction. request else {
308
307
return XCTFail ( " Unexpected request action \( http2ConnectAction. request) " )
309
308
}
310
-
309
+
311
310
// second request is done first
312
311
let closeAction = http2State. http2ConnectionStreamClosed ( conn2ID)
313
312
XCTAssertEqual ( closeAction. request, . none)
314
313
XCTAssertEqual ( closeAction. connection, . scheduleTimeoutTimer( conn2ID, on: el1) )
315
-
316
-
314
+
317
315
let shutdownAction = http2State. shutdown ( )
318
316
XCTAssertEqual ( shutdownAction. request, . none)
319
317
XCTAssertEqual ( shutdownAction. connection, . cleanupConnections( . init(
320
318
close: [ conn2] ,
321
319
cancel: [ ] ,
322
320
connectBackoff: [ ]
323
321
) , isShutdown: . no) )
324
-
322
+
325
323
let releaseAction = http2State. http1ConnectionReleased ( conn1ID)
326
324
XCTAssertEqual ( releaseAction. request, . none)
327
325
XCTAssertEqual ( releaseAction. connection, . closeConnection( conn1, isShutdown: . yes( unclean: true ) ) )
0 commit comments