Ejemplo n.º 1
0
class TestMessageStoreAPI(VumiTestCase):
    @inlineCallbacks
    def setUp(self):
        self.persistence_helper = self.add_helper(
            PersistenceHelper(use_riak=True))
        try:
            from vumi.components.message_store_api import (
                MatchResource, MessageStoreAPIWorker)
        except ImportError, e:
            import_skip(e, 'riakasaurus', 'riakasaurus.riak')

        self.msg_helper = self.add_helper(MessageHelper())
        self.worker_helper = self.add_helper(WorkerHelper())

        self.match_resource = MatchResource
        self.base_path = '/api/v1/'
        self.worker = yield self.worker_helper.get_worker(
            MessageStoreAPIWorker,
            self.persistence_helper.mk_config({
                'web_path': self.base_path,
                'web_port': 0,
                'health_path': '/health/',
            }))
        self.store = self.worker.store
        self.addr = self.worker.webserver.getHost()
        self.url = 'http://%s:%s%s' % (self.addr.host, self.addr.port,
                                       self.base_path)

        self.tag = ("pool", "tag")
        self.batch_id = yield self.store.batch_start([self.tag])
Ejemplo n.º 2
0
 def setUp(self):
     self.persistence_helper = self.add_helper(
         PersistenceHelper(use_riak=True))
     if riak_import_error is not None:
         import_skip(riak_import_error, 'riak')
     self.manager = self.persistence_helper.get_riak_manager()
     self.msg_helper = self.add_helper(MessageHelper())
Ejemplo n.º 3
0
class TestMessageStoreResource(VumiTestCase):
    @inlineCallbacks
    def setUp(self):
        self.persistence_helper = self.add_helper(
            PersistenceHelper(use_riak=True))
        try:
            from vumi.components.message_store_resource import (
                MessageStoreResourceWorker)
        except ImportError, e:
            import_skip(e, 'riakasaurus', 'riakasaurus.riak')

        self.worker_helper = self.add_helper(WorkerHelper())

        config = self.persistence_helper.mk_config({
            'twisted_endpoint':
            'tcp:0',
            'web_path':
            '/resource_path/',
        })

        worker = yield self.worker_helper.get_worker(
            MessageStoreResourceWorker, config)
        yield worker.startService()
        port = yield worker.services[0]._waitingForPort
        addr = port.getHost()

        self.msg_helper = self.add_helper(MessageHelper())
        self.url = 'http://%s:%s' % (addr.host, addr.port)
        self.store = worker.store
        self.addCleanup(self.stop_server, port)
Ejemplo n.º 4
0
 def __init__(self, vumi_helper=None, **kw):
     self._msg_helper = MessageHelper(**kw)
     self.transport_name = self._msg_helper.transport_name
     self._vumi_helper = vumi_helper
     self.mdb = None
     if self._vumi_helper is not None:
         self.mdb = self._vumi_helper.get_vumi_api().mdb
    def test_rebuild_cache(self):
        """
        Rebuilding the info cache for a batch will clear all cached data and
        rebuild it from the given QueryMessageStore.
        """
        msg_helper = self.add_helper(MessageHelper())
        batch_info_cache = self.batch_manager.batch_info_cache

        # Fill the message store backend with the data we want in the rebuilt
        # cache.
        yield self.backend.add_inbound_message(msg_helper.make_inbound("in 1"),
                                               batch_ids=["mybatch"])
        yield self.backend.add_outbound_message(
            msg_helper.make_outbound("out 1"), batch_ids=["mybatch"])
        yield self.backend.add_outbound_message(
            msg_helper.make_outbound("out 2"), batch_ids=["mybatch"])

        # Fill the cache with some nonsense that we want to throw out when
        # rebuilding.
        yield batch_info_cache.add_inbound_message_key("mybatch", "in1", 12345)
        yield batch_info_cache.add_inbound_message_key("mybatch", "in2", 12345)

        old_in = yield batch_info_cache.get_inbound_message_count("mybatch")
        old_out = yield batch_info_cache.get_outbound_message_count("mybatch")
        self.assertEqual((old_in, old_out), (2, 0))

        # Rebuild the cache.
        qms = QueryMessageStore(self.manager, self.redis)
        yield self.batch_manager.rebuild_cache("mybatch", qms)

        new_in = yield batch_info_cache.get_inbound_message_count("mybatch")
        new_out = yield batch_info_cache.get_outbound_message_count("mybatch")
        self.assertEqual((new_in, new_out), (1, 2))
