Selaa lähdekoodia

Test: add some test points in timer unit test

bel 8 vuotta sitten
vanhempi
commit
3649700a6d
1 muutettua tiedostoa jossa 22 lisäystä ja 2 poistoa
  1. 22 2
      test/timertest.c

+ 22 - 2
test/timertest.c

@@ -76,21 +76,33 @@ START_TEST(test_timer_cyclic)
 	c[1] = 5;
 	timer_add(&ctx, 0, 0.2, 1, action1, c + 1);
 
+    mark_point();
+
 	mg_sleep(1000); /* Sleep 1 second - timer will run */
 
+    mark_point();
 	ctx.stop_flag = 99; /* End timer thread */
+    mark_point();
 
 	mg_sleep(1000); /* Sleep 1 second - timer will not run */
 
+    mark_point();
+
 	timers_exit(&ctx);
 
-	mg_sleep(100);
+	mark_point();
+    mg_sleep(100);
 
 #ifdef LOCAL_TEST
+    /* If performed locally (on a physical machine that's not overloaded),
+     * timing will be precise to the ~100 ms required here. */
 	ck_assert_int_eq(c[0], 0);
 	ck_assert_int_eq(c[1], 0);
 	ck_assert_int_eq(c[2], 0);
 #else
+    /* If this test runs in a virtual environment, like the CI unit test
+     * containers, there might be some timing deviations, so check the
+     * counter with some tolerance. */
 	ck_assert_int_ge(c[0], -1);
 	ck_assert_int_le(c[0], +1);
 	ck_assert_int_ge(c[1], -1);
@@ -133,14 +145,22 @@ START_TEST(test_timer_oneshot)
 	c[1] = 5;
 	timer_add(&ctx, 0, 0.2, 1, action2, c + 1);
 
+    mark_point();
+
 	mg_sleep(1000); /* Sleep 1 second - timer will run */
 
+    mark_point();
 	ctx.stop_flag = 99; /* End timer thread */
+    mark_point();
 
 	mg_sleep(1000); /* Sleep 1 second - timer will not run */
 
+    mark_point();
+
 	timers_exit(&ctx);
-	mg_sleep(100);
+
+	mark_point();
+    mg_sleep(100);
 
 	ck_assert_int_eq(c[0], 9);
 	ck_assert_int_eq(c[1], 4);