def test_setup_logger_no_handlers_file(self, *args): tempfile = mktemp(suffix='unittest', prefix='celery') _open = ('builtins.open' if sys.version_info[0] == 3 else '__builtin__.open') with patch(_open) as osopen: with mock.restore_logging(): files = defaultdict(StringIO) def open_file(filename, *args, **kwargs): f = files[filename] f.fileno = Mock() f.fileno.return_value = 99 return f osopen.side_effect = open_file l = self.get_logger() l.handlers = [] l = self.setup_logger( logfile=tempfile, loglevel=logging.INFO, root=False, ) assert isinstance( get_logger_handlers(l)[0], logging.FileHandler) assert tempfile in files
def test_logs_errors(self, logger): b = MockBeat( app=self.app, redirect_stdouts=False, socket_timeout=None, ) b.install_sync_handler = Mock('beat.install_sync_handler') b.install_sync_handler.side_effect = RuntimeError('xxx') with mock.restore_logging(): with pytest.raises(RuntimeError): b.start_scheduler() logger.critical.assert_called()
def test_pdeath_sig(self, _set_pdeathsig, set_mp_process_title): with mock.restore_logging(): from celery import signals on_worker_process_init = Mock() signals.worker_process_init.connect(on_worker_process_init) from celery.concurrency.prefork import process_initializer with self.Celery(loader=self.Loader) as app: app.conf = AttributeDict(DEFAULTS) process_initializer(app, 'awesome.worker.com') _set_pdeathsig.assert_called_once_with('SIGKILL')
def test_process_initializer(self, set_mp_process_title, _signals): with mock.restore_logging(): from celery import signals from celery._state import _tls from celery.concurrency.prefork import ( process_initializer, WORKER_SIGRESET, WORKER_SIGIGNORE, ) on_worker_process_init = Mock() signals.worker_process_init.connect(on_worker_process_init) def Loader(*args, **kwargs): loader = Mock(*args, **kwargs) loader.conf = {} loader.override_backends = {} return loader with self.Celery(loader=Loader) as app: app.conf = AttributeDict(DEFAULTS) process_initializer(app, 'awesome.worker.com') _signals.ignore.assert_any_call(*WORKER_SIGIGNORE) _signals.reset.assert_any_call(*WORKER_SIGRESET) assert app.loader.init_worker.call_count on_worker_process_init.assert_called() assert _tls.current_app is app set_mp_process_title.assert_called_with( 'celeryd', hostname='awesome.worker.com', ) with patch('celery.app.trace.setup_worker_optimizations') as S: os.environ['FORKED_BY_MULTIPROCESSING'] = '1' try: process_initializer(app, 'luke.worker.com') S.assert_called_with(app, 'luke.worker.com') finally: os.environ.pop('FORKED_BY_MULTIPROCESSING', None) os.environ['CELERY_LOG_FILE'] = 'worker%I.log' app.log.setup = Mock(name='log_setup') try: process_initializer(app, 'luke.worker.com') finally: os.environ.pop('CELERY_LOG_FILE', None)