2024-10-28 06:36:10 +01:00
|
|
|
import asyncio
|
|
|
|
|
|
|
|
|
|
from aiomql.core.task_queue import TaskQueue, QueueItem
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
class TestTaskQueue:
|
|
|
|
|
@classmethod
|
|
|
|
|
def setup_class(cls):
|
2025-01-23 18:18:18 +01:00
|
|
|
cls.task_queue = TaskQueue(absolute_timeout=6, worker_timeout=1)
|
2024-11-04 00:32:51 +01:00
|
|
|
cls.data = {}
|
2024-10-28 06:36:10 +01:00
|
|
|
|
|
|
|
|
async def task_one(self):
|
|
|
|
|
for i in range(10):
|
|
|
|
|
await asyncio.sleep(0.5)
|
2024-11-04 00:32:51 +01:00
|
|
|
self.data.setdefault("task_one", {})[i] = f"task_one_{i}"
|
2024-10-28 06:36:10 +01:00
|
|
|
|
|
|
|
|
async def task_two(self):
|
|
|
|
|
for i in range(10):
|
|
|
|
|
await asyncio.sleep(0.5)
|
2024-11-04 00:32:51 +01:00
|
|
|
self.data.setdefault("task_two", {})[i] = f"task_two_{i}"
|
2024-10-28 06:36:10 +01:00
|
|
|
|
|
|
|
|
async def task_three(self):
|
|
|
|
|
for i in range(10):
|
2024-11-04 00:32:51 +01:00
|
|
|
self.data.setdefault("task_three", {})[i] = f"task_three_{i}"
|
2024-10-28 06:36:10 +01:00
|
|
|
await asyncio.sleep(10)
|
|
|
|
|
|
|
|
|
|
async def test_queue(self):
|
|
|
|
|
item_one = QueueItem(self.task_one)
|
|
|
|
|
self.task_queue.add(item=item_one, must_complete=False)
|
|
|
|
|
assert self.task_queue.queue.qsize() == 1
|
|
|
|
|
self.task_queue.add(item=QueueItem(self.task_two), must_complete=True)
|
|
|
|
|
assert self.task_queue.queue.qsize() == 2
|
|
|
|
|
self.task_queue.add(item=QueueItem(self.task_three), must_complete=False)
|
|
|
|
|
await self.task_queue.run()
|
2024-11-04 00:32:51 +01:00
|
|
|
assert len(self.data["task_one"]) >= 2
|
|
|
|
|
assert len(self.data["task_two"]) == 10
|