1
+ import json
2
+ from threading import Thread
3
+ from time import sleep
4
+
1
5
from scheduler .helpers .queues import get_queue
2
- from scheduler .tests .jobs import test_job
6
+ from scheduler .tests .jobs import test_job , two_seconds_job
7
+ from ..test_job_decorator import long_running_func
3
8
from ..test_views .base import BaseTestCase
4
- from ...redis_models import JobModel
9
+ from ...redis_models import JobModel , JobStatus , WorkerModel
5
10
from ...worker import create_worker
6
- from ...worker .commands import send_command
11
+ from ...worker .commands import send_command , StopJobCommand
7
12
from ...worker .commands .suspend_worker import SuspendWorkCommand
8
13
9
14
@@ -40,3 +45,29 @@ def test_stop_worker_command__bad_worker_name(self):
40
45
self .assertFalse (worker ._model .is_suspended )
41
46
job = JobModel .get (job .name , connection = queue .connection )
42
47
self .assertFalse (job .is_queued )
48
+
49
+ def test_stop_job_command__success (self ):
50
+ # Arrange
51
+ worker_name = "test"
52
+ queue = get_queue ("default" )
53
+ job = queue .create_and_enqueue_job (two_seconds_job )
54
+ self .assertTrue (job .is_queued )
55
+ worker = create_worker ("default" , name = worker_name , burst = True , with_scheduler = False )
56
+ worker .bootstrap ()
57
+
58
+ # Act
59
+ t = Thread (target = worker .work , args = (0 ,), name = "worker-thread" )
60
+ t .start ()
61
+ sleep (0.1 )
62
+ command = StopJobCommand (worker_name = worker_name , job_name = job .name )
63
+ command_payload = json .dumps (command .command_payload ())
64
+ worker ._command_listener .handle_payload (dict (data = command_payload ))
65
+ worker .monitor_job_execution_process (job ,queue )
66
+
67
+ # Assert
68
+ job = JobModel .get (job .name , connection = queue .connection )
69
+ worker = WorkerModel .get (worker .name , connection = queue .connection )
70
+ self .assertEqual (worker .stopped_job_name , job .name )
71
+ self .assertIsNone (worker .current_job_name )
72
+ self .assertEqual (job .status , JobStatus .STOPPED )
73
+ t .join ()
0 commit comments