@@ -90,7 +90,7 @@ final class AsyncAwaitEndToEndTests: XCTestCase {
90
90
let logger = Logger ( label: " HTTPClient " , factory: StreamLogHandler . standardOutput ( label: ) )
91
91
var request = HTTPClientRequest ( url: " https://localhost: \( bin. port) / " )
92
92
request. method = . POST
93
- request. body = . byteBuffer ( ByteBuffer ( string: " 1234 " ) )
93
+ request. body = . bytes ( ByteBuffer ( string: " 1234 " ) )
94
94
95
95
guard let response = await XCTAssertNoThrowWithResult (
96
96
try await client. execute ( request, deadline: . now( ) + . seconds( 10 ) , logger: logger)
@@ -115,7 +115,7 @@ final class AsyncAwaitEndToEndTests: XCTestCase {
115
115
let logger = Logger ( label: " HTTPClient " , factory: StreamLogHandler . standardOutput ( label: ) )
116
116
var request = HTTPClientRequest ( url: " https://localhost: \( bin. port) / " )
117
117
request. method = . POST
118
- request. body = . bytes( length : nil , AnySequence ( " 1234 " . utf8) )
118
+ request. body = . bytes( AnySequence ( " 1234 " . utf8) , length : . unknown )
119
119
120
120
guard let response = await XCTAssertNoThrowWithResult (
121
121
try await client. execute ( request, deadline: . now( ) + . seconds( 10 ) , logger: logger)
@@ -140,7 +140,7 @@ final class AsyncAwaitEndToEndTests: XCTestCase {
140
140
let logger = Logger ( label: " HTTPClient " , factory: StreamLogHandler . standardOutput ( label: ) )
141
141
var request = HTTPClientRequest ( url: " https://localhost: \( bin. port) / " )
142
142
request. method = . POST
143
- request. body = . bytes( length : nil , AnyCollection ( " 1234 " . utf8) )
143
+ request. body = . bytes( AnyCollection ( " 1234 " . utf8) , length : . unknown )
144
144
145
145
guard let response = await XCTAssertNoThrowWithResult (
146
146
try await client. execute ( request, deadline: . now( ) + . seconds( 10 ) , logger: logger)
@@ -190,11 +190,11 @@ final class AsyncAwaitEndToEndTests: XCTestCase {
190
190
let logger = Logger ( label: " HTTPClient " , factory: StreamLogHandler . standardOutput ( label: ) )
191
191
var request = HTTPClientRequest ( url: " https://localhost: \( bin. port) / " )
192
192
request. method = . POST
193
- request. body = . stream( length : nil , [
193
+ request. body = . stream( [
194
194
ByteBuffer ( string: " 1 " ) ,
195
195
ByteBuffer ( string: " 2 " ) ,
196
196
ByteBuffer ( string: " 34 " ) ,
197
- ] . asAsyncSequence ( ) )
197
+ ] . asAsyncSequence ( ) , length : . unknown )
198
198
199
199
guard let response = await XCTAssertNoThrowWithResult (
200
200
try await client. execute ( request, deadline: . now( ) + . seconds( 10 ) , logger: logger)
@@ -219,7 +219,7 @@ final class AsyncAwaitEndToEndTests: XCTestCase {
219
219
let logger = Logger ( label: " HTTPClient " , factory: StreamLogHandler . standardOutput ( label: ) )
220
220
var request = HTTPClientRequest ( url: " https://localhost: \( bin. port) / " )
221
221
request. method = . POST
222
- request. body = . stream( length : nil , " 1234 " . utf8. asAsyncSequence ( ) )
222
+ request. body = . stream( " 1234 " . utf8. asAsyncSequence ( ) , length : . unknown )
223
223
224
224
guard let response = await XCTAssertNoThrowWithResult (
225
225
try await client. execute ( request, deadline: . now( ) + . seconds( 10 ) , logger: logger)
@@ -245,7 +245,7 @@ final class AsyncAwaitEndToEndTests: XCTestCase {
245
245
var request = HTTPClientRequest ( url: " https://localhost: \( bin. port) / " )
246
246
request. method = . POST
247
247
let streamWriter = AsyncSequenceWriter < ByteBuffer > ( )
248
- request. body = . stream( length: nil , streamWriter )
248
+ request. body = . stream( streamWriter , length: . unknown )
249
249
250
250
guard let response = await XCTAssertNoThrowWithResult (
251
251
try await client. execute ( request, deadline: . now( ) + . seconds( 10 ) , logger: logger)
@@ -257,7 +257,7 @@ final class AsyncAwaitEndToEndTests: XCTestCase {
257
257
ByteBuffer ( string: " 2 " ) ,
258
258
ByteBuffer ( string: " 34 " ) ,
259
259
]
260
- let bodyIterator = response. body. makeAsyncIterator ( )
260
+ var bodyIterator = response. body. makeAsyncIterator ( )
261
261
for expectedFragment in fragments {
262
262
streamWriter. write ( expectedFragment)
263
263
guard let actualFragment = await XCTAssertNoThrowWithResult (
@@ -287,7 +287,7 @@ final class AsyncAwaitEndToEndTests: XCTestCase {
287
287
var request = HTTPClientRequest ( url: " https://localhost: \( bin. port) / " )
288
288
request. method = . POST
289
289
let streamWriter = AsyncSequenceWriter < ByteBuffer > ( )
290
- request. body = . stream( length: nil , streamWriter )
290
+ request. body = . stream( streamWriter , length: . unknown )
291
291
292
292
guard let response = await XCTAssertNoThrowWithResult (
293
293
try await client. execute ( request, deadline: . now( ) + . seconds( 10 ) , logger: logger)
@@ -300,7 +300,7 @@ final class AsyncAwaitEndToEndTests: XCTestCase {
300
300
ByteBuffer ( string: String ( repeating: " c " , count: 4000 ) ) ,
301
301
ByteBuffer ( string: String ( repeating: " d " , count: 4000 ) ) ,
302
302
]
303
- let bodyIterator = response. body. makeAsyncIterator ( )
303
+ var bodyIterator = response. body. makeAsyncIterator ( )
304
304
for expectedFragment in fragments {
305
305
streamWriter. write ( expectedFragment)
306
306
guard let actualFragment = await XCTAssertNoThrowWithResult (
@@ -330,7 +330,7 @@ final class AsyncAwaitEndToEndTests: XCTestCase {
330
330
var request = HTTPClientRequest ( url: " http://localhost: \( bin. port) /offline " )
331
331
request. method = . POST
332
332
let streamWriter = AsyncSequenceWriter < ByteBuffer > ( )
333
- request. body = . stream( length: nil , streamWriter )
333
+ request. body = . stream( streamWriter , length: . unknown )
334
334
335
335
let task = Task < HTTPClientResponse , Error > { [ request] in
336
336
try await client. execute ( request, deadline: . now( ) + . seconds( 2 ) , logger: logger)
@@ -357,8 +357,12 @@ final class AsyncAwaitEndToEndTests: XCTestCase {
357
357
let task = Task < HTTPClientResponse , Error > { [ request] in
358
358
try await client. execute ( request, deadline: . now( ) + . milliseconds( 100 ) , logger: logger)
359
359
}
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) )
362
366
}
363
367
}
364
368
#endif
@@ -378,8 +382,12 @@ final class AsyncAwaitEndToEndTests: XCTestCase {
378
382
let task = Task < HTTPClientResponse , Error > { [ request] in
379
383
try await client. execute ( request, deadline: . now( ) , logger: logger)
380
384
}
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) )
383
391
}
384
392
}
385
393
#endif
0 commit comments