示例#1
0
def test_asyncio(app):
    @app.task
    async def foo(n):
        await asyncio.sleep(0.01)
        return n

    with executor(app):
        x = foo.delay(3)
        assert x.get() == 3
示例#2
0
def test_task(app):
    @app.task
    def foo(n):
        return n

    assert foo(7) == 7

    with executor(app):
        assert foo.delay(7).get() == 7
示例#3
0
def test_gather(app):
    @app.task
    def foo(n):
        time.sleep(0.01)
        return n

    with executor(app):
        results = [foo.delay(i) for i in range(10)]
        gathered = gather(results)

    assert set(gathered) == set(range(10))
示例#4
0
def test_task_with_kwargs(app):
    @app.task(retries=4)
    def foo(n):
        time.sleep(0.01)
        return n

    with executor(app):
        x = foo.delay(3)
        assert x.get() == 3

    assert foo.max_retries == 4
示例#5
0
async def test_gather(app):
    @app.task
    async def foo(n):
        await asyncio.sleep(0.01)
        return n

    with executor(app):
        results = [await foo.delay(i) for i in range(10)]
        gathered = await gather(results)

    assert set(gathered) == set(range(10))
示例#6
0
def test_wait_timeout(app):
    @app.task
    def foo(n):
        time.sleep(0.5)
        return n

    with executor(app):
        results = [foo.delay(i) for i in range(10)]
        done, pending = wait(results, timeout=0.1)

    assert len(done) == 0
    assert len(pending) == 10
示例#7
0
def test_wait(app):
    @app.task
    def foo(n):
        time.sleep(0.01)
        return n

    with executor(app):
        results = [foo.delay(i) for i in range(10)]
        done, pending = wait(results, timeout=10)

    assert len(pending) == 0
    assert set(f.result() for f in done) == set(range(10))
示例#8
0
def test_raise_on_failure(app):
    @app.task(retries=0)
    async def foo(n):
        raise Exception("baz")

    with executor(app):
        x = foo.delay(3)
        with pytest.raises(TaskFailed) as excinfo:
            x.get(timeout=1)

    assert excinfo.value.original_type == "Exception"
    assert excinfo.value.original_args == ["baz"]
示例#9
0
async def test_wait_timeout(app):
    @app.task
    async def foo(n):
        await asyncio.sleep(1)
        return n

    with executor(app):
        results = [await foo.delay(i) for i in range(10)]
        done, pending = await wait(results, timeout=0.2)

    assert len(done) == 0
    assert len(pending) == 10
示例#10
0
def test_gather_timeout(app):
    @app.task(retries=10)
    def foo(n):
        if n == 5:
            raise Exception("foo")
        return n

    with executor(app):
        results = [foo.delay(i) for i in range(10)]
        gathered = gather(results, task_timeout=1)

    for i, x in enumerate(gathered):
        if i == 5:
            assert type(x) == Timeout
        else:
            assert x == i
示例#11
0
def test_gather_failure(app):
    @app.task(retries=0)
    def foo(n):
        if n == 5:
            raise Exception("foo")
        return n

    with executor(app):
        results = [foo.delay(i) for i in range(10)]
        gathered = gather(results)

    for i, x in enumerate(gathered):
        if i == 5:
            assert x.original_type == "Exception"
            assert x.original_args == ["foo"]
        else:
            assert x == i
示例#12
0
def test_wait_failure(app):
    @app.task(retries=0)
    def foo(n):
        if n == 5:
            raise Exception("foo")
        return n

    with executor(app):
        results = [foo.delay(i) for i in range(10)]
        done, pending = wait(results, timeout=1)

        assert len(done) == 10
        assert len(pending) == 0

    for f in done:
        try:
            f.result()
        except TaskFailed as e:
            assert e.original_type == "Exception"
            assert e.original_args == ["foo"]
示例#13
0
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")