@@ -199,26 +199,48 @@ async def test_CapacityLimiter_zero_limit_tokens() -> None:
199
199
async with _core .open_nursery () as nursery :
200
200
c .total_tokens = 0
201
201
202
- for i in range (6 ):
202
+ for i in range (5 ):
203
203
nursery .start_soon (c .acquire_on_behalf_of , i )
204
204
await wait_all_tasks_blocked ()
205
205
206
206
assert set (c .statistics ().borrowers ) == set ()
207
+ assert c .statistics ().tasks_waiting == 5
207
208
208
209
c .total_tokens = 5
209
210
210
211
assert set (c .statistics ().borrowers ) == {0 , 1 , 2 , 3 , 4 }
211
212
212
- for i in range (6 ):
213
+ nursery .start_soon (c .acquire_on_behalf_of , 5 )
214
+ await wait_all_tasks_blocked ()
215
+
216
+ assert c .statistics ().tasks_waiting == 1
217
+
218
+ for i in range (5 ):
213
219
c .release_on_behalf_of (i )
214
220
221
+ assert c .statistics ().tasks_waiting == 0
222
+ c .release_on_behalf_of (5 )
223
+
215
224
# making sure that zero limit capacity limiter doesn't let any tasks through
216
225
217
226
c .total_tokens = 0
218
227
219
228
with pytest .raises (_core .WouldBlock ):
220
229
c .acquire_nowait ()
221
230
231
+ nursery .start_soon (c .acquire_on_behalf_of , 6 )
232
+ await wait_all_tasks_blocked ()
233
+
234
+ assert c .statistics ().tasks_waiting == 1
235
+ assert c .statistics ().borrowers == []
236
+
237
+ c .total_tokens = 1
238
+ assert c .statistics ().tasks_waiting == 0
239
+ assert c .statistics ().borrowers == [6 ]
240
+
241
+ c .release_on_behalf_of (6 )
242
+ c .total_tokens = 0
243
+
222
244
nursery .cancel_scope .cancel ()
223
245
224
246
assert c .total_tokens == 0
0 commit comments