def test_build_empty_inbound_messages(self): channel = Channel(0, FakeConnection(), 360) channel.set_state(Channel.OPEN) result = None for message in channel.build_inbound_messages(break_on_empty=True): result = message self.assertIsNone(result)
def test_channel_build_empty_inbound_messages(self): channel = Channel(0, FakeConnection(), 360) channel.set_state(Channel.OPEN) result = None for message in channel.build_inbound_messages(break_on_empty=True): result = message self.assertIsNone(result)
def test_channel_build_empty_inbound_messages(self): channel = Channel(0, FakeConnection(), 360) channel.set_state(Channel.OPEN) generator = channel.build_inbound_messages(break_on_empty=True) if hasattr(generator, 'next'): self.assertRaises(StopIteration, generator.next) else: self.assertRaises(StopIteration, generator.__next__)
def test_channel_build_inbound_raises(self, _): channel = Channel(0, FakeConnection(), 360) channel.set_state(Channel.OPEN) generator = channel.build_inbound_messages(break_on_empty=False) if hasattr(generator, 'next'): self.assertRaises(AMQPChannelError, generator.next) else: self.assertRaises(AMQPChannelError, generator.__next__)
def test_channel_build_inbound_raises(self): channel = Channel(0, FakeConnection(), 360) channel.set_state(Channel.OPEN) with mock.patch('amqpstorm.Channel._build_message', side_effect=AMQPChannelError()): generator = channel.build_inbound_messages(break_on_empty=False) if hasattr(generator, 'next'): self.assertRaises(AMQPChannelError, generator.next) else: self.assertRaises(AMQPChannelError, generator.__next__)
def test_build_inbound_messages(self): channel = Channel(0, FakeConnection(), 360) channel.set_state(Channel.OPEN) message = b'Hello World!' message_len = len(message) deliver = specification.Basic.Deliver() header = ContentHeader(body_size=message_len) body = ContentBody(value=message) channel._inbound = [deliver, header, body] for message in channel.build_inbound_messages(break_on_empty=True): self.assertIsInstance(message, Message)
def test_channel_build_inbound_messages(self): channel = Channel(0, FakeConnection(), 360) channel.set_state(Channel.OPEN) message = b'Hello World!' message_len = len(message) deliver = specification.Basic.Deliver() header = ContentHeader(body_size=message_len) body = ContentBody(value=message) channel._inbound = [deliver, header, body] for message in channel.build_inbound_messages(break_on_empty=True): self.assertIsInstance(message, Message)
def test_channel_build_inbound_messages(self): channel = Channel(0, FakeConnection(), 360) channel.set_state(channel.OPEN) message = self.message.encode('utf-8') message_len = len(message) deliver = specification.Basic.Deliver() header = ContentHeader(body_size=message_len) body = ContentBody(value=message) channel._inbound = [deliver, header, body] for msg in channel.build_inbound_messages(break_on_empty=True): self.assertIsInstance(msg.body, str) self.assertEqual(msg.body.encode('utf-8'), message)
def test_channel_build_inbound_raises_in_loop(self): channel = Channel(0, FakeConnection(), 360) channel.set_state(Channel.OPEN) self.first = True def raise_after_one(**_): if not self.first: channel.exceptions.append(AMQPChannelError()) self.first = False return None with mock.patch('amqpstorm.Channel._build_message', side_effect=raise_after_one): generator = channel.build_inbound_messages(break_on_empty=False) if hasattr(generator, 'next'): self.assertRaises(AMQPChannelError, generator.next) else: self.assertRaises(AMQPChannelError, generator.__next__)
def test_channel_content_frames(self): channel = Channel(0, FakeConnection(), rpc_timeout=1) channel.set_state(channel.OPEN) message = self.message.encode('utf-8') message_len = len(message) deliver = commands.Basic.Deliver() header = ContentHeader(body_size=message_len) body = ContentBody(value=message) channel.on_frame(deliver) channel.on_frame(header) channel.on_frame(body) for msg in channel.build_inbound_messages(break_on_empty=True): self.assertIsInstance(msg.body, str) self.assertEqual(msg.body.encode('utf-8'), message)
def test_channel_build_inbound_messages(self): channel = Channel(0, FakeConnection(), 360) channel.set_state(Channel.OPEN) message = self.message.encode('utf-8') message_len = len(message) deliver = commands.Basic.Deliver() header = ContentHeader(body_size=message_len) body = ContentBody(value=message) channel._inbound = [deliver, header, body] messages_consumed = 0 for msg in channel.build_inbound_messages(break_on_empty=True): self.assertIsInstance(msg, Message) messages_consumed += 1 self.assertEqual(messages_consumed, 1)
def test_channel_build_inbound_messages(self): channel = Channel(0, FakeConnection(), 360) channel.set_state(Channel.OPEN) message = self.message.encode('utf-8') message_len = len(message) deliver = specification.Basic.Deliver() header = ContentHeader(body_size=message_len) body = ContentBody(value=message) channel._inbound = [deliver, header, body] messages_consumed = 0 for msg in channel.build_inbound_messages(break_on_empty=True): self.assertIsInstance(msg, Message) messages_consumed += 1 self.assertEqual(messages_consumed, 1)
def test_channel_build_no_message_but_inbound_not_empty(self): channel = Channel(0, FakeConnection(), 360) channel.set_state(Channel.OPEN) message = self.message.encode('utf-8') message_len = len(message) def add_content(): channel._inbound.append(ContentHeader(body_size=message_len)) channel._inbound.append(ContentBody(value=message)) deliver = specification.Basic.Deliver() channel._inbound = [deliver] self.assertTrue(channel._inbound) threading.Timer(function=add_content, interval=0.2).start() for msg in channel.build_inbound_messages(break_on_empty=True): self.assertEqual(msg.body, message.decode('utf-8')) self.assertFalse(channel._inbound)
def test_channel_build_large_number_inbound_messages(self): channel = Channel(0, FakeConnection(), 360) channel.set_state(Channel.OPEN) message = self.message.encode('utf-8') message_len = len(message) deliver = specification.Basic.Deliver() header = ContentHeader(body_size=message_len) body = ContentBody(value=message) for _ in range(10000): channel._inbound.append(deliver) channel._inbound.append(header) channel._inbound.append(body) messages_consumed = 0 for msg in channel.build_inbound_messages(break_on_empty=True): self.assertIsInstance(msg, Message) messages_consumed += 1 self.assertEqual(messages_consumed, 10000)
def test_channel_build_inbound_messages_without_break_on_empty(self): channel = Channel(0, FakeConnection(), 360) channel.set_state(channel.OPEN) message = self.message.encode('utf-8') message_len = len(message) deliver = specification.Basic.Deliver() header = ContentHeader(body_size=message_len) body = ContentBody(value=message) for _ in range(25): channel._inbound.append(deliver) channel._inbound.append(header) channel._inbound.append(body) messages_consumed = 0 for msg in channel.build_inbound_messages(break_on_empty=False): messages_consumed += 1 self.assertIsInstance(msg.body, str) self.assertEqual(msg.body.encode('utf-8'), message) if messages_consumed >= 10: channel.set_state(channel.CLOSED) self.assertEqual(messages_consumed, 10)