Esempio n. 1
0
class TestFailoverReceiver(TestCase):
    def setUp(self):
        configure(CONFIG)
        self.received_messages = []

        queue_address = uuid4().hex
        create_queue(queue_address, durable=False,
                     auto_delete=True, priorities=5,
                     extra_properties={'qpid.auto_delete_timeout': 10})
        self.sender = Sender(queue_address)

        def handle_received_message(message: Message):
            self.received_messages.append(message)
            return True
        self.receiver = Receiver(handle_received_message, queue_address)

    def test_failover_receive(self):
        expected_messages = (create_message(b'FOOBAR'),
                             create_message(b'FOOBAR'),
                             create_message(b'FOOBAR'))
        self.sender.queue(expected_messages)
        self.sender.send()

        self.receiver.limit = 3
        self.receiver.receive(timeout=timedelta(seconds=2))
        for received, expected in zip(self.received_messages,
                                      expected_messages):
            self.assertEqual(received.id, expected.id)
            self.assertEqual(received.body, expected.body)
Esempio n. 2
0
def send_messages():
    sender = Sender(server_url=SERVER_URL)
    messages = []
    for num in reversed(range(3)):
        message = create_message(f'Test message {num+1}')
        message.address = QUEUE_NAME
        messages.append(message)
    sender.queue(messages)
    sender.send()
Esempio n. 3
0
def message_send(args):
    properties = None
    if args.properties_file:
        try:
            properties = json.load(args.properties_file)
        except json.JSONDecodeError:
            print("Invalid JSON properties file\n")
            args.parser.print_help()
            exit(EX_DATAERR)

    message = create_message(args.message.encode(), properties)
    sender = Sender(args.address, args.broker_url)
    sender.queue(repeat(message, args.repeat))
    sender.send()
Esempio n. 4
0
class MessagingTestBase(TestCase):
    def setUp(self):
        configure(CONFIG)
        self.received_messages = []
        self.expected_messages = []

        queue_address = uuid4().hex
        create_queue(queue_address,
                     durable=False,
                     auto_delete=True,
                     priorities=10,
                     extra_properties={'qpid.auto_delete_timeout': 10})

        self.sender = Sender(queue_address)

        def handle_received_message(message: Message):
            self.received_messages.append(message)
            return True

        self.receiver = Receiver(handle_received_message, queue_address)

    def send_messages(self, messages: Iterable[Message]):
        self.expected_messages.extend(messages)
        self.sender.queue(messages)
        self.sender.send()

    def receive_messages(self):
        with suppress(TimeoutReached):
            self.receiver.receive(timeout=timedelta(seconds=2))

    def check_messages(self,
                       check_identity: bool = True,
                       expected_messages: Optional[Iterable[Message]] = None):
        expected_messages = expected_messages or self.expected_messages
        self.assertEqual(len(self.received_messages), len(expected_messages))
        for received, expected in zip(self.received_messages,
                                      expected_messages):
            self.assertEqual(received.body, expected.body)
            if check_identity:
                # Check identity 100%
                self.assertEqual(received.id, expected.id)
                self.assertEqual(received.properties, expected.properties)
Esempio n. 5
0
    def test_multi_receive(self):
        expected_messages = [
            create_message(b'FOOBAR1'),
            create_message(b'FOOBAR2'),
            create_message(b'FOOBAR3')
        ]
        self.send_messages(expected_messages[0:-1])

        second_queue_address = uuid4().hex
        create_queue(second_queue_address,
                     durable=False,
                     auto_delete=True,
                     extra_properties={'qpid.auto_delete_timeout': 10})
        self.receiver.add_address(second_queue_address)

        second_sender = Sender(second_queue_address)
        second_sender.queue(expected_messages[-1:])
        second_sender.send()

        self.receive_messages()
        self.assertEqual(len(self.received_messages), len(expected_messages))
Esempio n. 6
0
 def test_connection_error(self):
     sender = Sender(uuid4().hex,
                     server_url='amqp://*****:*****@example')
     sender.queue((create_message(b'FOOBAR'), ))
     with self.assertRaises(ConnectionError):
         sender.send()