summaryrefslogtreecommitdiff
path: root/tests/test_workers.py
diff options
context:
space:
mode:
Diffstat (limited to 'tests/test_workers.py')
-rw-r--r--tests/test_workers.py77
1 files changed, 47 insertions, 30 deletions
diff --git a/tests/test_workers.py b/tests/test_workers.py
index dcfafb1..6e5568f 100644
--- a/tests/test_workers.py
+++ b/tests/test_workers.py
@@ -12,7 +12,14 @@ from apscheduler.abc import Job
from apscheduler.datastores.memory import MemoryDataStore
from apscheduler.enums import JobOutcome
from apscheduler.events import (
- Event, JobAcquired, JobAdded, JobReleased, TaskAdded, WorkerStarted, WorkerStopped)
+ Event,
+ JobAcquired,
+ JobAdded,
+ JobReleased,
+ TaskAdded,
+ WorkerStarted,
+ WorkerStopped,
+)
from apscheduler.structures import Task
from apscheduler.workers.async_ import AsyncWorker
from apscheduler.workers.sync import Worker
@@ -22,26 +29,30 @@ pytestmark = pytest.mark.anyio
def sync_func(*args, fail: bool, **kwargs):
if fail:
- raise Exception('failing as requested')
+ raise Exception("failing as requested")
else:
return args, kwargs
async def async_func(*args, fail: bool, **kwargs):
if fail:
- raise Exception('failing as requested')
+ raise Exception("failing as requested")
else:
return args, kwargs
def fail_func():
- pytest.fail('This function should never be run')
+ pytest.fail("This function should never be run")
class TestAsyncWorker:
- @pytest.mark.parametrize('target_func', [sync_func, async_func], ids=['sync', 'async'])
- @pytest.mark.parametrize('fail', [False, True], ids=['success', 'fail'])
- async def test_run_job_nonscheduled_success(self, target_func: Callable, fail: bool) -> None:
+ @pytest.mark.parametrize(
+ "target_func", [sync_func, async_func], ids=["sync", "async"]
+ )
+ @pytest.mark.parametrize("fail", [False, True], ids=["success", "fail"])
+ async def test_run_job_nonscheduled_success(
+ self, target_func: Callable, fail: bool
+ ) -> None:
def listener(received_event: Event):
received_events.append(received_event)
if len(received_events) == 5:
@@ -53,8 +64,8 @@ class TestAsyncWorker:
worker = AsyncWorker(data_store)
worker.events.subscribe(listener)
async with worker:
- await worker.data_store.add_task(Task(id='task_id', func=target_func))
- job = Job(task_id='task_id', args=(1, 2), kwargs={'x': 'foo', 'fail': fail})
+ await worker.data_store.add_task(Task(id="task_id", func=target_func))
+ job = Job(task_id="task_id", args=(1, 2), kwargs={"x": "foo", "fail": fail})
await worker.data_store.add_job(job)
with fail_after(3):
await event.wait()
@@ -66,13 +77,13 @@ class TestAsyncWorker:
# Then the task was added
received_event = received_events.pop(0)
assert isinstance(received_event, TaskAdded)
- assert received_event.task_id == 'task_id'
+ assert received_event.task_id == "task_id"
# Then a job was added
received_event = received_events.pop(0)
assert isinstance(received_event, JobAdded)
assert received_event.job_id == job.id
- assert received_event.task_id == 'task_id'
+ assert received_event.task_id == "task_id"
assert received_event.schedule_id is None
# Then the job was started
@@ -111,10 +122,13 @@ class TestAsyncWorker:
worker = AsyncWorker(data_store)
worker.events.subscribe(listener)
async with worker:
- await worker.data_store.add_task(Task(id='task_id', func=fail_func))
- job = Job(task_id='task_id', schedule_id='foo',
- scheduled_fire_time=scheduled_start_time,
- start_deadline=datetime(2020, 9, 14, 1, tzinfo=timezone.utc))
+ await worker.data_store.add_task(Task(id="task_id", func=fail_func))
+ job = Job(
+ task_id="task_id",
+ schedule_id="foo",
+ scheduled_fire_time=scheduled_start_time,
+ start_deadline=datetime(2020, 9, 14, 1, tzinfo=timezone.utc),
+ )
await worker.data_store.add_job(job)
with fail_after(3):
await event.wait()
@@ -126,14 +140,14 @@ class TestAsyncWorker:
# Then the task was added
received_event = received_events.pop(0)
assert isinstance(received_event, TaskAdded)
- assert received_event.task_id == 'task_id'
+ assert received_event.task_id == "task_id"
# Then a job was added
received_event = received_events.pop(0)
assert isinstance(received_event, JobAdded)
assert received_event.job_id == job.id
- assert received_event.task_id == 'task_id'
- assert received_event.schedule_id == 'foo'
+ assert received_event.task_id == "task_id"
+ assert received_event.schedule_id == "foo"
# The worker acquired the job
received_event = received_events.pop(0)
@@ -157,7 +171,7 @@ class TestAsyncWorker:
class TestSyncWorker:
- @pytest.mark.parametrize('fail', [False, True], ids=['success', 'fail'])
+ @pytest.mark.parametrize("fail", [False, True], ids=["success", "fail"])
def test_run_job_nonscheduled(self, fail: bool) -> None:
def listener(received_event: Event):
received_events.append(received_event)
@@ -170,8 +184,8 @@ class TestSyncWorker:
worker = Worker(data_store)
worker.events.subscribe(listener)
with worker:
- worker.data_store.add_task(Task(id='task_id', func=sync_func))
- job = Job(task_id='task_id', args=(1, 2), kwargs={'x': 'foo', 'fail': fail})
+ worker.data_store.add_task(Task(id="task_id", func=sync_func))
+ job = Job(task_id="task_id", args=(1, 2), kwargs={"x": "foo", "fail": fail})
worker.data_store.add_job(job)
event.wait(5)
@@ -182,13 +196,13 @@ class TestSyncWorker:
# Then the task was added
received_event = received_events.pop(0)
assert isinstance(received_event, TaskAdded)
- assert received_event.task_id == 'task_id'
+ assert received_event.task_id == "task_id"
# Then a job was added
received_event = received_events.pop(0)
assert isinstance(received_event, JobAdded)
assert received_event.job_id == job.id
- assert received_event.task_id == 'task_id'
+ assert received_event.task_id == "task_id"
assert received_event.schedule_id is None
# Then the job was started
@@ -227,10 +241,13 @@ class TestSyncWorker:
worker = Worker(data_store)
worker.events.subscribe(listener)
with worker:
- worker.data_store.add_task(Task(id='task_id', func=fail_func))
- job = Job(task_id='task_id', schedule_id='foo',
- scheduled_fire_time=scheduled_start_time,
- start_deadline=datetime(2020, 9, 14, 1, tzinfo=timezone.utc))
+ worker.data_store.add_task(Task(id="task_id", func=fail_func))
+ job = Job(
+ task_id="task_id",
+ schedule_id="foo",
+ scheduled_fire_time=scheduled_start_time,
+ start_deadline=datetime(2020, 9, 14, 1, tzinfo=timezone.utc),
+ )
worker.data_store.add_job(job)
event.wait(3)
@@ -241,14 +258,14 @@ class TestSyncWorker:
# Then the task was added
received_event = received_events.pop(0)
assert isinstance(received_event, TaskAdded)
- assert received_event.task_id == 'task_id'
+ assert received_event.task_id == "task_id"
# Then a job was added
received_event = received_events.pop(0)
assert isinstance(received_event, JobAdded)
assert received_event.job_id == job.id
- assert received_event.task_id == 'task_id'
- assert received_event.schedule_id == 'foo'
+ assert received_event.task_id == "task_id"
+ assert received_event.schedule_id == "foo"
# The worker acquired the job
received_event = received_events.pop(0)