Пример #1
0
async def test_version_check_accept():
    parent = MockTask()
    conn = Mock()
    mgr = TaskManager(parent)
    mgr.reject = AsyncMock()
    mgr.register = Mock()
    await mgr.on_child_init(conn, id='abc', task={}, version=version)
    mgr.reject.assert_not_called()
    mgr.register.assert_called()
Пример #2
0
async def test_task_watch_timeout():
    parent, child = MockTask(), MockTask()
    mgr = TaskManager(parent)
    mgr.emit_child_error = AsyncMock()
    child.wait_for_scheduling = AsyncMock()
    child.future.done = Mock(return_value=False)
    await mgr._init_timeout_check(child, 0)
    child.wait_for_scheduling.assert_called()
    parent.cluster.destroy.assert_called_with(child.id)
    mgr.emit_child_error.assert_called()
Пример #3
0
async def test_task_watch_ok():
    parent, child = MockTask(), MockTask()
    mgr = TaskManager(parent)
    mgr.conns[Mock()] = child.id  # register connection
    mgr.emit_child_error = AsyncMock()
    child.wait_for_scheduling = AsyncMock()
    child.future.done = Mock(return_value=False)
    await mgr._init_timeout_check(child, 0)
    child.wait_for_scheduling.assert_called()
    parent.cluster.kill.assert_not_called()
    mgr.emit_child_error.assert_not_called()
Пример #4
0
async def test_child_lost():
    conn = Mock()
    parent, child = MockTask(), MockTask()
    mgr = TaskManager(parent)
    child.conn = conn
    mgr.conns[conn] = child.id
    mgr[child.id] = child
    mgr.emit_child_error = AsyncMock()

    await mgr.on_child_close(conn)
    assert child.conn is None
    assert conn not in mgr.conns
    mgr.emit_child_error.assert_called()
Пример #5
0
async def test_task_message_forward():
    task = MockTask()
    task.node.server = EventEmitter()
    task.node.parent.send = AsyncMock()
    TaskManager(task)
    await task.node.server.emit('something', conn=AsyncMock())
    assert task.node.parent.send.called
Пример #6
0
def test_task_event_registration():
    task = MockTask()
    mgr = TaskManager(task)
    task.node.server.on.assert_any_call(TASK_INIT, mgr.on_child_init)
    task.node.server.on.assert_any_call(TASK_STATUS, mgr.on_child_status)
    task.node.server.on.assert_any_call(TASK_FAIL, mgr.on_child_fail)
    task.node.server.on.assert_any_call(TASK_RETURN, mgr.on_child_return)
Пример #7
0
async def test_task_register_watched():
    conn = Mock()
    parent, child = MockTask(), MockTask()
    mgr = TaskManager(parent)
    mgr[child.id] = child

    mgr.register(conn, child.id, {
        'id': str(child.id),
        'name': 'child',
        'image': 'test',
    })

    # connection should be stored
    assert conn in mgr.conns

    # task connection reference should be set
    assert mgr[child.id].conn == conn
Пример #8
0
async def test_task_register_virtual():
    conn = Mock()
    parent, child = MockTask(), MockTask()
    mgr = TaskManager(parent)

    assert child.id not in mgr

    mgr.register(conn, child.id, {
        'id': child.id,
        'name': 'child',
        'image': 'test',
        'parent': parent.id,
    })

    # connection should be stored
    assert conn in mgr.conns

    # a remote task instance should be created
    assert child.id in mgr
    assert mgr[child.id].conn == conn