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_semaphore.py 1.2KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  1. from __future__ import absolute_import
  2. from kombu.async.semaphore import LaxBoundedSemaphore
  3. from kombu.tests.case import Case
  4. class test_LaxBoundedSemaphore(Case):
  5. def test_over_release(self):
  6. x = LaxBoundedSemaphore(2)
  7. calls = []
  8. for i in range(1, 21):
  9. x.acquire(calls.append, i)
  10. x.release()
  11. x.acquire(calls.append, 'x')
  12. x.release()
  13. x.acquire(calls.append, 'y')
  14. self.assertEqual(calls, [1, 2, 3, 4])
  15. for i in range(30):
  16. x.release()
  17. self.assertEqual(calls, list(range(1, 21)) + ['x', 'y'])
  18. self.assertEqual(x.value, x.initial_value)
  19. calls[:] = []
  20. for i in range(1, 11):
  21. x.acquire(calls.append, i)
  22. for i in range(1, 11):
  23. x.release()
  24. self.assertEqual(calls, list(range(1, 11)))
  25. calls[:] = []
  26. self.assertEqual(x.value, x.initial_value)
  27. x.acquire(calls.append, 'x')
  28. self.assertEqual(x.value, 1)
  29. x.acquire(calls.append, 'y')
  30. self.assertEqual(x.value, 0)
  31. x.release()
  32. self.assertEqual(x.value, 1)
  33. x.release()
  34. self.assertEqual(x.value, 2)
  35. x.release()
  36. self.assertEqual(x.value, 2)