Skip to content

Commit 614d067

Browse files
committed
Adding more tests for unexpected exits during the job execution.
1 parent f0b27b7 commit 614d067

File tree

2 files changed

+33
-1
lines changed

2 files changed

+33
-1
lines changed

tests/__init__.py

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -65,6 +65,14 @@ def perform(exit_code):
6565
sys.exit(exit_code)
6666
return "Never got here"
6767

68+
class PrematureHardExitJob(object):
69+
queue = 'basic'
70+
71+
@staticmethod
72+
def perform(exit_code):
73+
os._exit(exit_code)
74+
return "Never got here"
75+
6876
class TestProcess(object):
6977
queue = 'high'
7078

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, PrematureExitJob
1+
from tests import PyResTests, Basic, TestProcess, ErrorObject, RetryOnExceptionJob, TimeoutJob, CrashJob, PrematureExitJob, PrematureHardExitJob
22
from pyres import ResQ
33
from pyres.job import Job
44
from pyres.scheduler import Scheduler
@@ -248,6 +248,30 @@ def test_detect_code_0_sys_exit_as_success(self):
248248
assert worker.job() == {}
249249
assert worker.get_failed() == 0
250250

251+
def test_detect_non_0_os_exit_as_failure(self):
252+
worker = Worker(['basic'])
253+
self.resq.enqueue(PrematureHardExitJob, 9)
254+
255+
assert worker.job() == {}
256+
assert worker.get_failed() == 0
257+
258+
worker.fork_worker(worker.reserve())
259+
260+
assert worker.job() == {}
261+
assert worker.get_failed() == 1
262+
263+
def test_detect_code_0_os_exit_as_success(self):
264+
worker = Worker(['basic'])
265+
self.resq.enqueue(PrematureHardExitJob, 0)
266+
267+
assert worker.job() == {}
268+
assert worker.get_failed() == 0
269+
270+
worker.fork_worker(worker.reserve())
271+
272+
assert worker.job() == {}
273+
assert worker.get_failed() == 0
274+
251275
def test_retries_give_up_eventually(self):
252276
now = datetime.datetime.now()
253277
self.set_current_time(now)

0 commit comments

Comments
 (0)