Пример #1
0
async def test_ok__region__access_one() -> None:
    region = AioExclusiveRegion(RegionIsBusyError)

    async def func() -> None:
        assert not region.is_busy()
        async with region:
            assert region.is_busy()
        assert not region.is_busy()

    await func()

    assert not region.is_busy()
    await region.exit()
    assert not region.is_busy()
Пример #2
0
async def test_fail__region__access_one() -> None:
    region = AioExclusiveRegion(RegionIsBusyError)

    async def func() -> None:
        assert not region.is_busy()
        async with region:
            assert region.is_busy()
            await region.enter()
        assert not region.is_busy()

    with pytest.raises(RegionIsBusyError):
        await func()

    assert not region.is_busy()
    await region.exit()
    assert not region.is_busy()
Пример #3
0
async def test_ok__region__access_two() -> None:
    region = AioExclusiveRegion(RegionIsBusyError)

    async def func1() -> None:
        async with region:
            await asyncio.sleep(1)
        print("done func1()")

    async def func2() -> None:
        await asyncio.sleep(2)
        print("waiking up func2()")
        async with region:
            await asyncio.sleep(1)
        print("done func2()")

    await asyncio.gather(func1(), func2())

    assert not region.is_busy()
    await region.exit()
    assert not region.is_busy()
Пример #4
0
async def test_fail__region__access_two() -> None:
    region = AioExclusiveRegion(RegionIsBusyError)

    async def func1() -> None:
        async with region:
            await asyncio.sleep(2)
        print("done func1()")

    async def func2() -> None:
        await asyncio.sleep(1)
        async with region:
            await asyncio.sleep(1)
        print("done func2()")

    results = await asyncio.gather(func1(), func2(), return_exceptions=True)
    assert results[0] is None
    assert type(results[1]) == RegionIsBusyError  # pylint: disable=unidiomatic-typecheck

    assert not region.is_busy()
    await region.exit()
    assert not region.is_busy()