def __init__(self): self._processutils = os_win_utilsfactory.get_processutils() self._workers = [] self._worker_job_handles = [] self._signal_handler = service.SignalHandler() self._add_signal_handlers()
def test_setup_signal_interruption_select_poll(self): # NOTE(claudiub): SignalHandler is a singleton, which means that it # might already be initialized. We need to clear to clear the cache # in order to prevent race conditions between tests. service.SignalHandler.__class__._instances.clear() signal_handler = service.SignalHandler() self.addCleanup(service.SignalHandler.__class__._instances.clear) self.assertTrue( signal_handler._SignalHandler__force_interrupt_on_signal)
def test_setup_signal_interruption_no_select_poll(self): # NOTE(claudiub): SignalHandler is a singleton, which means that it # might already be initialized. We need to clear to clear the cache # in order to prevent race conditions between tests. service.SignalHandler.__class__._instances.clear() with mock.patch('eventlet.patcher.original', return_value=object()) as get_original: signal_handler = service.SignalHandler() get_original.assert_called_with('select') self.addCleanup(service.SignalHandler.__class__._instances.clear) self.assertFalse( signal_handler._SignalHandler__force_interrupt_on_signal)
def test__handle_signals(self): signal_handler = service.SignalHandler() signal_handler.clear() self.assertEqual(0, len(signal_handler._signal_handlers[signal.SIGTERM])) call_1, call_2 = mock.Mock(), mock.Mock() signal_handler.add_handler('SIGTERM', call_1) signal_handler.add_handler('SIGTERM', call_2) self.assertEqual(2, len(signal_handler._signal_handlers[signal.SIGTERM])) signal_handler._handle_signals(signal.SIGTERM, 'test') for m in signal_handler._signal_handlers[signal.SIGTERM]: m.assert_called_once_with(signal.SIGTERM, 'test') signal_handler.clear()
def __init__(self, conf): # Add SIGALARM to ignore_signals, because core # uses SIGALRM for watchdog, while oslo uses the # same for exit. # Signal handler is singleton class, changing here will # have global effect. self.signal_handler = oslo_service.SignalHandler() self.signal_handler._ignore_signals += ('SIGALRM', ) self.signal_handler._signals_by_name = dict( (name, getattr(signal, name)) for name in dir(signal) if name.startswith("SIG") and name not in self.signal_handler._ignore_signals) super(NfpLauncher, self).__init__(conf)
def test__handle_signal(self): signal_handler = service.SignalHandler() signal_handler.clear() self.assertEqual(0, len(signal_handler._signal_handlers[signal.SIGTERM])) call_1, call_2 = mock.Mock(), mock.Mock() signal_handler.add_handler('SIGTERM', call_1) signal_handler.add_handler('SIGTERM', call_2) self.assertEqual(2, len(signal_handler._signal_handlers[signal.SIGTERM])) signal_handler._handle_signal(signal.SIGTERM, 'test') # execute pending eventlet callbacks time.sleep(0) for m in signal_handler._signal_handlers[signal.SIGTERM]: m.assert_called_once_with(signal.SIGTERM, 'test') signal_handler.clear()
def _handle_signal(self): signal_handler = service.SignalHandler() signal_handler.add_handler('SIGTERM', self._handle_sigterm) signal_handler.add_handler('SIGHUP', self._handle_sighup)