from __future__ import absolute_import, print_function
+import errno
import logging
+import threading
import unittest
import mock
import arvnodeman.fullstopactor
class BogusActor(arvnodeman.fullstopactor.FullStopActor):
+ def __init__(self, e):
+ super(BogusActor, self).__init__()
+ self.exp = e
+
def doStuff(self):
- raise MemoryError
+ raise self.exp
class ActorUnhandledExceptionTest(unittest.TestCase):
def test1(self):
+ for e in (MemoryError(), threading.ThreadError(), OSError(errno.ENOMEM, "")):
+ with mock.patch('os.killpg') as killpg_mock:
+ act = BogusActor.start(e)
+ act.tell({
+ 'command': 'pykka_call',
+ 'attr_path': ("doStuff",),
+ 'args': [],
+ 'kwargs': {}
+ })
+ act.stop(block=True)
+ self.assertTrue(killpg_mock.called)
+
with mock.patch('os.killpg') as killpg_mock:
- act = BogusActor.start()
+ act = BogusActor.start(OSError(errno.ENOENT, ""))
act.tell({
'command': 'pykka_call',
'attr_path': ("doStuff",),
'kwargs': {}
})
act.stop(block=True)
- self.assertTrue(killpg_mock.called)
+ self.assertFalse(killpg_mock.called)