@@ -90,7 +90,7 @@ final class AsyncAwaitEndToEndTests: XCTestCase {
9090 let logger = Logger ( label: " HTTPClient " , factory: StreamLogHandler . standardOutput ( label: ) )
9191 var request = HTTPClientRequest ( url: " https://localhost: \( bin. port) / " )
9292 request. method = . POST
93- request. body = . byteBuffer ( ByteBuffer ( string: " 1234 " ) )
93+ request. body = . bytes ( ByteBuffer ( string: " 1234 " ) )
9494
9595 guard let response = await XCTAssertNoThrowWithResult (
9696 try await client. execute ( request, deadline: . now( ) + . seconds( 10 ) , logger: logger)
@@ -115,7 +115,7 @@ final class AsyncAwaitEndToEndTests: XCTestCase {
115115 let logger = Logger ( label: " HTTPClient " , factory: StreamLogHandler . standardOutput ( label: ) )
116116 var request = HTTPClientRequest ( url: " https://localhost: \( bin. port) / " )
117117 request. method = . POST
118- request. body = . bytes( length : nil , AnySequence ( " 1234 " . utf8) )
118+ request. body = . bytes( AnySequence ( " 1234 " . utf8) , length : . unknown )
119119
120120 guard let response = await XCTAssertNoThrowWithResult (
121121 try await client. execute ( request, deadline: . now( ) + . seconds( 10 ) , logger: logger)
@@ -140,7 +140,7 @@ final class AsyncAwaitEndToEndTests: XCTestCase {
140140 let logger = Logger ( label: " HTTPClient " , factory: StreamLogHandler . standardOutput ( label: ) )
141141 var request = HTTPClientRequest ( url: " https://localhost: \( bin. port) / " )
142142 request. method = . POST
143- request. body = . bytes( length : nil , AnyCollection ( " 1234 " . utf8) )
143+ request. body = . bytes( AnyCollection ( " 1234 " . utf8) , length : . unknown )
144144
145145 guard let response = await XCTAssertNoThrowWithResult (
146146 try await client. execute ( request, deadline: . now( ) + . seconds( 10 ) , logger: logger)
@@ -190,11 +190,11 @@ final class AsyncAwaitEndToEndTests: XCTestCase {
190190 let logger = Logger ( label: " HTTPClient " , factory: StreamLogHandler . standardOutput ( label: ) )
191191 var request = HTTPClientRequest ( url: " https://localhost: \( bin. port) / " )
192192 request. method = . POST
193- request. body = . stream( length : nil , [
193+ request. body = . stream( [
194194 ByteBuffer ( string: " 1 " ) ,
195195 ByteBuffer ( string: " 2 " ) ,
196196 ByteBuffer ( string: " 34 " ) ,
197- ] . asAsyncSequence ( ) )
197+ ] . asAsyncSequence ( ) , length : . unknown )
198198
199199 guard let response = await XCTAssertNoThrowWithResult (
200200 try await client. execute ( request, deadline: . now( ) + . seconds( 10 ) , logger: logger)
@@ -219,7 +219,7 @@ final class AsyncAwaitEndToEndTests: XCTestCase {
219219 let logger = Logger ( label: " HTTPClient " , factory: StreamLogHandler . standardOutput ( label: ) )
220220 var request = HTTPClientRequest ( url: " https://localhost: \( bin. port) / " )
221221 request. method = . POST
222- request. body = . stream( length : nil , " 1234 " . utf8. asAsyncSequence ( ) )
222+ request. body = . stream( " 1234 " . utf8. asAsyncSequence ( ) , length : . unknown )
223223
224224 guard let response = await XCTAssertNoThrowWithResult (
225225 try await client. execute ( request, deadline: . now( ) + . seconds( 10 ) , logger: logger)
@@ -245,7 +245,7 @@ final class AsyncAwaitEndToEndTests: XCTestCase {
245245 var request = HTTPClientRequest ( url: " https://localhost: \( bin. port) / " )
246246 request. method = . POST
247247 let streamWriter = AsyncSequenceWriter < ByteBuffer > ( )
248- request. body = . stream( length: nil , streamWriter )
248+ request. body = . stream( streamWriter , length: . unknown )
249249
250250 guard let response = await XCTAssertNoThrowWithResult (
251251 try await client. execute ( request, deadline: . now( ) + . seconds( 10 ) , logger: logger)
@@ -257,7 +257,7 @@ final class AsyncAwaitEndToEndTests: XCTestCase {
257257 ByteBuffer ( string: " 2 " ) ,
258258 ByteBuffer ( string: " 34 " ) ,
259259 ]
260- let bodyIterator = response. body. makeAsyncIterator ( )
260+ var bodyIterator = response. body. makeAsyncIterator ( )
261261 for expectedFragment in fragments {
262262 streamWriter. write ( expectedFragment)
263263 guard let actualFragment = await XCTAssertNoThrowWithResult (
@@ -287,7 +287,7 @@ final class AsyncAwaitEndToEndTests: XCTestCase {
287287 var request = HTTPClientRequest ( url: " https://localhost: \( bin. port) / " )
288288 request. method = . POST
289289 let streamWriter = AsyncSequenceWriter < ByteBuffer > ( )
290- request. body = . stream( length: nil , streamWriter )
290+ request. body = . stream( streamWriter , length: . unknown )
291291
292292 guard let response = await XCTAssertNoThrowWithResult (
293293 try await client. execute ( request, deadline: . now( ) + . seconds( 10 ) , logger: logger)
@@ -300,7 +300,7 @@ final class AsyncAwaitEndToEndTests: XCTestCase {
300300 ByteBuffer ( string: String ( repeating: " c " , count: 4000 ) ) ,
301301 ByteBuffer ( string: String ( repeating: " d " , count: 4000 ) ) ,
302302 ]
303- let bodyIterator = response. body. makeAsyncIterator ( )
303+ var bodyIterator = response. body. makeAsyncIterator ( )
304304 for expectedFragment in fragments {
305305 streamWriter. write ( expectedFragment)
306306 guard let actualFragment = await XCTAssertNoThrowWithResult (
@@ -330,7 +330,7 @@ final class AsyncAwaitEndToEndTests: XCTestCase {
330330 var request = HTTPClientRequest ( url: " http://localhost: \( bin. port) /offline " )
331331 request. method = . POST
332332 let streamWriter = AsyncSequenceWriter < ByteBuffer > ( )
333- request. body = . stream( length: nil , streamWriter )
333+ request. body = . stream( streamWriter , length: . unknown )
334334
335335 let task = Task < HTTPClientResponse , Error > { [ request] in
336336 try await client. execute ( request, deadline: . now( ) + . seconds( 2 ) , logger: logger)
@@ -357,8 +357,12 @@ final class AsyncAwaitEndToEndTests: XCTestCase {
357357 let task = Task < HTTPClientResponse , Error > { [ request] in
358358 try await client. execute ( request, deadline: . now( ) + . milliseconds( 100 ) , logger: logger)
359359 }
360- await XCTAssertThrowsError ( try await task. value) {
361- XCTAssertEqual ( $0 as? HTTPClientError , HTTPClientError . deadlineExceeded)
360+ await XCTAssertThrowsError ( try await task. value) { error in
361+ guard let error = error as? HTTPClientError else {
362+ return XCTFail ( " unexpected error \( error) " )
363+ }
364+ // a race between deadline and connect timer can result in either error
365+ XCTAssertTrue ( [ . deadlineExceeded, . connectTimeout] . contains ( error) )
362366 }
363367 }
364368 #endif
@@ -378,8 +382,12 @@ final class AsyncAwaitEndToEndTests: XCTestCase {
378382 let task = Task < HTTPClientResponse , Error > { [ request] in
379383 try await client. execute ( request, deadline: . now( ) , logger: logger)
380384 }
381- await XCTAssertThrowsError ( try await task. value) {
382- XCTAssertEqual ( $0 as? HTTPClientError , HTTPClientError . deadlineExceeded)
385+ await XCTAssertThrowsError ( try await task. value) { error in
386+ guard let error = error as? HTTPClientError else {
387+ return XCTFail ( " unexpected error \( error) " )
388+ }
389+ // a race between deadline and connect timer can result in either error
390+ XCTAssertTrue ( [ . deadlineExceeded, . connectTimeout] . contains ( error) )
383391 }
384392 }
385393 #endif
0 commit comments