def setup_backend(self, config): self.redis = RedisManager.from_config(config['redis_manager']) self.riak = RiakManager.from_config(config['riak_manager']) # this prefix is hard coded in VumiApi self.tagpool = TagpoolManager( self.redis.sub_manager('tagpool_store')) self.api = VumiApi(self.riak, self.redis)
def from_config_sync(cls, config, amqp_client=None): riak_config, redis_config = cls._parse_config(config) manager = RiakManager.from_config(riak_config) redis = RedisManager.from_config(redis_config) sender = SyncMessageSender(amqp_client) metric_publisher = None if amqp_client is not None: metric_publisher = amqp_client.get_metric_publisher() return cls(manager, redis, sender, metric_publisher)
class TestModelOnRiak(TestModelOnTxRiak): def setUp(self): try: from vumi.persist.riak_manager import RiakManager except ImportError, e: import_skip(e, 'riak') self.manager = RiakManager.from_config({'bucket_prefix': 'test.'}) self.manager.purge_all()
class TestModelOnRiak(VumiTestCase, ModelTestMixin): def setUp(self): try: from vumi.persist.riak_manager import RiakManager except ImportError, e: import_skip(e, 'riak') self.manager = RiakManager.from_config({'bucket_prefix': 'test.'}) self.add_cleanup(self.cleanup_manager) self.manager.purge_all()
class TestRiakManager(CommonRiakManagerTests, VumiTestCase): """Most tests are inherited from the CommonRiakManagerTests mixin.""" def setUp(self): try: from vumi.persist.riak_manager import ( RiakManager, flatten_generator) except ImportError, e: import_skip(e, 'riak') self.call_decorator = flatten_generator self.manager = RiakManager.from_config({'bucket_prefix': 'test.'}) self.add_cleanup(self.manager.purge_all) self.manager.purge_all()
def get_riak_manager(self, riak_config): return RiakManager.from_config(riak_config)
Creates a manager, purges all the riak data with it, then closes it. """ manager = self.create_riak_manager() manager.purge_all() manager.close_manager() def create_riak_manager(self): """ Creates and returns a RiakManager, handling cleanup. """ try: from vumi.persist.riak_manager import RiakManager except ImportError, e: import_skip(e, 'riak', 'riak') self.add_cleanup(self.purge_riak) return RiakManager.from_config({'bucket_prefix': 'test.'}) def test_from_config(self): manager_cls = self.manager.__class__ manager = manager_cls.from_config({'bucket_prefix': 'test.'}) self.assertEqual(manager.__class__, manager_cls) self.assertEqual(manager.load_bunch_size, manager.DEFAULT_LOAD_BUNCH_SIZE) self.assertEqual(manager.mapreduce_timeout, manager.DEFAULT_MAPREDUCE_TIMEOUT) def test_from_config_with_bunch_size(self): manager_cls = self.manager.__class__ manager = manager_cls.from_config({ 'bucket_prefix': 'test.', 'load_bunch_size': 10,
class ModelFieldTestsDecorator(object): """ Class decorator for replacing `@needs_riak`-marked test methods with two wrapped versions, one for each Riak manager. This is used here instead of the more usual mechanism of a mixin and two subclasses because we have a lot of small test classes which have several test methods that don't need Riak. """ def __call__(deco, cls): """ Find all methods on the the given class that are marked with `@needs_riak` and replace them with wrapped versions for both RiakManager and TxRiakManager. """ # We can't use `inspect.getmembers()` because of a bug in Python 2.6 # around empty slots: http://bugs.python.org/issue1162154 needs_riak_methods = [] for member_name in dir(cls): # If the class has an empty slot (`__provides__` from # zope.interface, in this case) we get a name for a member that # does not exist. member = getattr(cls, member_name, None) if getattr(member, "needs_riak", False): needs_riak_methods.append((member_name, member)) for name, meth in needs_riak_methods: delattr(cls, name) setattr(cls, name + "__on_riak", deco.wrap_riak_setup(meth)) setattr(cls, name + "__on_txriak", deco.wrap_txriak_setup(meth)) return cls def wrap_riak_setup(deco, meth): """ Return a wrapper around `meth` that sets up a RiakManager. """ @wraps(meth) def wrapper(self): deco.setup_riak(self) return meth(self) return wrapper def wrap_txriak_setup(deco, meth): """ Return a wrapper around `meth` that sets up a TxRiakManager. """ @wraps(meth) def wrapper(self): d = deco.setup_txriak(self) return d.addCallback(lambda _: meth(self)) return wrapper def setup_riak(deco, self): """ Set up a RiakManager on the given test class. """ try: from vumi.persist.riak_manager import RiakManager except ImportError, e: import_skip(e, 'riak') self.manager = RiakManager.from_config({'bucket_prefix': 'test.'}) self.add_cleanup(deco.cleanup_manager, self) self.manager.purge_all()
def get_account_store(): return AccountStore(RiakManager.from_config( settings.VUMI_API_CONFIG['riak_manager']))
def _get_async_riak_manager(self, config): try: from vumi.persist.txriak_manager import TxRiakManager except ImportError, e: import_skip(e, 'riak') return TxRiakManager.from_config(config) def _get_sync_riak_manager(self, config): try: from vumi.persist.riak_manager import RiakManager except ImportError, e: import_skip(e, 'riak') return RiakManager.from_config(config) def get_redis_manager(self, config=None): if config is None: config = self._persist_config['redis_manager'].copy() if self.sync_persistence: return self._get_sync_redis_manager(config) return self._get_async_redis_manager(config) def _get_async_redis_manager(self, config): from vumi.persist.txredis_manager import TxRedisManager return TxRedisManager.from_config(config) def _get_sync_redis_manager(self, config):
Creates a manager, purges all the riak data with it, then closes it. """ manager = self.create_riak_manager() manager.purge_all() manager.close_manager() def create_riak_manager(self): """ Creates and returns a RiakManager, handling cleanup. """ try: from vumi.persist.riak_manager import RiakManager except ImportError, e: import_skip(e, 'riak', 'riak') self.add_cleanup(self.purge_riak) return RiakManager.from_config({'bucket_prefix': 'test.'}) def test_from_config(self): manager_cls = self.manager.__class__ manager = manager_cls.from_config({'bucket_prefix': 'test.'}) self.assertEqual(manager.__class__, manager_cls) self.assertEqual(manager.load_bunch_size, manager.DEFAULT_LOAD_BUNCH_SIZE) self.assertEqual(manager.mapreduce_timeout, manager.DEFAULT_MAPREDUCE_TIMEOUT) def test_from_config_with_bunch_size(self): manager_cls = self.manager.__class__ manager = manager_cls.from_config({'bucket_prefix': 'test.', 'load_bunch_size': 10, })