Development of an internal social media platform with personalised dashboards for students
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

test_base.py 4.8KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148
  1. from __future__ import absolute_import
  2. from kombu import Connection, Consumer, Exchange, Producer, Queue
  3. from kombu.five import text_t
  4. from kombu.message import Message
  5. from kombu.transport.base import StdChannel, Transport, Management
  6. from kombu.tests.case import Case, Mock
  7. class test_StdChannel(Case):
  8. def setUp(self):
  9. self.conn = Connection('memory://')
  10. self.channel = self.conn.channel()
  11. self.channel.queues.clear()
  12. self.conn.connection.state.clear()
  13. def test_Consumer(self):
  14. q = Queue('foo', Exchange('foo'))
  15. print(self.channel.queues)
  16. cons = self.channel.Consumer(q)
  17. self.assertIsInstance(cons, Consumer)
  18. self.assertIs(cons.channel, self.channel)
  19. def test_Producer(self):
  20. prod = self.channel.Producer()
  21. self.assertIsInstance(prod, Producer)
  22. self.assertIs(prod.channel, self.channel)
  23. def test_interface_get_bindings(self):
  24. with self.assertRaises(NotImplementedError):
  25. StdChannel().get_bindings()
  26. def test_interface_after_reply_message_received(self):
  27. self.assertIsNone(
  28. StdChannel().after_reply_message_received(Queue('foo')),
  29. )
  30. class test_Message(Case):
  31. def setUp(self):
  32. self.conn = Connection('memory://')
  33. self.channel = self.conn.channel()
  34. self.message = Message(self.channel, delivery_tag=313)
  35. def test_postencode(self):
  36. m = Message(self.channel, text_t('FOO'), postencode='ccyzz')
  37. with self.assertRaises(LookupError):
  38. m._reraise_error()
  39. m.ack()
  40. def test_ack_respects_no_ack_consumers(self):
  41. self.channel.no_ack_consumers = set(['abc'])
  42. self.message.delivery_info['consumer_tag'] = 'abc'
  43. ack = self.channel.basic_ack = Mock()
  44. self.message.ack()
  45. self.assertNotEqual(self.message._state, 'ACK')
  46. self.assertFalse(ack.called)
  47. def test_ack_missing_consumer_tag(self):
  48. self.channel.no_ack_consumers = set(['abc'])
  49. self.message.delivery_info = {}
  50. ack = self.channel.basic_ack = Mock()
  51. self.message.ack()
  52. ack.assert_called_with(self.message.delivery_tag)
  53. def test_ack_not_no_ack(self):
  54. self.channel.no_ack_consumers = set()
  55. self.message.delivery_info['consumer_tag'] = 'abc'
  56. ack = self.channel.basic_ack = Mock()
  57. self.message.ack()
  58. ack.assert_called_with(self.message.delivery_tag)
  59. def test_ack_log_error_when_no_error(self):
  60. ack = self.message.ack = Mock()
  61. self.message.ack_log_error(Mock(), KeyError)
  62. ack.assert_called_with()
  63. def test_ack_log_error_when_error(self):
  64. ack = self.message.ack = Mock()
  65. ack.side_effect = KeyError('foo')
  66. logger = Mock()
  67. self.message.ack_log_error(logger, KeyError)
  68. ack.assert_called_with()
  69. self.assertTrue(logger.critical.called)
  70. self.assertIn("Couldn't ack", logger.critical.call_args[0][0])
  71. def test_reject_log_error_when_no_error(self):
  72. reject = self.message.reject = Mock()
  73. self.message.reject_log_error(Mock(), KeyError, requeue=True)
  74. reject.assert_called_with(requeue=True)
  75. def test_reject_log_error_when_error(self):
  76. reject = self.message.reject = Mock()
  77. reject.side_effect = KeyError('foo')
  78. logger = Mock()
  79. self.message.reject_log_error(logger, KeyError)
  80. reject.assert_called_with(requeue=False)
  81. self.assertTrue(logger.critical.called)
  82. self.assertIn("Couldn't reject", logger.critical.call_args[0][0])
  83. class test_interface(Case):
  84. def test_establish_connection(self):
  85. with self.assertRaises(NotImplementedError):
  86. Transport(None).establish_connection()
  87. def test_close_connection(self):
  88. with self.assertRaises(NotImplementedError):
  89. Transport(None).close_connection(None)
  90. def test_create_channel(self):
  91. with self.assertRaises(NotImplementedError):
  92. Transport(None).create_channel(None)
  93. def test_close_channel(self):
  94. with self.assertRaises(NotImplementedError):
  95. Transport(None).close_channel(None)
  96. def test_drain_events(self):
  97. with self.assertRaises(NotImplementedError):
  98. Transport(None).drain_events(None)
  99. def test_heartbeat_check(self):
  100. Transport(None).heartbeat_check(Mock(name='connection'))
  101. def test_driver_version(self):
  102. self.assertTrue(Transport(None).driver_version())
  103. def test_register_with_event_loop(self):
  104. Transport(None).register_with_event_loop(Mock(name='loop'))
  105. def test_manager(self):
  106. self.assertTrue(Transport(None).manager)
  107. class test_Management(Case):
  108. def test_get_bindings(self):
  109. m = Management(Mock(name='transport'))
  110. with self.assertRaises(NotImplementedError):
  111. m.get_bindings()