Ejemplo n.º 6
0
    def setUp(self):
        self.persistence_helper = self.add_helper(
            PersistenceHelper(use_riak=True))
        self.worker_helper = self.add_helper(WorkerHelper())
        self.msg_helper = self.add_helper(MessageHelper())

        riak, redis = yield self.create_managers()
        self.operational_store = OperationalMessageStore(riak, redis)
        self.batch_manager = MessageStoreBatchManager(riak, redis)
Ejemplo n.º 7
0
 def set_up_tests(self, manager):
     """
     This should be called from .setUp().
     """
     self.manager = manager
     self.backend = MessageStoreRiakBackend(self.manager)
     self.msg_helper = self.add_helper(MessageHelper())
     self.msg_seq_helper = self.add_helper(
         MessageSequenceHelper(self.backend, self.msg_helper))
Ejemplo n.º 8
0
    def setUp(self):
        self.workerhelper = WorkerHelper()
        self.addCleanup(self.workerhelper.cleanup)

        self.persistencehelper = PersistenceHelper()
        yield self.persistencehelper.setup()
        self.addCleanup(self.persistencehelper.cleanup)

        self.messagehelper = MessageHelper()
        self.addCleanup(self.messagehelper.cleanup)
 def setUp(self):
     self.persistence_helper = self.add_helper(
         PersistenceHelper(use_riak=True))
     self.manager = self.persistence_helper.get_riak_manager()
     self.add_cleanup(self.manager.close_manager)
     self.redis = yield self.persistence_helper.get_redis_manager()
     self.store = OperationalMessageStore(self.manager, self.redis)
     self.backend = self.store.riak_backend
     self.bi_cache = self.store.batch_info_cache
     self.msg_helper = self.add_helper(MessageHelper())
Ejemplo n.º 10
0
    def __init__(self, dispatcher_class, use_riak=False, **msg_helper_args):
        self.dispatcher_class = dispatcher_class
        self.worker_helper = WorkerHelper()
        self.persistence_helper = PersistenceHelper(use_riak=use_riak)
        self.msg_helper = MessageHelper(**msg_helper_args)
        self.dispatch_helper = MessageDispatchHelper(self.msg_helper,
                                                     self.worker_helper)

        # Proxy methods from our helpers.
        generate_proxies(self, self.msg_helper)
        generate_proxies(self, self.worker_helper)
        generate_proxies(self, self.dispatch_helper)
Ejemplo n.º 11
0
 def setUp(self):
     self.config = {
         'transport_names': ['transport1'],
         'exposed_names': ['app1', 'app2'],
         'toaddr_mappings': {
             'app1': 'to:.*:1',
             'app2': 'to:app2',
         },
     }
     self.dispatcher = DummyDispatcher(self.config)
     self.router = ToAddrRouter(self.dispatcher, self.config)
     yield self.router.setup_routing()
     self.msg_helper = self.add_helper(MessageHelper())
Ejemplo n.º 12
0
class TestMessageStoreBase(VumiTestCase):
    @inlineCallbacks
    def setUp(self):
        self.persistence_helper = self.add_helper(
            PersistenceHelper(use_riak=True))
        try:
            from vumi.components.message_store import MessageStore
        except ImportError, e:
            import_skip(e, 'riak')
        self.redis = yield self.persistence_helper.get_redis_manager()
        self.manager = self.persistence_helper.get_riak_manager()
        self.store = MessageStore(self.manager, self.redis)
        self.msg_helper = self.add_helper(MessageHelper())
Ejemplo n.º 13
0
    def __init__(self, application_class, use_riak=False, **msg_helper_args):
        self.application_class = application_class
        self.persistence_helper = PersistenceHelper(use_riak=use_riak)
        self.msg_helper = MessageHelper(**msg_helper_args)
        self.transport_name = self.msg_helper.transport_name
        self.worker_helper = WorkerHelper(self.msg_helper.transport_name)
        self.dispatch_helper = MessageDispatchHelper(self.msg_helper,
                                                     self.worker_helper)

        # Proxy methods from our helpers.
        generate_proxies(self, self.msg_helper)
        generate_proxies(self, self.worker_helper)
        generate_proxies(self, self.dispatch_helper)
        generate_proxies(self, self.persistence_helper)
