Пример #1
0
 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)
Пример #2
0
 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)
Пример #3
0
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()
Пример #4
0
 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)
Пример #5
0
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()
Пример #6
0
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()
Пример #7
0
 def get_riak_manager(self, riak_config):
     return RiakManager.from_config(riak_config)
Пример #8
0
        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,
Пример #9
0
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()
Пример #10
0
def get_account_store():
    return AccountStore(RiakManager.from_config(
            settings.VUMI_API_CONFIG['riak_manager']))
Пример #11
0
    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):
Пример #12
0
    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):
Пример #13
0
        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,
                                           })