|
@@ -260,6 +260,34 @@ class SubprocessTests(unittest.TestCase):
|
|
self.assertEqual(event1.__class__, events.ProcessStateStartingEvent)
|
|
self.assertEqual(event1.__class__, events.ProcessStateStartingEvent)
|
|
self.assertEqual(event2.__class__, events.ProcessStateBackoffEvent)
|
|
self.assertEqual(event2.__class__, events.ProcessStateBackoffEvent)
|
|
|
|
|
|
|
|
+ def test_spawn_fail_make_dispatchers_eisdir(self):
|
|
|
|
+ options = DummyOptions()
|
|
|
|
+ config = DummyPConfig(options, name='cat', command='/bin/cat',
|
|
|
|
+ stdout_logfile='/a/directory') # not a file
|
|
|
|
+ def raise_eisdir(envelope):
|
|
|
|
+ raise IOError(errno.EISDIR)
|
|
|
|
+ config.make_dispatchers = raise_eisdir
|
|
|
|
+ instance = self._makeOne(config)
|
|
|
|
+ from supervisor.states import ProcessStates
|
|
|
|
+ instance.state = ProcessStates.BACKOFF
|
|
|
|
+ from supervisor import events
|
|
|
|
+ L = []
|
|
|
|
+ events.subscribe(events.ProcessStateEvent, lambda x: L.append(x))
|
|
|
|
+ result = instance.spawn()
|
|
|
|
+ self.assertEqual(result, None)
|
|
|
|
+ self.assertEqual(instance.spawnerr,
|
|
|
|
+ "unknown error making dispatchers: EISDIR")
|
|
|
|
+ self.assertEqual(options.logger.data[0],
|
|
|
|
+ "spawnerr: unknown error making dispatchers: EISDIR")
|
|
|
|
+ self.assertTrue(instance.delay)
|
|
|
|
+ self.assertTrue(instance.backoff)
|
|
|
|
+ from supervisor.states import ProcessStates
|
|
|
|
+ self.assertEqual(instance.state, ProcessStates.BACKOFF)
|
|
|
|
+ self.assertEqual(len(L), 2)
|
|
|
|
+ event1, event2 = L
|
|
|
|
+ self.assertEqual(event1.__class__, events.ProcessStateStartingEvent)
|
|
|
|
+ self.assertEqual(event2.__class__, events.ProcessStateBackoffEvent)
|
|
|
|
+
|
|
def test_spawn_fork_fail_eagain(self):
|
|
def test_spawn_fork_fail_eagain(self):
|
|
options = DummyOptions()
|
|
options = DummyOptions()
|
|
options.fork_error = errno.EAGAIN
|
|
options.fork_error = errno.EAGAIN
|