test_events.py 2.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273
  1. from __future__ import absolute_import
  2. from nose import SkipTest
  3. from mock import patch as mpatch
  4. from celery.bin import events
  5. from celery.tests.case import AppCase, _old_patch as patch
  6. class MockCommand(object):
  7. executed = []
  8. def execute_from_commandline(self, **kwargs):
  9. self.executed.append(True)
  10. def proctitle(prog, info=None):
  11. proctitle.last = (prog, info)
  12. proctitle.last = ()
  13. class test_events(AppCase):
  14. def setup(self):
  15. self.ev = events.events(app=self.app)
  16. @patch('celery.events.dumper', 'evdump', lambda **kw: 'me dumper, you?')
  17. @patch('celery.bin.events', 'set_process_title', proctitle)
  18. def test_run_dump(self):
  19. self.assertEqual(self.ev.run(dump=True), 'me dumper, you?')
  20. self.assertIn('celery events:dump', proctitle.last[0])
  21. def test_run_top(self):
  22. try:
  23. import curses # noqa
  24. except ImportError:
  25. raise SkipTest('curses monitor requires curses')
  26. @patch('celery.events.cursesmon', 'evtop', lambda **kw: 'me top, you?')
  27. @patch('celery.bin.events', 'set_process_title', proctitle)
  28. def _inner():
  29. self.assertEqual(self.ev.run(), 'me top, you?')
  30. self.assertIn('celery events:top', proctitle.last[0])
  31. return _inner()
  32. @patch('celery.events.snapshot', 'evcam', lambda *a, **k: (a, k))
  33. @patch('celery.bin.events', 'set_process_title', proctitle)
  34. def test_run_cam(self):
  35. a, kw = self.ev.run(camera='foo.bar.baz', logfile='logfile')
  36. self.assertEqual(a[0], 'foo.bar.baz')
  37. self.assertEqual(kw['freq'], 1.0)
  38. self.assertIsNone(kw['maxrate'])
  39. self.assertEqual(kw['loglevel'], 'INFO')
  40. self.assertEqual(kw['logfile'], 'logfile')
  41. self.assertIn('celery events:cam', proctitle.last[0])
  42. @mpatch('celery.events.snapshot.evcam')
  43. @mpatch('celery.bin.events.detached')
  44. def test_run_cam_detached(self, detached, evcam):
  45. self.ev.prog_name = 'celery events'
  46. self.ev.run_evcam('myapp.Camera', detach=True)
  47. self.assertTrue(detached.called)
  48. self.assertTrue(evcam.called)
  49. def test_get_options(self):
  50. self.assertTrue(self.ev.get_options())
  51. @patch('celery.bin.events', 'events', MockCommand)
  52. def test_main(self):
  53. MockCommand.executed = []
  54. events.main()
  55. self.assertTrue(MockCommand.executed)