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
def test_task(app): @app.task def foo(n): return n assert foo(7) == 7 with executor(app): assert foo.delay(7).get() == 7
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))
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
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))
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
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))
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"]
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
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
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
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"]
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")