chiark / gitweb /
barrier: fix race in test-code
authorDavid Herrmann <dh.herrmann@gmail.com>
Tue, 29 Jul 2014 17:14:23 +0000 (19:14 +0200)
committerDavid Herrmann <dh.herrmann@gmail.com>
Tue, 29 Jul 2014 17:19:49 +0000 (19:19 +0200)
The barrier_wait_next_twice* test-cases run:
  Parent:                             Child:
    set_alarm(10)                       sleep_for(1);
    ...                                 set_alarm(1);
    sleep_for(2)                        ...

Therefore, the parent exits after 2+ periods, the client's alarm fires
after 2+ periods. This race turns out to be lost by the child on other
machines, so avoid it by increasing the parent's sleep-interval to 4. This
way, the client has 2 periods to run the barrier test, which is far more
than enough.

src/test/test-barrier.c

index ac9dd04b991f6d585e325ae28710f2605e6ca1ee..36f27809cad60ec67c70ad47c0173844bb643624 100644 (file)
@@ -176,7 +176,7 @@ TEST_BARRIER(test_barrier_wait_next_twice,
                 set_alarm(BASE_TIME * 10);
                 assert_se(barrier_place(&b));
                 assert_se(barrier_place(&b));
-                sleep_for(BASE_TIME * 2);
+                sleep_for(BASE_TIME * 4);
         }),
         TEST_BARRIER_WAIT_SUCCESS(pid2));
 
@@ -201,7 +201,7 @@ TEST_BARRIER(test_barrier_wait_next_twice_local,
                 set_alarm(BASE_TIME * 10);
                 assert_se(barrier_place(&b));
                 assert_se(barrier_place(&b));
-                sleep_for(BASE_TIME * 2);
+                sleep_for(BASE_TIME * 4);
         }),
         TEST_BARRIER_WAIT_SUCCESS(pid2));