Пример #1
0
async def test_consistent_hash_group_router_removed_routees_no_longer_receive_messages(
):
    router, routee1, _, _ = create_broadcast_group_router_with3_routees()
    await context.send(router, RemoveRoutee(routee1))
    await context.send(router, Message('message1'))

    assert await context.request_future(routee1, 'received?', timeout) == 0
Пример #2
0
async def test_round_robin_group_router_routees_can_be_removed():
    router, routee1, routee2, routee3 = create_router_with3_routees()

    await context.send(router, RemoveRoutee(routee1))

    routees = await context.request_async(router, GetRoutees(), timeout)
    assert routee1 not in routees.pids
    assert routee2 in routees.pids
    assert routee3 in routees.pids
async def test_random_group_router_removed_routees_do_not_receive_messages():
    router, routee1, _, _ = create_router_with3_routees()

    await context.send(router, RemoveRoutee(routee1))

    for i in range(100):
        await context.send(router, i)

    assert await context.request_future(routee1, 'received?', timeout) is None
Пример #4
0
async def test_consistent_hash_group_router_routees_can_be_removed():
    router, routee1, routee2, routee3 = create_broadcast_group_router_with3_routees(
    )

    await context.send(router, RemoveRoutee(routee1))
    routees = await context.request_future(router, GetRoutees(), timeout)

    assert routee1 not in routees.pids
    assert routee2 in routees.pids
    assert routee3 in routees.pids
Пример #5
0
async def test_consistent_hash_group_router_message_is_reassigned_when_routee_removed(
):
    router, routee1, routee2, _ = create_broadcast_group_router_with3_routees()

    await context.send(router, Message('message1'))
    assert await context.request_future(routee1, 'received?', timeout) == 1

    await context.send(router, RemoveRoutee(routee1))
    await context.send(router, Message('message1'))
    assert await context.request_future(routee2, 'received?', timeout) == 1
async def test_broadcast_group_router_removed_routees_no_longer_receive_messages(
):
    router, routee1, routee2, routee3 = create_broadcast_group_router_with3_routees(
    )

    await context.send(router, 'first message')
    await context.send(router, RemoveRoutee(routee1))
    await context.send(router, 'second message')

    assert await context.request_future(routee1, 'received?',
                                        timeout) == 'first message'
    assert await context.request_future(routee2, 'received?',
                                        timeout) == 'second message'
    assert await context.request_future(routee3, 'received?',
                                        timeout) == 'second message'
async def test_round_robin_group_router_removed_routees_no_longer_receive_messages():
    router, routee1, routee2, routee3 = create_router_with3_routees()

    await context.send(router, '0')
    await context.send(router, '0')
    await context.send(router, '0')
    await context.send(router, RemoveRoutee(routee1))
    # we should have 2 routees, so send 3 messages to ensure round robin happens
    await context.send(router, '3')
    await context.send(router, '3')
    await context.send(router, '3')

    assert await context.request_future(routee1, 'received?', timeout) == '0'
    assert await context.request_future(routee2, 'received?', timeout) == '3'
    assert await context.request_future(routee3, 'received?', timeout) == '3'