test_events.py 1.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475
  1. import unittest
  2. from celery import events
  3. class MockPublisher(object):
  4. def __init__(self, *args, **kwargs):
  5. self.sent = []
  6. def send(self, msg, *args, **kwargs):
  7. self.sent.append(msg)
  8. def close(self):
  9. pass
  10. def has_event(self, kind):
  11. for event in self.sent:
  12. if event["type"] == kind:
  13. return event
  14. return False
  15. class TestEvent(unittest.TestCase):
  16. def test_constructor(self):
  17. event = events.Event("world war II")
  18. self.assertEquals(event["type"], "world war II")
  19. self.assertTrue(event["timestamp"])
  20. class TestEventDispatcher(unittest.TestCase):
  21. def test_send(self):
  22. publisher = MockPublisher()
  23. eventer = events.EventDispatcher(object(), publisher=publisher)
  24. eventer.publisher = publisher
  25. eventer.enabled = True
  26. eventer.send("World War II", ended=True)
  27. self.assertTrue(publisher.has_event("World War II"))
  28. class TestEventReceiver(unittest.TestCase):
  29. def test_process(self):
  30. message = {"type": "world-war"}
  31. got_event = [False]
  32. def my_handler(event):
  33. got_event[0] = True
  34. r = events.EventReceiver(object(), handlers={
  35. "world-war": my_handler})
  36. r._receive(message, object())
  37. self.assertTrue(got_event[0])
  38. def test_catch_all_event(self):
  39. message = {"type": "world-war"}
  40. got_event = [False]
  41. def my_handler(event):
  42. got_event[0] = True
  43. r = events.EventReceiver(object())
  44. events.EventReceiver.handlers["*"] = my_handler
  45. try:
  46. r._receive(message, object())
  47. self.assertTrue(got_event[0])
  48. finally:
  49. events.EventReceiver.handlers = {}