コード例 #1
0
ファイル: test_ack.py プロジェクト: leonh/fennel
async def test_ack(app, broker, message, xid, consumer_id, job):
    await broker.read(consumer_id, count=1)
    state = get_state(app)
    assert len(state.queue.messages) == 1
    assert state.queue.groups[0].pending == 1
    assert len(state.schedule) == 0
    assert len(state.dead.messages) == 0
    assert count_results(app) == 0
    assert get_status(app, job.uuid) == status.SENT

    await broker.ack(xid, job)
    state = get_state(app)
    assert len(state.queue.messages) == 0
    assert state.queue.groups[0].pending == 0
    assert len(state.schedule) == 0
    assert len(state.dead.messages) == 0
    assert count_results(app) == 0
    assert get_status(app, job.uuid) == status.SUCCESS
コード例 #2
0
async def test_process_schedule(app, broker, jobs, messages):
    with freeze_time("2020-01-01"):
        for xid, job in jobs:
            job.status = EXECUTING
            await broker.ack_and_schedule(xid, job)

        state = get_state(app)
        assert len(state.queue.messages) == 0
        assert state.queue.groups[0].pending == 0
        assert len(state.schedule) == 10
        assert len(state.dead.messages) == 0
        assert count_results(app) == 0
        assert all(get_status(app, job.uuid) == RETRY for _, job in jobs)

    with freeze_time("1970-01-01"):
        # We're before the schedule time, no jobs should have moved.
        scheduled = await broker.process_schedule()
        assert len(scheduled) == 0

        state = get_state(app)
        assert len(state.queue.messages) == 0
        assert state.queue.groups[0].pending == 0
        assert len(state.schedule) == 10
        assert len(state.dead.messages) == 0
        assert count_results(app) == 0
        assert all(get_status(app, job.uuid) == RETRY for _, job in jobs)

    with freeze_time("2100-01-01"):
        # After the schedule time, all jobs should be moved to the task queue.
        scheduled = await broker.process_schedule()
        assert len(scheduled) == 10

        state = get_state(app)
        assert len(state.queue.messages) == 10
        assert {x.uuid
                for x in state.queue.messages} == {y.uuid
                                                   for (_, y) in jobs}
        assert state.queue.groups[0].pending == 0
        assert len(state.schedule) == 0
        assert len(state.dead.messages) == 0
        assert count_results(app) == 0
        assert all(get_status(app, job.uuid) == RETRY for _, job in jobs)
コード例 #3
0
ファイル: test_ack.py プロジェクト: leonh/fennel
async def test_ack_and_dead(app, broker, failing_message, xid, consumer_id,
                            failing_job):
    await broker.read(consumer_id, count=1)
    state = get_state(app)
    assert len(state.queue.messages) == 1
    assert state.queue.groups[0].pending == 1
    assert len(state.schedule) == 0
    assert len(state.dead.messages) == 0
    assert count_results(app) == 0
    assert get_status(app, failing_job.uuid) == status.SENT

    await broker.ack_and_dead(xid, failing_job)
    state = get_state(app)
    assert len(state.queue.messages) == 0
    assert state.queue.groups[0].pending == 0
    assert len(state.schedule) == 0
    assert state.dead.messages[0].uuid == failing_job.uuid
    assert len(state.dead.messages) == 1
    assert count_results(app) == 1
    assert get_status(app, failing_job.uuid) == status.DEAD
コード例 #4
0
    def status(self):
        """
        Return the status of the task execution.

        Examples
        --------
        >>> @app.task
        >>> def bar(x)
        ...     time.sleep(x)
        ...     return x
        ...
        >>> x = bar.delay(5)
        >>> x.status()
        SENT
        >>> x.status()  # After roughly 5 seconds...
        SUCCESS
        """
        return get_status(self.app, self.job.uuid)
コード例 #5
0
ファイル: test_state.py プロジェクト: leonh/fennel
def test_module(app, job, xid):
    actions.send(app, job, xid=xid)

    assert state.get_status(app, job.uuid) == SENT
    assert state.get_job(app, job.uuid).status == SENT
    assert state.count_jobs(app) == 1
    assert state.get_messages(
        app, app.keys.queue) == [Message(id=xid, uuid=job.uuid)]

    with executor(app):
        wait_for_results(app, length=1)

    assert actions.result(app, job, timeout=1)["return_value"] == job.args[0]
    assert state.get_info(app, app.keys.queue).groups == 1
    assert state.get_groups(app, app.keys.queue)[0].name == app.keys.group
    assert state.get_stream(app, app.keys.queue).key == app.keys.queue
    assert state.count_results(app) == 1

    with pytest.raises(JobNotFound):
        state.get_job(app, "nope")