예제 #1
0
파일: service.py 프로젝트: lubidl0/cinder-1
    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()
예제 #2
0
 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)
예제 #3
0
 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)
예제 #4
0
 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()
예제 #5
0
    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)
예제 #6
0
 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()
예제 #7
0
 def _handle_signal(self):
     signal_handler = service.SignalHandler()
     signal_handler.add_handler('SIGTERM', self._handle_sigterm)
     signal_handler.add_handler('SIGHUP', self._handle_sighup)