From dae67c1225febecb5f31f3ebc690ea17fc3daf66 Mon Sep 17 00:00:00 2001 From: Artem Redkin Date: Fri, 12 Jun 2020 21:31:11 +0100 Subject: [PATCH 1/5] add a test to make sure that future is bound to delegate el --- .../AsyncHTTPClientTests/HTTPClientTests.swift | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/Tests/AsyncHTTPClientTests/HTTPClientTests.swift b/Tests/AsyncHTTPClientTests/HTTPClientTests.swift index 0e4e25d6e..6ce55a523 100644 --- a/Tests/AsyncHTTPClientTests/HTTPClientTests.swift +++ b/Tests/AsyncHTTPClientTests/HTTPClientTests.swift @@ -2005,4 +2005,22 @@ class HTTPClientTests: XCTestCase { self.defaultClient = nil // so it doesn't get shut down again. } + + func testTaskPromiseBoundToEL() throws { + let elg = getDefaultEventLoopGroup(numberOfThreads: 2) + let el = elg.next() + + let client = HTTPClient(eventLoopGroupProvider: .shared(elg)) + + defer { + XCTAssertNoThrow(try client.syncShutdown()) + XCTAssertNoThrow(try elg.syncShutdownGracefully()) + } + + let request = try HTTPClient.Request(url: self.defaultHTTPBinURLPrefix + "/get") + let delegate = ResponseAccumulator(request: request) + let task = client.execute(request: request, delegate: delegate, eventLoop: .delegate(on: el)) + XCTAssertTrue(task.futureResult.eventLoop === el) + XCTAssertNoThrow(try task.wait()) + } } From 80c96e2352934a01a0d2a776e3ee1099765bc46f Mon Sep 17 00:00:00 2001 From: Artem Redkin Date: Fri, 12 Jun 2020 21:36:38 +0100 Subject: [PATCH 2/5] linux test --- Tests/AsyncHTTPClientTests/HTTPClientTests+XCTest.swift | 1 + 1 file changed, 1 insertion(+) diff --git a/Tests/AsyncHTTPClientTests/HTTPClientTests+XCTest.swift b/Tests/AsyncHTTPClientTests/HTTPClientTests+XCTest.swift index 7d61f805e..99bd04529 100644 --- a/Tests/AsyncHTTPClientTests/HTTPClientTests+XCTest.swift +++ b/Tests/AsyncHTTPClientTests/HTTPClientTests+XCTest.swift @@ -109,6 +109,7 @@ extension HTTPClientTests { ("testNothingIsLoggedAtInfoOrHigher", testNothingIsLoggedAtInfoOrHigher), ("testAllMethodsLog", testAllMethodsLog), ("testClosingIdleConnectionsInPoolLogsInTheBackground", testClosingIdleConnectionsInPoolLogsInTheBackground), + ("testTaskPromiseBoundToEL", testTaskPromiseBoundToEL), ] } } From 3ad3dc6ab09da61ac585f3d9a94cb603f8a70aa1 Mon Sep 17 00:00:00 2001 From: Artem Redkin Date: Sat, 13 Jun 2020 11:42:06 +0100 Subject: [PATCH 3/5] review fix --- .../HTTPClientInternalTests+XCTest.swift | 1 + .../HTTPClientInternalTests.swift | 12 ++++++++++++ .../HTTPClientTests+XCTest.swift | 1 - .../AsyncHTTPClientTests/HTTPClientTests.swift | 18 ------------------ 4 files changed, 13 insertions(+), 19 deletions(-) diff --git a/Tests/AsyncHTTPClientTests/HTTPClientInternalTests+XCTest.swift b/Tests/AsyncHTTPClientTests/HTTPClientInternalTests+XCTest.swift index c448317b3..8122df7a2 100644 --- a/Tests/AsyncHTTPClientTests/HTTPClientInternalTests+XCTest.swift +++ b/Tests/AsyncHTTPClientTests/HTTPClientInternalTests+XCTest.swift @@ -41,6 +41,7 @@ extension HTTPClientInternalTests { ("testUncleanCloseThrows", testUncleanCloseThrows), ("testUploadStreamingIsCalledOnTaskEL", testUploadStreamingIsCalledOnTaskEL), ("testWeCanActuallyExactlySetTheEventLoops", testWeCanActuallyExactlySetTheEventLoops), + ("testTaskPromiseBoundToEL", testTaskPromiseBoundToEL), ] } } diff --git a/Tests/AsyncHTTPClientTests/HTTPClientInternalTests.swift b/Tests/AsyncHTTPClientTests/HTTPClientInternalTests.swift index 77582e3cc..64b8a40fe 100644 --- a/Tests/AsyncHTTPClientTests/HTTPClientInternalTests.swift +++ b/Tests/AsyncHTTPClientTests/HTTPClientInternalTests.swift @@ -891,4 +891,16 @@ class HTTPClientInternalTests: XCTestCase { XCTAssert(el1 === response.eventLoop) XCTAssertNoThrow(try response.wait()) } + + func testTaskPromiseBoundToEL() throws { + let elg = getDefaultEventLoopGroup(numberOfThreads: 2) + let el = elg.next() + + defer { + XCTAssertNoThrow(try elg.syncShutdownGracefully()) + } + + let task: Task = .init(eventLoop: el, logger: HTTPClient.loggingDisabled) + XCTAssertTrue(task.futureResult.eventLoop === el) + } } diff --git a/Tests/AsyncHTTPClientTests/HTTPClientTests+XCTest.swift b/Tests/AsyncHTTPClientTests/HTTPClientTests+XCTest.swift index 99bd04529..7d61f805e 100644 --- a/Tests/AsyncHTTPClientTests/HTTPClientTests+XCTest.swift +++ b/Tests/AsyncHTTPClientTests/HTTPClientTests+XCTest.swift @@ -109,7 +109,6 @@ extension HTTPClientTests { ("testNothingIsLoggedAtInfoOrHigher", testNothingIsLoggedAtInfoOrHigher), ("testAllMethodsLog", testAllMethodsLog), ("testClosingIdleConnectionsInPoolLogsInTheBackground", testClosingIdleConnectionsInPoolLogsInTheBackground), - ("testTaskPromiseBoundToEL", testTaskPromiseBoundToEL), ] } } diff --git a/Tests/AsyncHTTPClientTests/HTTPClientTests.swift b/Tests/AsyncHTTPClientTests/HTTPClientTests.swift index 6ce55a523..0e4e25d6e 100644 --- a/Tests/AsyncHTTPClientTests/HTTPClientTests.swift +++ b/Tests/AsyncHTTPClientTests/HTTPClientTests.swift @@ -2005,22 +2005,4 @@ class HTTPClientTests: XCTestCase { self.defaultClient = nil // so it doesn't get shut down again. } - - func testTaskPromiseBoundToEL() throws { - let elg = getDefaultEventLoopGroup(numberOfThreads: 2) - let el = elg.next() - - let client = HTTPClient(eventLoopGroupProvider: .shared(elg)) - - defer { - XCTAssertNoThrow(try client.syncShutdown()) - XCTAssertNoThrow(try elg.syncShutdownGracefully()) - } - - let request = try HTTPClient.Request(url: self.defaultHTTPBinURLPrefix + "/get") - let delegate = ResponseAccumulator(request: request) - let task = client.execute(request: request, delegate: delegate, eventLoop: .delegate(on: el)) - XCTAssertTrue(task.futureResult.eventLoop === el) - XCTAssertNoThrow(try task.wait()) - } } From 5c188c0c6c53ced7025e36f01f87e8f2726f0ff4 Mon Sep 17 00:00:00 2001 From: Artem Redkin Date: Sat, 13 Jun 2020 11:43:07 +0100 Subject: [PATCH 4/5] Revert "review fix" This reverts commit 3ad3dc6ab09da61ac585f3d9a94cb603f8a70aa1. --- .../HTTPClientInternalTests+XCTest.swift | 1 - .../HTTPClientInternalTests.swift | 12 ------------ .../HTTPClientTests+XCTest.swift | 1 + .../AsyncHTTPClientTests/HTTPClientTests.swift | 18 ++++++++++++++++++ 4 files changed, 19 insertions(+), 13 deletions(-) diff --git a/Tests/AsyncHTTPClientTests/HTTPClientInternalTests+XCTest.swift b/Tests/AsyncHTTPClientTests/HTTPClientInternalTests+XCTest.swift index 8122df7a2..c448317b3 100644 --- a/Tests/AsyncHTTPClientTests/HTTPClientInternalTests+XCTest.swift +++ b/Tests/AsyncHTTPClientTests/HTTPClientInternalTests+XCTest.swift @@ -41,7 +41,6 @@ extension HTTPClientInternalTests { ("testUncleanCloseThrows", testUncleanCloseThrows), ("testUploadStreamingIsCalledOnTaskEL", testUploadStreamingIsCalledOnTaskEL), ("testWeCanActuallyExactlySetTheEventLoops", testWeCanActuallyExactlySetTheEventLoops), - ("testTaskPromiseBoundToEL", testTaskPromiseBoundToEL), ] } } diff --git a/Tests/AsyncHTTPClientTests/HTTPClientInternalTests.swift b/Tests/AsyncHTTPClientTests/HTTPClientInternalTests.swift index 64b8a40fe..77582e3cc 100644 --- a/Tests/AsyncHTTPClientTests/HTTPClientInternalTests.swift +++ b/Tests/AsyncHTTPClientTests/HTTPClientInternalTests.swift @@ -891,16 +891,4 @@ class HTTPClientInternalTests: XCTestCase { XCTAssert(el1 === response.eventLoop) XCTAssertNoThrow(try response.wait()) } - - func testTaskPromiseBoundToEL() throws { - let elg = getDefaultEventLoopGroup(numberOfThreads: 2) - let el = elg.next() - - defer { - XCTAssertNoThrow(try elg.syncShutdownGracefully()) - } - - let task: Task = .init(eventLoop: el, logger: HTTPClient.loggingDisabled) - XCTAssertTrue(task.futureResult.eventLoop === el) - } } diff --git a/Tests/AsyncHTTPClientTests/HTTPClientTests+XCTest.swift b/Tests/AsyncHTTPClientTests/HTTPClientTests+XCTest.swift index 7d61f805e..99bd04529 100644 --- a/Tests/AsyncHTTPClientTests/HTTPClientTests+XCTest.swift +++ b/Tests/AsyncHTTPClientTests/HTTPClientTests+XCTest.swift @@ -109,6 +109,7 @@ extension HTTPClientTests { ("testNothingIsLoggedAtInfoOrHigher", testNothingIsLoggedAtInfoOrHigher), ("testAllMethodsLog", testAllMethodsLog), ("testClosingIdleConnectionsInPoolLogsInTheBackground", testClosingIdleConnectionsInPoolLogsInTheBackground), + ("testTaskPromiseBoundToEL", testTaskPromiseBoundToEL), ] } } diff --git a/Tests/AsyncHTTPClientTests/HTTPClientTests.swift b/Tests/AsyncHTTPClientTests/HTTPClientTests.swift index 0e4e25d6e..6ce55a523 100644 --- a/Tests/AsyncHTTPClientTests/HTTPClientTests.swift +++ b/Tests/AsyncHTTPClientTests/HTTPClientTests.swift @@ -2005,4 +2005,22 @@ class HTTPClientTests: XCTestCase { self.defaultClient = nil // so it doesn't get shut down again. } + + func testTaskPromiseBoundToEL() throws { + let elg = getDefaultEventLoopGroup(numberOfThreads: 2) + let el = elg.next() + + let client = HTTPClient(eventLoopGroupProvider: .shared(elg)) + + defer { + XCTAssertNoThrow(try client.syncShutdown()) + XCTAssertNoThrow(try elg.syncShutdownGracefully()) + } + + let request = try HTTPClient.Request(url: self.defaultHTTPBinURLPrefix + "/get") + let delegate = ResponseAccumulator(request: request) + let task = client.execute(request: request, delegate: delegate, eventLoop: .delegate(on: el)) + XCTAssertTrue(task.futureResult.eventLoop === el) + XCTAssertNoThrow(try task.wait()) + } } From fce0e1722fad9aa7cbfe2c72c3c30d4264566cc1 Mon Sep 17 00:00:00 2001 From: Artem Redkin Date: Sat, 13 Jun 2020 11:46:24 +0100 Subject: [PATCH 5/5] review fix --- .../HTTPClientInternalTests+XCTest.swift | 1 + .../HTTPClientInternalTests.swift | 21 +++++++++++++++++++ .../HTTPClientTests+XCTest.swift | 1 - .../HTTPClientTests.swift | 18 ---------------- 4 files changed, 22 insertions(+), 19 deletions(-) diff --git a/Tests/AsyncHTTPClientTests/HTTPClientInternalTests+XCTest.swift b/Tests/AsyncHTTPClientTests/HTTPClientInternalTests+XCTest.swift index c448317b3..8122df7a2 100644 --- a/Tests/AsyncHTTPClientTests/HTTPClientInternalTests+XCTest.swift +++ b/Tests/AsyncHTTPClientTests/HTTPClientInternalTests+XCTest.swift @@ -41,6 +41,7 @@ extension HTTPClientInternalTests { ("testUncleanCloseThrows", testUncleanCloseThrows), ("testUploadStreamingIsCalledOnTaskEL", testUploadStreamingIsCalledOnTaskEL), ("testWeCanActuallyExactlySetTheEventLoops", testWeCanActuallyExactlySetTheEventLoops), + ("testTaskPromiseBoundToEL", testTaskPromiseBoundToEL), ] } } diff --git a/Tests/AsyncHTTPClientTests/HTTPClientInternalTests.swift b/Tests/AsyncHTTPClientTests/HTTPClientInternalTests.swift index 77582e3cc..c3cd1241e 100644 --- a/Tests/AsyncHTTPClientTests/HTTPClientInternalTests.swift +++ b/Tests/AsyncHTTPClientTests/HTTPClientInternalTests.swift @@ -891,4 +891,25 @@ class HTTPClientInternalTests: XCTestCase { XCTAssert(el1 === response.eventLoop) XCTAssertNoThrow(try response.wait()) } + + func testTaskPromiseBoundToEL() throws { + let elg = getDefaultEventLoopGroup(numberOfThreads: 2) + let el1 = elg.next() + let el2 = elg.next() + + let httpBin = HTTPBin() + let client = HTTPClient(eventLoopGroupProvider: .shared(elg)) + + defer { + XCTAssertNoThrow(try client.syncShutdown()) + XCTAssertNoThrow(try elg.syncShutdownGracefully()) + XCTAssertNoThrow(try httpBin.shutdown()) + } + + let request = try HTTPClient.Request(url: "http://localhost:\(httpBin.port)//get") + let delegate = ResponseAccumulator(request: request) + let task = client.execute(request: request, delegate: delegate, eventLoop: .init(.testOnly_exact(channelOn: el1, delegateOn: el2))) + XCTAssertTrue(task.futureResult.eventLoop === el2) + XCTAssertNoThrow(try task.wait()) + } } diff --git a/Tests/AsyncHTTPClientTests/HTTPClientTests+XCTest.swift b/Tests/AsyncHTTPClientTests/HTTPClientTests+XCTest.swift index 99bd04529..7d61f805e 100644 --- a/Tests/AsyncHTTPClientTests/HTTPClientTests+XCTest.swift +++ b/Tests/AsyncHTTPClientTests/HTTPClientTests+XCTest.swift @@ -109,7 +109,6 @@ extension HTTPClientTests { ("testNothingIsLoggedAtInfoOrHigher", testNothingIsLoggedAtInfoOrHigher), ("testAllMethodsLog", testAllMethodsLog), ("testClosingIdleConnectionsInPoolLogsInTheBackground", testClosingIdleConnectionsInPoolLogsInTheBackground), - ("testTaskPromiseBoundToEL", testTaskPromiseBoundToEL), ] } } diff --git a/Tests/AsyncHTTPClientTests/HTTPClientTests.swift b/Tests/AsyncHTTPClientTests/HTTPClientTests.swift index 6ce55a523..0e4e25d6e 100644 --- a/Tests/AsyncHTTPClientTests/HTTPClientTests.swift +++ b/Tests/AsyncHTTPClientTests/HTTPClientTests.swift @@ -2005,22 +2005,4 @@ class HTTPClientTests: XCTestCase { self.defaultClient = nil // so it doesn't get shut down again. } - - func testTaskPromiseBoundToEL() throws { - let elg = getDefaultEventLoopGroup(numberOfThreads: 2) - let el = elg.next() - - let client = HTTPClient(eventLoopGroupProvider: .shared(elg)) - - defer { - XCTAssertNoThrow(try client.syncShutdown()) - XCTAssertNoThrow(try elg.syncShutdownGracefully()) - } - - let request = try HTTPClient.Request(url: self.defaultHTTPBinURLPrefix + "/get") - let delegate = ResponseAccumulator(request: request) - let task = client.execute(request: request, delegate: delegate, eventLoop: .delegate(on: el)) - XCTAssertTrue(task.futureResult.eventLoop === el) - XCTAssertNoThrow(try task.wait()) - } }