test_simple.py 1.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869
  1. import datetime
  2. import sys
  3. import unittest
  4. import gevent
  5. from simpledb import Client
  6. from simpledb import QueueServer
  7. from huey.contrib.simple_storage import SimpleHuey
  8. from huey.tests.base import BaseTestCase
  9. huey = SimpleHuey(port=31339)
  10. def run_queue_server():
  11. server = QueueServer(host='127.0.0.1', port=31339, use_gevent=True)
  12. gevent.spawn(server.run)
  13. @huey.task()
  14. def add_numbers(a, b):
  15. return a + b
  16. class TestSimpleHuey(BaseTestCase):
  17. @classmethod
  18. def setUpClass(cls):
  19. run_queue_server()
  20. def setUp(self):
  21. huey.storage.flush_all()
  22. def test_queue(self):
  23. res = add_numbers(1, 2)
  24. task = huey.dequeue()
  25. self.assertEqual(huey.execute(task), 3)
  26. self.assertEqual(res.get(), 3)
  27. def test_schedule(self):
  28. ts = datetime.datetime.now().replace(microsecond=0)
  29. make_eta = lambda s: ts + datetime.timedelta(seconds=s)
  30. res1 = add_numbers.schedule((1, 2), eta=make_eta(4), convert_utc=False)
  31. res2 = add_numbers.schedule((2, 3), eta=make_eta(2), convert_utc=False)
  32. self.assertEqual(len(huey), 2)
  33. r = huey.dequeue()
  34. huey.add_schedule(r)
  35. huey.add_schedule(huey.dequeue())
  36. scheduled = huey.read_schedule(make_eta(1))
  37. self.assertEqual(len(scheduled), 0)
  38. scheduled = huey.read_schedule(make_eta(2))
  39. self.assertEqual(len(scheduled), 1)
  40. task, = scheduled
  41. self.assertEqual(huey.execute(task), 5)
  42. self.assertEqual(res2.get(), 5)
  43. scheduled = huey.read_schedule(make_eta(4))
  44. self.assertEqual(len(scheduled), 1)
  45. task, = scheduled
  46. self.assertEqual(huey.execute(task), 3)
  47. self.assertEqual(res1.get(), 3)
  48. if __name__ == '__main__':
  49. unittest.main(argv=sys.argv)