From a49da03d132717f8593037483161e079e80f7bd0 Mon Sep 17 00:00:00 2001 From: Gagan Trivedi Date: Fri, 31 Oct 2025 12:17:57 +0530 Subject: [PATCH] fix: reduce sleep time in timeout tests and add elapsed time checks - Changed sleep duration from 1000s (16 minutes) to 10s in both timeout tests - Added elapsed time assertions to verify tests complete within 2 seconds - Prevents CI jobs from hanging due to background threads sleeping for too long - Ensures tests verify that the calling thread returns immediately after timeout --- .../test_unit_task_processor_processor.py | 25 ++++++++++++++++--- 1 file changed, 21 insertions(+), 4 deletions(-) diff --git a/tests/unit/task_processor/test_unit_task_processor_processor.py b/tests/unit/task_processor/test_unit_task_processor_processor.py index a78d3400..e6691646 100644 --- a/tests/unit/task_processor/test_unit_task_processor_processor.py +++ b/tests/unit/task_processor/test_unit_task_processor_processor.py @@ -115,15 +115,23 @@ def test_run_task_kills_task_after_timeout( task = Task.create( sleep_task.task_identifier, scheduled_for=timezone.now(), - args=(1000,), + args=(10,), # Sleep for 10 seconds timeout=timedelta(microseconds=1), ) task.save(using=current_database) # When + start_time = time.time() task_runs = run_tasks(current_database) + elapsed_time = time.time() - start_time + + # Then - the function should return quickly (within ~2 seconds) + # Not block for 10 seconds waiting for the worker thread + assert elapsed_time < 2.0, ( + f"run_tasks blocked for {elapsed_time:.2f} seconds, " + "indicating it's waiting for the worker thread to finish" + ) - # Then assert ( len(task_runs) == TaskRun.objects.using(current_database).filter(task=task).count() @@ -160,17 +168,26 @@ def test_run_recurring_task_kills_task_after_timeout( run_every=timedelta(seconds=1), timeout=timedelta(microseconds=1) ) def _dummy_recurring_task() -> None: - time.sleep(1000) + time.sleep(10) # Sleep for 10 seconds initialise() task = RecurringTask.objects.using(current_database).get( task_identifier="test_unit_task_processor_processor._dummy_recurring_task", ) + # When + start_time = time.time() task_runs = run_recurring_tasks(current_database) + elapsed_time = time.time() - start_time + + # Then - the function should return quickly (within ~2 seconds) + # Not block for 10 seconds waiting for the worker thread + assert elapsed_time < 2.0, ( + f"run_recurring_tasks blocked for {elapsed_time:.2f} seconds, " + "indicating it's waiting for the worker thread to finish" + ) - # Then assert ( len(task_runs) == RecurringTaskRun.objects.using(current_database).filter(task=task).count()