test_thread.py 1.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465
  1. # -*- coding: utf-8 -*-
  2. import unittest
  3. import time
  4. from media.saas.thread import InstanceThread, InstanceInheritingThread
  5. # ugly but necessary for 2.7
  6. signal = False
  7. signal2 = False
  8. class TestInstanceThread(unittest.TestCase):
  9. def test_user_inject(self):
  10. global signal
  11. signal = False
  12. u = "rudi"
  13. class T(InstanceThread):
  14. def run(me):
  15. global signal
  16. super(T, me).run()
  17. signal = True
  18. self.assertEquals(u, me.user())
  19. t = T(u, name="test_user_inject")
  20. t.daemon = True
  21. t.start()
  22. time.sleep(0.2)
  23. self.assertTrue(signal)
  24. def test_inheriting_thread(utest):
  25. global signal2
  26. u = "testing..."
  27. class TT(InstanceInheritingThread):
  28. def run(self):
  29. global signal2
  30. utest.assertEquals(self.user(), u)
  31. signal2 = True
  32. class T(InstanceThread):
  33. def run(self):
  34. super(T, self).run()
  35. child_thread = TT(name="child thread")
  36. child_thread.daemon = True
  37. child_thread.start()
  38. parent_thread = T(u, name="Parent instance thread")
  39. parent_thread.daemon = True
  40. parent_thread.start()
  41. time.sleep(0.2)
  42. utest.assertTrue(signal2)
  43. def test_different_user(utest):
  44. u1, u2 = "ru", "di"
  45. class T(InstanceThread):
  46. def run(self):
  47. super(T, self).run()
  48. for u in [u1, u2]:
  49. t = T(u)
  50. t.daemon = True
  51. t.start()
  52. utest.assertEquals(t.user(), u)
  53. if __name__ == '__main__': unittest.main()