Ejemplo n.º 14
0
    def setUp(self):
        self.clock = Clock()

        MessengerTransport.clock = self.clock

        self.remote_server = MockHttpServer(lambda _: 'OK')
        yield self.remote_server.start()
        self.addCleanup(self.remote_server.stop)

        self.tx_helper = self.add_helper(
            HttpRpcTransportHelper(PatchedMessengerTransport))
        self.msg_helper = self.add_helper(MessageHelper())

        connection_pool = HTTPConnectionPool(reactor, persistent=False)
        treq._utils.set_global_pool(connection_pool)
Ejemplo n.º 15
0
    def test_vumimessage_field_excludes_cache(self):
        msg_helper = self.add_helper(MessageHelper())
        msg_model = self.manager.proxy(self.VumiMessageModel)
        cache_attr = TransportUserMessage._CACHE_ATTRIBUTE
        msg = msg_helper.make_inbound("foo", extra="bar")
        msg.cache["cache"] = "me"
        self.assertEqual(msg[cache_attr], {"cache": "me"})

        m1 = msg_model("foo", msg=msg)
        self.assertTrue(cache_attr not in m1.msg)
        yield m1.save()

        m2 = yield msg_model.load("foo")
        self.assertTrue(cache_attr not in m2.msg)
        self.assertEqual(m2.msg, m1.msg)
Ejemplo n.º 16
0
 def setUp(self):
     self.persistence_helper = self.add_helper(
         PersistenceHelper(use_riak=True, is_sync=False))
     self.msg_helper = self.add_helper(MessageHelper())
     # Since we're never loading the actual objects, we can't detect
     # tombstones. Therefore, each test needs its own bucket prefix.
     self.expected_bucket_prefix = "bucket-%s" % (uuid4().hex,)
     self.riak_manager = self.persistence_helper.get_riak_manager({
         "bucket_prefix": self.expected_bucket_prefix,
     })
     self.add_cleanup(self.riak_manager.close_manager)
     self.redis_manager = yield self.persistence_helper.get_redis_manager()
     self.mdb = MessageStore(self.riak_manager, self.redis_manager)
     self.default_args = [
         "-b", self.expected_bucket_prefix,
     ]
Ejemplo n.º 17
0
 def setUp(self):
     self.persistence_helper = self.add_helper(
         PersistenceHelper(use_riak=True, is_sync=False))
     self.msg_helper = self.add_helper(MessageHelper())
     # Since we're never loading the actual objects, we can't detect
     # tombstones. Therefore, each test needs its own bucket prefix.
     config = self.persistence_helper.mk_config({})["riak_manager"].copy()
     config["bucket_prefix"] = "%s-%s" % (
         uuid4().hex, config["bucket_prefix"])
     self.riak_manager = self.persistence_helper.get_riak_manager(config)
     self.redis_manager = yield self.persistence_helper.get_redis_manager()
     self.mdb = MessageStore(self.riak_manager, self.redis_manager)
     self.expected_bucket_prefix = "bucket"
     self.default_args = [
         "-b", self.expected_bucket_prefix,
     ]
Ejemplo n.º 18
0
    def test_vumimessage_field(self):
        msg_helper = self.add_helper(MessageHelper())
        msg_model = self.manager.proxy(self.VumiMessageModel)
        msg = msg_helper.make_inbound("foo", extra="bar")
        m1 = msg_model("foo", msg=msg)
        yield m1.save()

        m2 = yield msg_model.load("foo")
        self.assertEqual(m1.msg, m2.msg)
        self.assertEqual(m2.msg, msg)

        self.assertRaises(ValidationError, setattr, m1, "msg", "foo")

        # test extra keys are removed
        msg2 = msg_helper.make_inbound("foo")
        m1.msg = msg2
        self.assertTrue("extra" not in m1.msg)
Ejemplo n.º 19
0
    def __init__(self, transport_class, use_riak=False, **msg_helper_args):
        self.transport_class = transport_class
        self.persistence_helper = PersistenceHelper(use_riak=use_riak)
        self.msg_helper = MessageHelper(**msg_helper_args)
        self.transport_name = self.msg_helper.transport_name

        self.worker_helper = WorkerHelper(connector_name=self.transport_name,
                                          status_connector_name="%s.status" %
                                          (self.transport_name, ))

        self.dispatch_helper = MessageDispatchHelper(self.msg_helper,
                                                     self.worker_helper)

        # Proxy methods from our helpers.
        generate_proxies(self, self.msg_helper)
        generate_proxies(self, self.worker_helper)
        generate_proxies(self, self.dispatch_helper)
        generate_proxies(self, self.persistence_helper)
