Skip to content

Commit f0b27b7

Browse files
committed
Adding tests for calling sys.exit() from job's perform method. (Currently failing)
1 parent eb2cbf2 commit f0b27b7

File tree

2 files changed

+34
-1
lines changed

2 files changed

+34
-1
lines changed

tests/__init__.py

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -56,6 +56,15 @@ def perform():
5656
ctypes.string_at(1)
5757
return "Never got here"
5858

59+
class PrematureExitJob(object):
60+
queue = 'basic'
61+
62+
@staticmethod
63+
def perform(exit_code):
64+
import sys
65+
sys.exit(exit_code)
66+
return "Never got here"
67+
5968
class TestProcess(object):
6069
queue = 'high'
6170

tests/test_worker.py

Lines changed: 25 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
from tests import PyResTests, Basic, TestProcess, ErrorObject, RetryOnExceptionJob, TimeoutJob, CrashJob
1+
from tests import PyResTests, Basic, TestProcess, ErrorObject, RetryOnExceptionJob, TimeoutJob, CrashJob, PrematureExitJob
22
from pyres import ResQ
33
from pyres.job import Job
44
from pyres.scheduler import Scheduler
@@ -224,6 +224,30 @@ def test_detect_crashed_workers_as_failures(self):
224224
assert worker.job() == {}
225225
assert worker.get_failed() == 1
226226

227+
def test_detect_non_0_sys_exit_as_failure(self):
228+
worker = Worker(['basic'])
229+
self.resq.enqueue(PrematureExitJob, 9)
230+
231+
assert worker.job() == {}
232+
assert worker.get_failed() == 0
233+
234+
worker.fork_worker(worker.reserve())
235+
236+
assert worker.job() == {}
237+
assert worker.get_failed() == 1
238+
239+
def test_detect_code_0_sys_exit_as_success(self):
240+
worker = Worker(['basic'])
241+
self.resq.enqueue(PrematureExitJob, 0)
242+
243+
assert worker.job() == {}
244+
assert worker.get_failed() == 0
245+
246+
worker.fork_worker(worker.reserve())
247+
248+
assert worker.job() == {}
249+
assert worker.get_failed() == 0
250+
227251
def test_retries_give_up_eventually(self):
228252
now = datetime.datetime.now()
229253
self.set_current_time(now)

0 commit comments

Comments
 (0)