def test_squad(): tasks_in_squad = 3 arbiter = Arbiter(host=arbiter_host, port=5672, user=arbiter_user, password=arbiter_password) tasks = [] for _ in range(tasks_in_squad): tasks.append(Task("simple_add", task_args=[1, 2])) squad_id = arbiter.squad(tasks) while arbiter.status(squad_id).get("state") != "done": sleep(1) status = arbiter.status(squad_id) assert status["done"] == tasks_in_squad assert len(status["tasks"]) == tasks_in_squad assert arbiter.workers()[arbiter_queue]['available'] == 10 arbiter.close()
def test_kill_group(): tasks_in_squad = 3 start = time() arbiter = Arbiter(host=arbiter_host, port=5672, user=arbiter_user, password=arbiter_password) tasks = [] for _ in range(tasks_in_squad): tasks.append(Task("long_running")) squad_id = arbiter.squad(tasks) sleep(5) # time for squad to settle arbiter.kill_group(squad_id) while arbiter.status(squad_id).get("state") != "done": sleep(1) assert time() - start < 180 assert arbiter.workers()[arbiter_queue]['available'] == 10 arbiter.close()
def test_squad_finalyzer(): tasks_in_squad = 3 arbiter = Arbiter(host=arbiter_host, port=5672, user=arbiter_user, password=arbiter_password) tasks = [] for _ in range(tasks_in_squad): tasks.append(Task("simple_add", task_args=[1, 2])) tasks.append(Task("simple_add", task_args=[5, 5], task_type='finalize')) squad_id = arbiter.squad(tasks, callback=Task("simple_add", task_args=[5, 4])) while arbiter.status(squad_id).get("state") != "done": sleep(1) status = arbiter.status(squad_id) assert status["done"] == tasks_in_squad + 2 # callback + finalizer assert len(status["tasks"]) == tasks_in_squad + 2 # callback + finalizer assert status["tasks"][-1]['task_type'] == "finalize" assert status["tasks"][-1]['result'] == 10 assert arbiter.workers()[arbiter_queue]['available'] == 10 arbiter.close()