@@ -81,8 +81,9 @@ class AsyncServerHandlerTests: ServerHandlerTestCaseBase {
81
81
handler. receiveMessage ( ByteBuffer ( string: " 3 " ) )
82
82
handler. receiveEnd ( )
83
83
84
- // Wait for user handler to finish.
85
- await handler. task? . value
84
+ // Wait for tasks to finish.
85
+ await handler. userHandlerTask? . value
86
+ await handler. responseStreamDrainTask? . value
86
87
87
88
handler. finish ( )
88
89
@@ -107,8 +108,9 @@ class AsyncServerHandlerTests: ServerHandlerTestCaseBase {
107
108
handler. receiveMessage ( ByteBuffer ( string: " 3 " ) )
108
109
handler. receiveEnd ( )
109
110
110
- // Wait for user handler to finish.
111
- await handler. task? . value
111
+ // Wait for tasks to finish.
112
+ await handler. userHandlerTask? . value
113
+ await handler. responseStreamDrainTask? . value
112
114
113
115
await assertThat (
114
116
self . recorder. messages,
@@ -135,8 +137,9 @@ class AsyncServerHandlerTests: ServerHandlerTestCaseBase {
135
137
handler. receiveMessage ( ByteBuffer ( string: " 3 " ) )
136
138
handler. receiveEnd ( )
137
139
138
- // Wait for user handler to finish.
139
- await handler. task? . value
140
+ // Wait for tasks to finish.
141
+ await handler. userHandlerTask? . value
142
+ await handler. responseStreamDrainTask? . value
140
143
141
144
await assertThat (
142
145
self . recorder. messages,
@@ -148,11 +151,11 @@ class AsyncServerHandlerTests: ServerHandlerTestCaseBase {
148
151
func testTaskOnlyCreatedAfterHeaders( ) { XCTAsyncTest {
149
152
let handler = self . makeHandler ( observer: self . echo ( requests: responseStreamWriter: context: ) )
150
153
151
- await assertThat ( handler. task , . is( . nil ( ) ) )
154
+ await assertThat ( handler. userHandlerTask , . is( . nil ( ) ) )
152
155
153
156
handler. receiveMetadata ( [ : ] )
154
157
155
- await assertThat ( handler. task , . is( . notNil( ) ) )
158
+ await assertThat ( handler. userHandlerTask , . is( . notNil( ) ) )
156
159
} }
157
160
158
161
func testThrowingDeserializer( ) { XCTAsyncTest {
@@ -174,8 +177,9 @@ class AsyncServerHandlerTests: ServerHandlerTestCaseBase {
174
177
let buffer = ByteBuffer ( string: " hello " )
175
178
handler. receiveMessage ( buffer)
176
179
177
- // Wait for user handler to finish.
178
- await handler. task? . value
180
+ // Wait for tasks to finish.
181
+ await handler. userHandlerTask? . value
182
+ await handler. responseStreamDrainTask? . value
179
183
180
184
await assertThat ( self . recorder. messages, . isEmpty( ) )
181
185
await assertThat ( self . recorder. status, . notNil( . hasCode( . internalError) ) )
@@ -197,8 +201,9 @@ class AsyncServerHandlerTests: ServerHandlerTestCaseBase {
197
201
handler. receiveMessage ( buffer)
198
202
handler. receiveEnd ( )
199
203
200
- // Wait for user handler to finish.
201
- await handler. task? . value
204
+ // Wait for tasks to finish.
205
+ await handler. userHandlerTask? . value
206
+ await handler. responseStreamDrainTask? . value
202
207
203
208
await assertThat ( self . recorder. messages, . isEmpty( ) )
204
209
await assertThat ( self . recorder. status, . notNil( . hasCode( . internalError) ) )
@@ -210,7 +215,9 @@ class AsyncServerHandlerTests: ServerHandlerTestCaseBase {
210
215
211
216
handler. receiveMessage ( ByteBuffer ( string: " foo " ) )
212
217
213
- await handler. task? . value
218
+ // Wait for tasks to finish.
219
+ await handler. userHandlerTask? . value
220
+ await handler. responseStreamDrainTask? . value
214
221
215
222
await assertThat ( self . recorder. metadata, . is( . nil ( ) ) )
216
223
await assertThat ( self . recorder. messages, . isEmpty( ) )
@@ -231,8 +238,9 @@ class AsyncServerHandlerTests: ServerHandlerTestCaseBase {
231
238
232
239
handler. receiveMetadata ( [ : ] )
233
240
234
- // Wait for user handler to finish.
235
- await handler. task? . value
241
+ // Wait for tasks to finish.
242
+ await handler. userHandlerTask? . value
243
+ await handler. responseStreamDrainTask? . value
236
244
237
245
await assertThat ( self . recorder. messages, . isEmpty( ) )
238
246
await assertThat ( self . recorder. status, . notNil( . hasCode( . internalError) ) )
@@ -260,8 +268,9 @@ class AsyncServerHandlerTests: ServerHandlerTestCaseBase {
260
268
261
269
handler. finish ( )
262
270
263
- // Wait for user handler to finish.
264
- await handler. task? . value
271
+ // Wait for tasks to finish.
272
+ await handler. userHandlerTask? . value
273
+ await handler. responseStreamDrainTask? . value
265
274
266
275
await assertThat ( self . recorder. messages, . isEmpty( ) )
267
276
await assertThat ( self . recorder. status, . notNil( . hasCode( . unavailable) ) )
@@ -279,8 +288,9 @@ class AsyncServerHandlerTests: ServerHandlerTestCaseBase {
279
288
280
289
handler. finish ( )
281
290
282
- // Wait for user handler to finish.
283
- await handler. task? . value
291
+ // Wait for tasks to finish.
292
+ await handler. userHandlerTask? . value
293
+ await handler. responseStreamDrainTask? . value
284
294
285
295
await assertThat ( self . recorder. messages. first, . is( ByteBuffer ( string: " hello " ) ) )
286
296
await assertThat ( self . recorder. status, . notNil( . hasCode( . unavailable) ) )
@@ -297,7 +307,7 @@ class AsyncServerHandlerTests: ServerHandlerTestCaseBase {
297
307
handler. receiveMetadata ( [ : ] )
298
308
299
309
// Wait for user handler to finish (it's gonna throw immediately).
300
- await assertThat ( await handler. task ? . value, . notNil( ) )
310
+ await assertThat ( await handler. userHandlerTask ? . value, . notNil( ) )
301
311
302
312
// Check the status is `.unknown`.
303
313
await assertThat ( self . recorder. status, . notNil( . hasCode( . unknown) ) )
@@ -316,19 +326,22 @@ class AsyncServerHandlerTests: ServerHandlerTestCaseBase {
316
326
317
327
// Send two requests and end, pausing the writer in the middle.
318
328
switch handler. state {
319
- case let . active( _, _, responseStreamWriter, _ ) :
329
+ case let . active( _, _, responseStreamWriter, promise ) :
320
330
handler. receiveMessage ( ByteBuffer ( string: " diaz " ) )
321
331
await responseStreamWriter. _asyncWriter. toggleWritability ( )
322
332
handler. receiveMessage ( ByteBuffer ( string: " santiago " ) )
323
333
handler. receiveEnd ( )
324
334
await responseStreamWriter. _asyncWriter. toggleWritability ( )
325
- await handler. task? . value
335
+ await handler. userHandlerTask? . value
336
+ _ = try await promise. futureResult. get ( )
326
337
default :
327
338
XCTFail ( " Unexpected handler state: \( handler. state) " )
328
339
}
329
340
330
341
handler. finish ( )
331
342
343
+ await assertThat ( handler. responseStreamDrainTask, . notNil( ) )
344
+
332
345
await assertThat ( self . recorder. messages, . is( [
333
346
ByteBuffer ( string: " diaz " ) ,
334
347
ByteBuffer ( string: " santiago " ) ,
0 commit comments