Browse Source

complete timing test

tangs 5 years ago
parent
commit
778fb0aabc
2 changed files with 63 additions and 37 deletions
  1. 2 2
      timing.py
  2. 61 35
      timing_test.py

+ 2 - 2
timing.py

@@ -80,7 +80,8 @@ class Timing:
         while True:
             if not self.is_running:
                 logging.debug('[TIMING] timing server will end.')
-                break
+                print('[TIMING] timing server will end.')
+                return
 
             logging.debug('[TIMING] run with tasks length: %s', len(self.task))
             clear_keys = []
@@ -98,7 +99,6 @@ class Timing:
                     t = threading.Thread(target=task_detail['func'], name=task_detail['name'])
                     t.setDaemon(True)
                     t.start()
-
                     task_detail['exec_num'] = task_detail['exec_num'] + 1
                     if task_detail.__contains__('count') and task_detail['exec_num'] >= task_detail['count']:
                         clear_keys.append(task_id)

+ 61 - 35
timing_test.py

@@ -26,6 +26,8 @@ class TimingTest(unittest.TestCase):
         t = threading.Thread(target=timing.run)
         t.setDaemon(True)
         t.start()
+        print('New Thread', t.name)
+        return t
 
     def test_timing_run(self):
         # add task but invalid task_id
@@ -39,7 +41,7 @@ class TimingTest(unittest.TestCase):
         # add task but invalid interval
         err = None
         try:
-            timing.add_task(1, '1', self.func, 1, 'generate_id')
+            timing.add_task(1, '1', self.func, 1, 'generate_id_1')
         except Exception as e:
             err = str(e)
         self.assertEqual(err, 'interval must be int')
@@ -47,7 +49,7 @@ class TimingTest(unittest.TestCase):
         # add task but interval must be bigger than 0
         err = None
         try:
-            timing.add_task(1, -1, self.func, 1, 'generate_id')
+            timing.add_task(1, -1, self.func, 1, 'generate_id_2')
         except Exception as e:
             err = str(e)
         self.assertEqual(err, 'interval must be bigger than 0')
@@ -55,7 +57,7 @@ class TimingTest(unittest.TestCase):
         # add task but func is not function
         err = None
         try:
-            timing.add_task(1, 1, 1, 1, 'generate_id')
+            timing.add_task(1, 1, 1, 1, 'generate_id_3')
         except Exception as e:
             err = str(e)
         self.assertEqual(err, 'func must be func')
@@ -63,7 +65,7 @@ class TimingTest(unittest.TestCase):
         # add task but count is not int
         err = None
         try:
-            timing.add_task(1, 1, self.func, '1', 'generate_id')
+            timing.add_task(1, 1, self.func, '1', 'generate_id_4')
         except Exception as e:
             err = str(e)
         self.assertEqual(err, 'count must be int')
@@ -71,50 +73,74 @@ class TimingTest(unittest.TestCase):
         timing.set_interval(1)
         timer = timing.Timing()
         timing.defaultTiming = timer
-        #
-        # # add task success
-        # self.timing_start()
-        # timing.add_task(1, 1, self.func, 1, 'generate_id')
-        # self.assertEqual(len(timer.task), 1)
-        # time.sleep(1.5)
-        # timing.stop()
-        # self.assertEqual(exec_num, 1)
-        # self.assertEqual(len(timer.task), 0)
-        # time.sleep(1)
-        # self.reset()
-        #
-        # # add task with count 3, wait 3.5, success
-        # self.timing_start()
-        # timing.add_task(1, 1, self.func, 3, 'generate_id')
-        # self.assertEqual(len(timer.task), 1)
-        # time.sleep(3.5)
-        # timing.stop()
-        # self.assertEqual(exec_num, 3)
-        # self.assertEqual(len(timer.task), 0)
-        # time.sleep(1)
-        # self.reset()
 
-        # add task with count 4, wait 3.5, success
-        timing.set_interval(1.2)
+        # add task success
         self.timing_start()
-        timing.add_task(1, 1, self.func, 4, 'generate_id')
-        time.sleep(3)
+        timing.add_task(1, 1, self.func, 1, 'generate_id_5')
+        self.assertEqual(len(timer.task), 1)
+        time.sleep(1.5)
+        timing.stop()
+        self.assertEqual(exec_num, 1)
+        self.assertEqual(len(timer.task), 0)
+        time.sleep(1)
+        self.reset()
+
+        # add task with count 3, wait 3.5, success
+        self.timing_start()
+        timing.add_task(1, 1, self.func, 3, 'generate_id_6')
+        self.assertEqual(len(timer.task), 1)
+        time.sleep(3.5)
         timing.stop()
-        # self.assertAlmostEqual(exec_num, 3, delta=1)
         self.assertEqual(exec_num, 3)
+        self.assertEqual(len(timer.task), 0)
         time.sleep(1)
         self.reset()
 
+        # add task with count 4, wait 3.5, success
+        t = self.timing_start()
+        timing.add_task('name_4', 1, self.func, 4, 'generate_id_7')
+        time.sleep(3.5)
+        timing.stop()
+        # self.assertAlmostEqual(exec_num, 3, delta=1)
+        time.sleep(5)
+        self.assertEqual(exec_num, 3)
+        self.assertEqual(len(timer.task), 1)
+        self.assertEqual(t.is_alive(), False)
+        timer.task = {}
+        self.reset()
+
         # add task with count less than 0, success
         print('-----------------------------------------')
-        timing.set_interval(1.2)
-        self.timing_start()
-        timing.add_task(1, 1, self.func, -1, 'generate_id')
-        time.sleep(3)
+        t = self.timing_start()
+        timing.add_task('name', 1, self.func, -1, 'generate_id_8')
+        time.sleep(3.5)
         timing.stop()
+        time.sleep(5)
         self.assertEqual(exec_num, 3)
+        self.assertEqual(len(timer.task), 1)
+        self.assertEqual(t.is_alive(), False)
+        timer.task = {}
         self.reset()
 
+        # add multi task, success
+        self.timing_start()
+        timing.add_task('name_9', 1, self.func, 0, 'generate_id_9')
+        timing.add_task('name_10', 1, self.func, 0, 'generate_id_10')
+        timing.add_task('name_11', 1, self.func, 0, 'generate_id_11')
+        timing.add_task('name_12', 1, self.func, 0, 'generate_id_12')
+        timing.add_task('name_13', 1, self.func, 0, 'generate_id_13')
+        timing.add_task('name_14', 1, self.func, 0, 'generate_id_14')
+        timing.add_task('name_15', 1, self.func, 0, 'generate_id_15')
+        timing.add_task('name_16', 1, self.func, 0, 'generate_id_16')
+        timing.add_task('name_17', 1, self.func, 0, 'generate_id_17')
+        timing.add_task('name_18', 1, self.func, 0, 'generate_id_18')
+        timing.add_task('name_19', 1, self.func, 0, 'generate_id_19')
+        timing.add_task('name_20', 1, self.func, 0, 'generate_id_20')
+        time.sleep(10)
+        self.assertAlmostEqual(exec_num, 100, delta=10)
+        timing.stop()
+        print(exec_num)
+
 
 if __name__ == '__main__':
     unittest.main()