@@ -34,12 +34,25 @@ def failing_task(job):
3434 raise Exception ("uh oh" )
3535
3636
37+ def pre_task_hook (job ):
38+ job .workspace ["output" ] = "pre task hook ran"
39+ job .workspace ["job_id" ] = str (job .id )
40+
41+
42+ def post_task_hook (job ):
43+ job .workspace ["output" ] = "post task hook ran"
44+ job .workspace ["job_id" ] = str (job .id )
45+
46+
3747def failure_hook (job , exception ):
3848 job .workspace ["output" ] = "failure hook ran"
49+ job .workspace ["exception" ] = str (exception )
50+ job .workspace ["job_id" ] = str (job .id )
3951
4052
4153def creation_hook (job ):
4254 job .workspace ["output" ] = "creation hook ran"
55+ job .workspace ["job_id" ] = str (job .id )
4356
4457
4558@override_settings (JOBS = {"testjob" : {"tasks" : ["a" ]}})
@@ -316,6 +329,7 @@ def test_creation_hook(self):
316329 job = Job .objects .create (name = "testjob" )
317330 job = Job .objects .get ()
318331 self .assertEqual (job .workspace ["output" ], "creation hook ran" )
332+ self .assertEqual (job .workspace ["job_id" ], str (job .id ))
319333
320334 def test_creation_hook_only_runs_on_create (self ):
321335 job = Job .objects .create (name = "testjob" )
@@ -326,6 +340,42 @@ def test_creation_hook_only_runs_on_create(self):
326340 self .assertEqual (job .workspace ["output" ], "creation hook output removed" )
327341
328342
343+ @override_settings (
344+ JOBS = {
345+ "testjob" : {
346+ "tasks" : ["django_dbq.tests.failing_task" ],
347+ "pre_task_hook" : "django_dbq.tests.pre_task_hook" ,
348+ }
349+ }
350+ )
351+ class JobPreTaskHookTestCase (TestCase ):
352+ def test_pre_task_hook (self ):
353+ job = Job .objects .create (name = "testjob" )
354+ Worker ("default" , 1 )._process_job ()
355+ job = Job .objects .get ()
356+ self .assertEqual (job .state , Job .STATES .FAILED )
357+ self .assertEqual (job .workspace ["output" ], "failure hook ran" )
358+ self .assertEqual (job .workspace ["job_id" ], str (job .id ))
359+
360+
361+ @override_settings (
362+ JOBS = {
363+ "testjob" : {
364+ "tasks" : ["django_dbq.tests.failing_task" ],
365+ "post_task_hook" : "django_dbq.tests.post_task_hook" ,
366+ }
367+ }
368+ )
369+ class JobPostTaskHookTestCase (TestCase ):
370+ def test_post_task_hook (self ):
371+ job = Job .objects .create (name = "testjob" )
372+ Worker ("default" , 1 )._process_job ()
373+ job = Job .objects .get ()
374+ self .assertEqual (job .state , Job .STATES .FAILED )
375+ self .assertEqual (job .workspace ["output" ], "post task hook ran" )
376+ self .assertEqual (job .workspace ["job_id" ], str (job .id ))
377+
378+
329379@override_settings (
330380 JOBS = {
331381 "testjob" : {
@@ -341,6 +391,8 @@ def test_failure_hook(self):
341391 job = Job .objects .get ()
342392 self .assertEqual (job .state , Job .STATES .FAILED )
343393 self .assertEqual (job .workspace ["output" ], "failure hook ran" )
394+ self .assertIn ("uh oh" , job .workspace ["exception" ])
395+ self .assertEqual (job .workspace ["job_id" ], str (job .id ))
344396
345397
346398@override_settings (JOBS = {"testjob" : {"tasks" : ["a" ]}})
0 commit comments