def test_init_no_cassandra(self, *modules): # should raise ImproperlyConfigured when no python-driver # installed. from celery.backends import cassandra as mod prev, mod.cassandra = mod.cassandra, None try: with pytest.raises(ImproperlyConfigured): mod.CassandraBackend(app=self.app) finally: mod.cassandra = prev
def test_init_with_and_without_LOCAL_QUROM(self): with mock_module("pycassa"): from celery.backends import cassandra as mod mod.pycassa = Mock() cons = mod.pycassa.ConsistencyLevel = Object() cons.LOCAL_QUORUM = "foo" app = self.get_app() app.conf.CASSANDRA_READ_CONSISTENCY = "LOCAL_FOO" app.conf.CASSANDRA_WRITE_CONSISTENCY = "LOCAL_FOO" mod.CassandraBackend(app=app) cons.LOCAL_FOO = "bar" mod.CassandraBackend(app=app) # no servers raises ImproperlyConfigured with self.assertRaises(ImproperlyConfigured): app.conf.CASSANDRA_SERVERS = None mod.CassandraBackend(app=app, keyspace="b", column_family="c")
def test_store_result(self): with mock_module(*CASSANDRA_MODULES): from celery.backends import cassandra as mod mod.cassandra = Mock() x = mod.CassandraBackend(app=self.app) x._connection = True session = x._session = Mock() session.execute = Mock() x._store_result('task_id', 'result', states.SUCCESS)
def test_get_column_family(self): with mock_module('pycassa'): from celery.backends import cassandra as mod mod.pycassa = Mock() install_exceptions(mod.pycassa) app = self.get_app() x = mod.CassandraBackend(app=app) self.assertTrue(x._get_column_family()) self.assertIsNotNone(x._column_family) self.assertIs(x._get_column_family(), x._column_family)
def test_process_cleanup(self): with mock_module('pycassa'): from celery.backends import cassandra as mod x = mod.CassandraBackend(app=self.app) x._column_family = None x.process_cleanup() x._column_family = True x.process_cleanup() self.assertIsNone(x._column_family)
def test_init_no_cassandra(self): """should raise ImproperlyConfigured when no python-driver installed.""" with mock_module(*CASSANDRA_MODULES): from celery.backends import cassandra as mod prev, mod.cassandra = mod.cassandra, None try: with self.assertRaises(ImproperlyConfigured): mod.CassandraBackend(app=self.app) finally: mod.cassandra = prev
def test_init_with_and_without_LOCAL_QUROM(self): with mock_module('pycassa'): from celery.backends import cassandra as mod mod.pycassa = Mock() install_exceptions(mod.pycassa) cons = mod.pycassa.ConsistencyLevel = Object() cons.LOCAL_QUORUM = 'foo' app = self.get_app() app.conf.CASSANDRA_READ_CONSISTENCY = 'LOCAL_FOO' app.conf.CASSANDRA_WRITE_CONSISTENCY = 'LOCAL_FOO' mod.CassandraBackend(app=app) cons.LOCAL_FOO = 'bar' mod.CassandraBackend(app=app) # no servers raises ImproperlyConfigured with self.assertRaises(ImproperlyConfigured): app.conf.CASSANDRA_SERVERS = None mod.CassandraBackend(app=app, keyspace='b', column_family='c')
def test_options(self): # Ensure valid options works properly from celery.backends import cassandra as mod mod.cassandra = Mock() # Valid options self.app.conf.cassandra_options = { 'cql_version': '3.2.1', 'protocol_version': 3 } mod.CassandraBackend(app=self.app)
def test_init_with_and_without_LOCAL_QUROM(self, *modules): from celery.backends import cassandra as mod mod.cassandra = Mock() cons = mod.cassandra.ConsistencyLevel = Bunch( LOCAL_QUORUM='foo', ) self.app.conf.cassandra_read_consistency = 'LOCAL_FOO' self.app.conf.cassandra_write_consistency = 'LOCAL_FOO' mod.CassandraBackend(app=self.app) cons.LOCAL_FOO = 'bar' mod.CassandraBackend(app=self.app) # no servers raises ImproperlyConfigured with pytest.raises(ImproperlyConfigured): self.app.conf.cassandra_servers = None mod.CassandraBackend( app=self.app, keyspace='b', column_family='c', )
def test_init_with_and_without_LOCAL_QUROM(self): with mock_module('pycassa'): from celery.backends import cassandra as mod mod.pycassa = Mock() install_exceptions(mod.pycassa) cons = mod.pycassa.ConsistencyLevel = Object() cons.LOCAL_QUORUM = 'foo' self.app.conf.cassandra_read_consistency = 'LOCAL_FOO' self.app.conf.cassandra_write_consistency = 'LOCAL_FOO' mod.CassandraBackend(app=self.app) cons.LOCAL_FOO = 'bar' mod.CassandraBackend(app=self.app) # no servers raises ImproperlyConfigured with self.assertRaises(ImproperlyConfigured): self.app.conf.cassandra_servers = None mod.CassandraBackend( app=self.app, keyspace='b', column_family='c', )
def test_auth_provider(self): # Ensure valid auth_provider works properly, and invalid one raises # ImproperlyConfigured exception. from celery.backends import cassandra as mod class DummyAuth(object): ValidAuthProvider = Mock() mod.cassandra = Mock() mod.cassandra.auth = DummyAuth # Valid auth_provider self.app.conf.cassandra_auth_provider = 'ValidAuthProvider' self.app.conf.cassandra_auth_kwargs = {'username': '******'} mod.CassandraBackend(app=self.app) # Invalid auth_provider self.app.conf.cassandra_auth_provider = 'SpiderManAuth' self.app.conf.cassandra_auth_kwargs = {'username': '******'} with pytest.raises(ImproperlyConfigured): mod.CassandraBackend(app=self.app)
def test_auth_provider(self): """Ensure valid auth_provider works properly, and invalid one raises ImproperlyConfigured exception.""" class DummyAuth(object): ValidAuthProvider = Mock() with mock_module(*CASSANDRA_MODULES): from celery.backends import cassandra as mod mod.cassandra = Mock() mod.cassandra.auth = DummyAuth # Valid auth_provider self.app.conf.cassandra_auth_provider = 'ValidAuthProvider' self.app.conf.cassandra_auth_kwargs = {'username': '******'} mod.CassandraBackend(app=self.app) # Invalid auth_provider self.app.conf.cassandra_auth_provider = 'SpiderManAuth' self.app.conf.cassandra_auth_kwargs = {'username': '******'} with self.assertRaises(ImproperlyConfigured): mod.CassandraBackend(app=self.app)
def test_store_result(self): with mock_module("pycassa"): from celery.backends import cassandra as mod mod.pycassa = Mock() mod.Thrift = Mock() app = self.get_app() x = mod.CassandraBackend(app=app) Get_Column = x._get_column_family = Mock() cf = Get_Column.return_value = Mock() x.detailed_mode = False x._store_result("task_id", "result", states.SUCCESS) self.assertTrue(cf.insert.called) cf.insert.reset() x.detailed_mode = True x._store_result("task_id", "result", states.SUCCESS) self.assertTrue(cf.insert.called)
def test_get_task_meta_for(self, *modules): from celery.backends import cassandra as mod mod.cassandra = Mock() x = mod.CassandraBackend(app=self.app) x._connection = True session = x._session = Mock() execute = session.execute = Mock() execute.return_value = [ [states.SUCCESS, '1', datetime.now(), b'', b''] ] x.decode = Mock() meta = x._get_task_meta_for('task_id') assert meta['status'] == states.SUCCESS x._session.execute.return_value = [] meta = x._get_task_meta_for('task_id') assert meta['status'] == states.PENDING
def test_store_result(self): with mock_module('pycassa'): from celery.backends import cassandra as mod mod.pycassa = Mock() install_exceptions(mod.pycassa) mod.Thrift = Mock() install_exceptions(mod.Thrift) x = mod.CassandraBackend(app=self.app) Get_Column = x._get_column_family = Mock() cf = Get_Column.return_value = Mock() x.detailed_mode = False x._store_result('task_id', 'result', states.SUCCESS) self.assertTrue(cf.insert.called) cf.insert.reset() x.detailed_mode = True x._store_result('task_id', 'result', states.SUCCESS) self.assertTrue(cf.insert.called)
def test_get_task_meta_for(self): with mock_module(*CASSANDRA_MODULES): from celery.backends import cassandra as mod mod.cassandra = Mock() x = mod.CassandraBackend(app=self.app) x._connection = True session = x._session = Mock() execute = session.execute = Mock() execute.return_value = [ [states.SUCCESS, '1', datetime.now(), b'', b''] ] x.decode = Mock() meta = x._get_task_meta_for('task_id') self.assertEqual(meta['status'], states.SUCCESS) x._session.execute.return_value = [] meta = x._get_task_meta_for('task_id') self.assertEqual(meta['status'], states.PENDING)
def test_get_task_meta_for(self, module): from celery.backends import cassandra as mod mod.cassandra = Mock() x = mod.CassandraBackend(app=self.app) session = x._session = Mock() execute = session.execute = Mock() result_set = Mock() result_set.one.return_value = [ states.SUCCESS, '1', datetime.now(), b'', b'' ] execute.return_value = result_set x.decode = Mock() meta = x._get_task_meta_for('task_id') assert meta['status'] == states.SUCCESS result_set.one.return_value = [] x._session.execute.return_value = result_set meta = x._get_task_meta_for('task_id') assert meta['status'] == states.PENDING
def test_init_session(self): # Tests behavior when Cluster.connect works properly from celery.backends import cassandra as mod class DummyCluster(object): def __init__(self, *args, **kwargs): pass def connect(self, *args, **kwargs): return Mock() mod.cassandra = Mock() mod.cassandra.cluster = Mock() mod.cassandra.cluster.Cluster = DummyCluster x = mod.CassandraBackend(app=self.app) assert x._session is None x._get_connection(write=True) assert x._session is not None s = x._session x._get_connection() assert s is x._session