@@ -195,26 +195,70 @@ def gen():
195
195
196
196
job = ProcessJob (gen )
197
197
await engine .submit_async (job )
198
- await job .join ( )
198
+ await job .wait_until_status ( "running" )
199
199
assert job .status == "running"
200
200
g = job .result ()
201
201
assert list (g ) == list (range (10 ))
202
202
assert job .status == "done"
203
203
204
+ job = ThreadJob (gen )
205
+ await engine .submit_async (job )
206
+ await job .wait_until_status ("running" )
207
+ assert job .status == "running"
208
+ g = job .result ()
209
+ assert list (g ) == list (range (10 ))
210
+ assert job .status == "done"
211
+
212
+ job = LocalJob (gen )
213
+ await engine .submit_async (job )
214
+ await job .wait_until_status ("running" )
215
+ assert job .status == "running"
216
+ g = job .result ()
217
+ assert list (g ) == list (range (10 ))
218
+ assert job .status == "done"
219
+
220
+
221
+ @pytest .mark .asyncio
222
+ async def test_generator_async ():
223
+ with Engine () as engine :
204
224
async def gen_async (n ):
205
225
for i in range (n ):
206
226
yield i
207
227
208
228
job = ProcessJob (gen_async , (10 ,))
209
229
await engine .submit_async (job )
210
- await job .join ()
230
+ await job .wait_until_status ("running" )
231
+ res = []
232
+ async for i in job .result ():
233
+ assert job .status == "running"
234
+ res .append (i )
235
+ assert job .status == "done"
236
+ assert res == list (range (10 ))
237
+
238
+ job = ThreadJob (gen_async , (10 ,))
239
+ await engine .submit_async (job )
240
+ await job .wait_until_status ("running" )
211
241
res = []
212
242
async for i in job .result ():
213
243
assert job .status == "running"
214
244
res .append (i )
215
245
assert job .status == "done"
216
246
assert res == list (range (10 ))
217
247
248
+ job = LocalJob (gen_async , (10 ,))
249
+ await engine .submit_async (job )
250
+ await job .wait_until_status ("running" )
251
+ res = []
252
+ async for i in job .result ():
253
+ assert job .status == "running"
254
+ res .append (i )
255
+ assert job .status == "done"
256
+ assert res == list (range (10 ))
257
+
258
+
259
+ @pytest .mark .asyncio
260
+ async def test_generator_error ():
261
+ with Engine () as engine :
218
262
def gen_error ():
219
263
for i in range (2 ):
220
264
print (i )
@@ -223,7 +267,7 @@ def gen_error():
223
267
224
268
job = ProcessJob (gen_error )
225
269
await engine .submit_async (job )
226
- await job .join ( )
270
+ await job .wait_until_status ( "running" )
227
271
with pytest .raises (ValueError ):
228
272
for i in job .result ():
229
273
assert job .status == "running"
@@ -237,7 +281,7 @@ async def gen_error():
237
281
238
282
job = ProcessJob (gen_error )
239
283
await engine .submit_async (job )
240
- await job .join ( )
284
+ await job .wait_until_status ( "running" )
241
285
with pytest .raises (ValueError ):
242
286
async for i in job .result ():
243
287
assert job .status == "running"
0 commit comments