def test_success_message_send(self): message = pika_drv_msg.RpcReplyPikaOutgoingMessage(self._pika_engine, self._msg_id, reply="all_fine") message.send(self._reply_q, stopwatch=self._stopwatch, retrier=None) self._pika_engine.connection_with_confirmation_pool.acquire( ).__enter__().channel.publish.assert_called_once_with( body=b'{"s": "all_fine"}', exchange=self._rpc_reply_exchange, mandatory=True, properties=mock.ANY, routing_key=self._reply_q) props = self._pika_engine.connection_with_confirmation_pool.acquire( ).__enter__().channel.publish.call_args[1]["properties"] self.assertEqual('application/json', props.content_type) self.assertEqual(1, props.delivery_mode) self.assertTrue( self._expiration * 1000 - float(props.expiration) < 100) self.assertEqual({'version': '1.0'}, props.headers) self.assertEqual(message.msg_id, props.correlation_id) self.assertIsNone(props.reply_to) self.assertTrue(props.message_id)
def test_failure_message_send(self): failure_info = (oslo_messaging.MessagingException, oslo_messaging.MessagingException("Error message"), ['It is a trace']) message = pika_drv_msg.RpcReplyPikaOutgoingMessage( self._pika_engine, self._msg_id, failure_info=failure_info ) message.send(self._reply_q, stopwatch=self._stopwatch, retrier=None) self._pika_engine.connection_with_confirmation_pool.acquire( ).__enter__().channel.publish.assert_called_once_with( body=mock.ANY, exchange=self._rpc_reply_exchange, mandatory=True, properties=mock.ANY, routing_key=self._reply_q ) body = self._pika_engine.connection_with_confirmation_pool.acquire( ).__enter__().channel.publish.call_args[1]["body"] self.assertEqual( b'{"e": {"c": "MessagingException", ' b'"m": "oslo_messaging.exceptions", "s": "Error message", ' b'"t": ["It is a trace"]}}', body ) props = self._pika_engine.connection_with_confirmation_pool.acquire( ).__enter__().channel.publish.call_args[1]["properties"] self.assertEqual(props.content_encoding, 'utf-8') self.assertEqual(props.content_type, 'application/json') self.assertEqual(props.delivery_mode, 1) self.assertTrue(self._expiration * 1000 - float(props.expiration) < 100) self.assertEqual(props.headers, {'version': '1.0'}) self.assertEqual(props.correlation_id, message.msg_id) self.assertIsNone(props.reply_to) self.assertTrue(props.message_id)