Skip to content

Commit 286a948

Browse files
authored
feat(taskworker) Add test coverage for imports + schedules (#90179)
Add assertions to make sure that all import paths exist, and that all schedules are well formed. Fixes #90103
1 parent 5a6def8 commit 286a948

File tree

2 files changed

+29
-2
lines changed

2 files changed

+29
-2
lines changed

src/sentry/taskworker/workerchild.py

-2
Original file line numberDiff line numberDiff line change
@@ -133,8 +133,6 @@ def run_worker(
133133
processing_pool_name: str,
134134
process_type: str,
135135
) -> None:
136-
# print("!!!!!! STARTING WORKER !!!!!!!")
137-
138136
processed_task_count = 0
139137

140138
def handle_alarm(signum: int, frame: FrameType | None) -> None:
+29
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
from datetime import timedelta
2+
3+
from django.conf import settings
4+
5+
from sentry.conf.types.taskworker import crontab
6+
from sentry.taskworker.registry import taskregistry
7+
8+
9+
def test_import_paths():
10+
for path in settings.TASKWORKER_IMPORTS:
11+
try:
12+
__import__(path)
13+
except ImportError:
14+
raise AssertionError(f"Unable to import {path} from TASKWORKER_IMPORTS")
15+
16+
17+
def test_taskworker_schedule() -> None:
18+
for schedule_name, config in settings.TASKWORKER_SCHEDULES.items():
19+
assert config["task"], f"schedule {schedule_name} is missing a task name"
20+
(namespace, taskname) = config["task"].split(":")
21+
assert taskregistry.get_task(
22+
namespace, taskname
23+
), f"task for {schedule_name} is not registered"
24+
25+
assert config["schedule"], f"Schedule {schedule_name} is missing a schedule"
26+
schedule = config.get("schedule")
27+
assert isinstance(
28+
schedule, (timedelta, crontab)
29+
), f"Schedule {schedule_name} has a schedule of type {type(schedule)}"

0 commit comments

Comments
 (0)