def test_no_implementations(self): with mock.mask_modules('pylibmc', 'memcache'): with mock.reset_modules('celery.backends.cache'): from celery.backends import cache cache._imp = [None] with self.assertRaises(ImproperlyConfigured): cache.get_best_memcache()
def test_memcache(self): with self.mock_memcache(): with mock.reset_modules('celery.backends.cache'): with mock.mask_modules('pylibmc'): from celery.backends import cache cache._imp = [None] self.assertEqual(cache.get_best_memcache()[0]().__module__, 'memcache')
def test_no_cpickle(self): prev = sys.modules.pop('celery.utils.serialization', None) try: with mock.mask_modules('cPickle'): from celery.utils.serialization import pickle import pickle as orig_pickle self.assertIs(pickle.dumps, orig_pickle.dumps) finally: sys.modules['celery.utils.serialization'] = prev
def test_memcache_bytes_key(self): with self.mock_memcache(): with mock.reset_modules('celery.backends.cache'): with mock.mask_modules('pylibmc'): from celery.backends import cache cache._imp = [None] task_id, result = str_to_bytes(uuid()), 42 b = cache.CacheBackend(backend='memcache', app=self.app) b.store_result(task_id, result, state=states.SUCCESS) self.assertEqual(b.get_result(task_id), result)
def test_sqlite_errors(self): with mock.patch_modules('sqlite3'): import sqlite3 as mod mod.DatabaseError = Mock() mod.InterfaceError = Mock() mod.OperationalError = Mock() with self.fixup_context(self.app) as (f, _, _): self.assertIn(mod.DatabaseError, f.database_errors) self.assertIn(mod.InterfaceError, f.database_errors) self.assertIn(mod.OperationalError, f.database_errors) with mock.mask_modules('sqlite3'): with self.fixup_context(self.app): pass
def test_fixup(self): with patch('celery.fixups.django.DjangoFixup') as Fixup: with patch.dict(os.environ, DJANGO_SETTINGS_MODULE=''): fixup(self.app) self.assertFalse(Fixup.called) with patch.dict(os.environ, DJANGO_SETTINGS_MODULE='settings'): with mock.mask_modules('django'): with self.assertWarnsRegex(UserWarning, 'but Django is'): fixup(self.app) self.assertFalse(Fixup.called) with mock.module_exists('django'): fixup(self.app) self.assertTrue(Fixup.called)
def test_oracle_errors(self): with mock.module_exists('cx_Oracle'): import cx_Oracle as mod mod.DatabaseError = Mock() mod.InterfaceError = Mock() mod.OperationalError = Mock() with self.fixup_context(self.app) as (f, _, _): self.assertIn(mod.DatabaseError, f.database_errors) self.assertIn(mod.InterfaceError, f.database_errors) self.assertIn(mod.OperationalError, f.database_errors) with mock.mask_modules('cx_Oracle'): with self.fixup_context(self.app): pass
def test_fixup(self): with patch('celery.fixups.django.DjangoFixup') as Fixup: with patch.dict(os.environ, DJANGO_SETTINGS_MODULE=''): fixup(self.app) Fixup.assert_not_called() with patch.dict(os.environ, DJANGO_SETTINGS_MODULE='settings'): with mock.mask_modules('django'): with self.assertWarnsRegex(UserWarning, 'but Django is'): fixup(self.app) Fixup.assert_not_called() with mock.module_exists('django'): fixup(self.app) Fixup.assert_called()
def test_without_threadpool(self): with mock.mask_modules('threadpool'): with self.assertRaises(ImportError): TaskPool(app=self.app)
def test_pool_no_multiprocessing(self): with mock.mask_modules('multiprocessing.util'): pool = self.app.pool self.assertIs(pool, self.app._pool)
def test_setup_logging_subsystem_no_mputil(self): with mock.mask_modules('billiard.util'): self.app.log.setup_logging_subsystem()
def test_without_threadpool(self): with mock.mask_modules("threadpool"): with self.assertRaises(ImportError): TaskPool(app=self.app)