| 1277 | self.assertIn("filling", repr(barrier)) |
| 1278 | |
| 1279 | async def test_repr(self): |
| 1280 | barrier = asyncio.Barrier(self.N) |
| 1281 | |
| 1282 | self.assertTrue(RGX_REPR.match(repr(barrier))) |
| 1283 | self.assertIn("filling", repr(barrier)) |
| 1284 | |
| 1285 | waiters = [] |
| 1286 | async def wait(barrier): |
| 1287 | await barrier.wait() |
| 1288 | |
| 1289 | incr = 2 |
| 1290 | for i in range(incr): |
| 1291 | waiters.append(asyncio.create_task(wait(barrier))) |
| 1292 | await asyncio.sleep(0) |
| 1293 | |
| 1294 | self.assertTrue(RGX_REPR.match(repr(barrier))) |
| 1295 | self.assertTrue(f"waiters:{incr}/{self.N}" in repr(barrier)) |
| 1296 | self.assertIn("filling", repr(barrier)) |
| 1297 | |
| 1298 | # create missing waiters |
| 1299 | for i in range(barrier.parties - barrier.n_waiting): |
| 1300 | waiters.append(asyncio.create_task(wait(barrier))) |
| 1301 | await asyncio.sleep(0) |
| 1302 | |
| 1303 | self.assertTrue(RGX_REPR.match(repr(barrier))) |
| 1304 | self.assertIn("draining", repr(barrier)) |
| 1305 | |
| 1306 | # add a part of waiters |
| 1307 | for i in range(incr): |
| 1308 | waiters.append(asyncio.create_task(wait(barrier))) |
| 1309 | await asyncio.sleep(0) |
| 1310 | # and reset |
| 1311 | await barrier.reset() |
| 1312 | |
| 1313 | self.assertTrue(RGX_REPR.match(repr(barrier))) |
| 1314 | self.assertIn("resetting", repr(barrier)) |
| 1315 | |
| 1316 | # add a part of waiters again |
| 1317 | for i in range(incr): |
| 1318 | waiters.append(asyncio.create_task(wait(barrier))) |
| 1319 | await asyncio.sleep(0) |
| 1320 | # and abort |
| 1321 | await barrier.abort() |
| 1322 | |
| 1323 | self.assertTrue(RGX_REPR.match(repr(barrier))) |
| 1324 | self.assertIn("broken", repr(barrier)) |
| 1325 | self.assertTrue(barrier.broken) |
| 1326 | |
| 1327 | # suppress unhandled exceptions |
| 1328 | await asyncio.gather(*waiters, return_exceptions=True) |
| 1329 | |
| 1330 | async def test_barrier_parties(self): |
| 1331 | self.assertRaises(ValueError, lambda: asyncio.Barrier(0)) |