Ejemplo n.º 20
0
 def setUp(self):
     config = {
         "transport_names": [
             "transport_1",
             "transport_2",
         ],
         "exposed_names": ["round_robin"],
         "router_class": ("vumi.dispatchers.load_balancer."
                          "LoadBalancingRouter"),
     }
     if self.reply_affinity is not None:
         config['reply_affinity'] = self.reply_affinity
     if self.rewrite_transport_names is not None:
         config['rewrite_transport_names'] = self.rewrite_transport_names
     self.dispatcher = DummyDispatcher(config)
     self.router = LoadBalancingRouter(self.dispatcher, config)
     self.add_cleanup(self.router.teardown_routing)
     yield self.router.setup_routing()
     self.msg_helper = self.add_helper(MessageHelper())
Ejemplo n.º 21
0
class MessageStoreCacheTestCase(VumiTestCase):

    start_batch = True

    @inlineCallbacks
    def setUp(self):
        self.persistence_helper = self.add_helper(
            PersistenceHelper(use_riak=True))
        try:
            from vumi.components.message_store import MessageStore
        except ImportError, e:
            import_skip(e, 'riak')
        self.redis = yield self.persistence_helper.get_redis_manager()
        self.manager = yield self.persistence_helper.get_riak_manager()
        self.store = yield MessageStore(self.manager, self.redis)
        self.cache = self.store.cache
        self.batch_id = 'a-batch-id'
        if self.start_batch:
            yield self.cache.batch_start(self.batch_id)
        self.msg_helper = self.add_helper(MessageHelper())
Ejemplo n.º 22
0
 def setUp(self):
     config = {
         "transport_names": [
             "transport_1",
             "transport_2",
             "transport_3",
         ],
         "exposed_names": ["muxed"],
         "router_class": "vumi.dispatchers.base.FromAddrMultiplexRouter",
         "fromaddr_mappings": {
             "thing1@muxme": "transport_1",
             "thing2@muxme": "transport_2",
             "thing3@muxme": "transport_3",
         },
     }
     self.dispatcher = DummyDispatcher(config)
     self.router = FromAddrMultiplexRouter(self.dispatcher, config)
     self.add_cleanup(self.router.teardown_routing)
     yield self.router.setup_routing()
     self.msg_helper = self.add_helper(MessageHelper())
Ejemplo n.º 23
0
 def setUp(self):
     self.msg_helper = self.add_helper(MessageHelper())
     self.worker_helper = self.add_helper(WorkerHelper())
     self.worker = yield self.worker_helper.get_worker(
         DummyWorker, {}, False)
Ejemplo n.º 24
0
 def setUp(self):
     self.msg_helper = self.add_helper(MessageHelper())
Ejemplo n.º 25
0
 def setUp(self):
     self.msg_helper = self.add_helper(MessageHelper())
     self.worker_helper = self.add_helper(WorkerHelper())
     self.clear_events()
     self.add_cleanup(self.clear_events)
Ejemplo n.º 26
0
 def setUp(self):
     self.msg_helper = self.add_helper(MessageHelper())
     self.worker_helper = self.add_helper(WorkerHelper())
Ejemplo n.º 27
0
 def setUp(self):
     self.persistence_helper = self.add_helper(
         PersistenceHelper(use_riak=True))
     self.worker_helper = self.add_helper(WorkerHelper())
     self.msg_helper = self.add_helper(MessageHelper())
Ejemplo n.º 28
0
 def setUp(self):
     self.r_server = FakeRedis()
     self.scheduler = Scheduler(self.r_server, self._scheduler_callback)
     self.add_cleanup(self.stop_scheduler)
     self._delivery_history = []
     self.msg_helper = self.add_helper(MessageHelper())
Ejemplo n.º 29
0
 def setUp(self):
     self.msg_helper = self.add_helper(MessageHelper())
     self.request = DummyRequest([''])
     self.formatter = CsvFormatter()
Ejemplo n.º 30
0
 def setUp(self):
     self.vumi_helper = yield self.add_helper(VumiApiHelper())
     self.user_helper = yield self.vumi_helper.make_user(u'user')
     self.msg_helper = self.add_helper(MessageHelper())