X-Git-Url: https://git.arvados.org/arvados.git/blobdiff_plain/0a1c109684c62f0bc42e7dca30319fc8222dbef7..f04cfcce18c6e4bd1faf3140ccbc835328580024:/services/nodemanager/tests/test_failure.py diff --git a/services/nodemanager/tests/test_failure.py b/services/nodemanager/tests/test_failure.py index b7127fc2bb..35605fcd8c 100644 --- a/services/nodemanager/tests/test_failure.py +++ b/services/nodemanager/tests/test_failure.py @@ -2,7 +2,9 @@ from __future__ import absolute_import, print_function +import errno import logging +import threading import unittest import mock @@ -10,21 +12,28 @@ import pykka from . import testutil -import arvnodeman.fullstopactor +import arvnodeman.baseactor + +class BogusActor(arvnodeman.baseactor.BaseNodeManagerActor): + def __init__(self, e): + super(BogusActor, self).__init__() + self.exp = e -class BogusActor(arvnodeman.fullstopactor.FullStopActor): def doStuff(self): - raise MemoryError + raise self.exp class ActorUnhandledExceptionTest(unittest.TestCase): - def test1(self): + def test_fatal_error(self): + for e in (MemoryError(), threading.ThreadError(), OSError(errno.ENOMEM, "")): + with mock.patch('os.killpg') as killpg_mock: + act = BogusActor.start(e).tell_proxy() + act.doStuff() + act.actor_ref.stop(block=True) + self.assertTrue(killpg_mock.called) + + def test_nonfatal_error(self): with mock.patch('os.killpg') as killpg_mock: - act = BogusActor.start() - act.tell({ - 'command': 'pykka_call', - 'attr_path': ("doStuff",), - 'args': [], - 'kwargs': {} - }) - act.stop(block=True) - self.assertTrue(killpg_mock.called) + act = BogusActor.start(OSError(errno.ENOENT, "")).tell_proxy() + act.doStuff() + act.actor_ref.stop(block=True) + self.assertFalse(killpg_mock.called)