Example #1
0
 def test_consume_message(self):
     expected_datapoints = [
         ("vumi.test.v1", 1234, 1.0),
         ("vumi.test.v2", 3456, 2.0),
     ]
     datapoints = []
     consumer = metrics.MetricsConsumer(lambda *v: datapoints.append(v))
     msg = metrics.MetricMessage()
     msg.extend(expected_datapoints)
     vumi_msg = Message.from_json(msg.to_json())
     consumer.consume_message(vumi_msg)
     self.assertEqual(datapoints, expected_datapoints)
Example #2
0
 def test_consume_message(self):
     expected_datapoints = [
         ("vumi.test.v1", 1234, 1.0),
         ("vumi.test.v2", 3456, 2.0),
         ]
     datapoints = []
     consumer = metrics.MetricsConsumer(lambda *v: datapoints.append(v))
     msg = metrics.MetricMessage()
     msg.extend(expected_datapoints)
     vumi_msg = Message.from_json(msg.to_json())
     consumer.consume_message(vumi_msg)
     self.assertEqual(datapoints, expected_datapoints)
Example #3
0
    def test_consume(self):
        """The consume helper should direct all incoming messages matching the
        specified routing_key, queue_name & exchange to the given callback"""

        message = fake_amq_message({"key": "value"})
        worker = get_stubbed_worker(Worker)

        # buffer to check messages consumed
        log = [Message.from_json(message.content.body)]
        # consume all messages on the given routing key and append
        # them to the log
        worker.consume('test.routing.key', lambda msg: log.append(msg))
        # if all works well then the consume method should funnel the test
        # message straight to the callback, the callback will apend it to the
        # log and we can test it.
        worker._amqp_client.broker.basic_publish('vumi', 'test.routing.key',
                                                 message.content)
        self.assertEquals(log, [Message(key="value")])
Example #4
0
 def _check_msg(self, broker, metric, values):
     msgs = broker.get_dispatched("vumi.metrics", "vumi.metrics")
     if values is None:
         self.assertEqual(msgs, [])
         return
     content = msgs[-1]
     name = metric.name
     self.assertEqual(content.properties, {"delivery mode": 2})
     msg = Message.from_json(content.body)
     [datapoint] = msg.payload["datapoints"]
     self.assertEqual(datapoint[0], name)
     self.assertEqual(datapoint[1], list(metric.aggs))
     # check datapoints within 2s of now -- the truncating of
     # time.time() to an int for timestamps can cause a 1s
     # difference by itself
     now = time.time()
     self.assertTrue(
         all(abs(p[0] - now) < 2.0 for p in datapoint[2]),
         "Not all datapoints near now (%f): %r" % (now, datapoint))
     self.assertEqual([p[1] for p in datapoint[2]], values)
Example #5
0
 def _check_msg(self, broker, metric, values):
     msgs = broker.get_dispatched("vumi.metrics", "vumi.metrics")
     if values is None:
         self.assertEqual(msgs, [])
         return
     content = msgs[-1]
     name = metric.name
     self.assertEqual(content.properties, {"delivery mode": 2})
     msg = Message.from_json(content.body)
     [datapoint] = msg.payload["datapoints"]
     self.assertEqual(datapoint[0], name)
     self.assertEqual(datapoint[1], list(metric.aggs))
     # check datapoints within 2s of now -- the truncating of
     # time.time() to an int for timestamps can cause a 1s
     # difference by itself
     now = time.time()
     self.assertTrue(all(abs(p[0] - now) < 2.0
                         for p in datapoint[2]),
                     "Not all datapoints near now (%f): %r"
                     % (now, datapoint))
     self.assertEqual([p[1] for p in datapoint[2]], values)
Example #6
0
 def get_messages(self, exchange, rkey):
     contents = self.get_dispatched(exchange, rkey)
     messages = [VumiMessage.from_json(content.body)
                 for content in contents]
     return messages
Example #7
0
 def recv_datapoints(self, exchange, queue):
     """Retrieve datapoints from a broker."""
     contents = self._broker.get_dispatched(exchange, queue)
     vumi_msgs = [Message.from_json(content.body) for content in contents]
     msgs = [MetricMessage.from_dict(vm.payload) for vm in vumi_msgs]
     return [msg.datapoints() for msg in msgs]
Example #8
0
 def r_get_message(self, message_id):
     json_string = yield self.r_get_message_json(message_id)
     if json_string:
         returnValue(Message.from_json(json_string))
     else:
         returnValue(None)
Example #9
0
 def get_messages(self, exchange, rkey):
     contents = self.get_dispatched(exchange, rkey)
     messages = [
         VumiMessage.from_json(content.body) for content in contents
     ]
     return messages
Example #10
0
 def r_get_message(self, message_id):
     json_string = self.r_get_message_json(message_id)
     if json_string:
         return Message.from_json(json_string)
     else:
         return None