test_events.py 1.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374
  1. import unittest2 as 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.assertEqual(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(), enabled=False)
  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 = {}