timing_test.py 3.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120
  1. #!/usr/bin/env python
  2. # -*- coding:utf-8 -*-
  3. import unittest
  4. import timing
  5. import threading
  6. import time
  7. exec_num = 0
  8. class TimingTest(unittest.TestCase):
  9. def func(self):
  10. global exec_num
  11. self.name = 'TANGS TIMING TEST'
  12. exec_num += 1
  13. print(self.name)
  14. @staticmethod
  15. def reset():
  16. global exec_num
  17. exec_num = 0
  18. @staticmethod
  19. def timing_start():
  20. t = threading.Thread(target=timing.run)
  21. t.setDaemon(True)
  22. t.start()
  23. def test_timing_run(self):
  24. # add task but invalid task_id
  25. err = None
  26. try:
  27. timing.add_task(1, 1, self.func, 1, 1)
  28. except Exception as e:
  29. err = str(e)
  30. self.assertEqual(err, 'task_id must be str')
  31. # add task but invalid interval
  32. err = None
  33. try:
  34. timing.add_task(1, '1', self.func, 1, 'generate_id')
  35. except Exception as e:
  36. err = str(e)
  37. self.assertEqual(err, 'interval must be int')
  38. # add task but interval must be bigger than 0
  39. err = None
  40. try:
  41. timing.add_task(1, -1, self.func, 1, 'generate_id')
  42. except Exception as e:
  43. err = str(e)
  44. self.assertEqual(err, 'interval must be bigger than 0')
  45. # add task but func is not function
  46. err = None
  47. try:
  48. timing.add_task(1, 1, 1, 1, 'generate_id')
  49. except Exception as e:
  50. err = str(e)
  51. self.assertEqual(err, 'func must be func')
  52. # add task but count is not int
  53. err = None
  54. try:
  55. timing.add_task(1, 1, self.func, '1', 'generate_id')
  56. except Exception as e:
  57. err = str(e)
  58. self.assertEqual(err, 'count must be int')
  59. timing.set_interval(1)
  60. timer = timing.Timing()
  61. timing.defaultTiming = timer
  62. #
  63. # # add task success
  64. # self.timing_start()
  65. # timing.add_task(1, 1, self.func, 1, 'generate_id')
  66. # self.assertEqual(len(timer.task), 1)
  67. # time.sleep(1.5)
  68. # timing.stop()
  69. # self.assertEqual(exec_num, 1)
  70. # self.assertEqual(len(timer.task), 0)
  71. # time.sleep(1)
  72. # self.reset()
  73. #
  74. # # add task with count 3, wait 3.5, success
  75. # self.timing_start()
  76. # timing.add_task(1, 1, self.func, 3, 'generate_id')
  77. # self.assertEqual(len(timer.task), 1)
  78. # time.sleep(3.5)
  79. # timing.stop()
  80. # self.assertEqual(exec_num, 3)
  81. # self.assertEqual(len(timer.task), 0)
  82. # time.sleep(1)
  83. # self.reset()
  84. # add task with count 4, wait 3.5, success
  85. timing.set_interval(1.2)
  86. self.timing_start()
  87. timing.add_task(1, 1, self.func, 4, 'generate_id')
  88. time.sleep(3)
  89. timing.stop()
  90. # self.assertAlmostEqual(exec_num, 3, delta=1)
  91. self.assertEqual(exec_num, 3)
  92. time.sleep(1)
  93. self.reset()
  94. # add task with count less than 0, success
  95. print('-----------------------------------------')
  96. timing.set_interval(1.2)
  97. self.timing_start()
  98. timing.add_task(1, 1, self.func, -1, 'generate_id')
  99. time.sleep(3)
  100. timing.stop()
  101. self.assertEqual(exec_num, 3)
  102. self.reset()
  103. if __name__ == '__main__':
  104. unittest.main()