From 7aedcf946043468c169ab9b0a131be908804789b Mon Sep 17 00:00:00 2001 From: Eelco Dolstra Date: Mon, 23 Mar 2009 15:16:36 +0000 Subject: [PATCH] * Make this test a bit more robust. It's still timing dependent though. --- tests/parallel.builder.sh | 6 +++--- tests/parallel.nix | 4 +++- tests/parallel.sh | 14 ++++++++------ 3 files changed, 14 insertions(+), 10 deletions(-) diff --git a/tests/parallel.builder.sh b/tests/parallel.builder.sh index d9118eff1..280eb1de8 100644 --- a/tests/parallel.builder.sh +++ b/tests/parallel.builder.sh @@ -2,7 +2,7 @@ echo "DOING $text" # increase counter -while ! ln -s x $shared.lock; do +while ! ln -s x $shared.lock 2> /dev/null; do sleep 1 done test -f $shared.cur || echo 0 > $shared.cur @@ -17,11 +17,11 @@ rm $shared.lock echo -n $(cat $inputs)$text > $out -sleep 3 +sleep $sleepTime # decrease counter -while ! ln -s x $shared.lock; do +while ! ln -s x $shared.lock 2> /dev/null; do sleep 1 done test -f $shared.cur || echo 0 > $shared.cur diff --git a/tests/parallel.nix b/tests/parallel.nix index eb5dd02c0..23f142059 100644 --- a/tests/parallel.nix +++ b/tests/parallel.nix @@ -1,3 +1,5 @@ +{sleepTime ? 3}: + with import ./config.nix; let @@ -5,7 +7,7 @@ let mkDrv = text: inputs: mkDerivation { name = "parallel"; builder = ./parallel.builder.sh; - inherit text inputs shared; + inherit text inputs shared sleepTime; }; a = mkDrv "a" []; diff --git a/tests/parallel.sh b/tests/parallel.sh index 26411649d..798c15f5b 100644 --- a/tests/parallel.sh +++ b/tests/parallel.sh @@ -25,21 +25,23 @@ clearStore rm -f $SHARED.cur $SHARED.max -$nixbuild -j1 parallel.nix & +cmd="$nixbuild -j1 parallel.nix --argstr sleepTime 7" + +$cmd & pid1=$! echo "pid 1 is $pid1" -$nixbuild -j1 parallel.nix & +$cmd & pid2=$! echo "pid 2 is $pid2" -$nixbuild -j1 parallel.nix & +$cmd & pid3=$! echo "pid 3 is $pid3" -wait $pid1 -wait $pid2 -wait $pid3 +wait $pid1 || fail "instance 1 failed: $?" +wait $pid2 || fail "instance 2 failed: $?" +wait $pid3 || fail "instance 3 failed: $?" if test "$(cat $SHARED.cur)" != 0; then fail "wrong current process count"; fi if test "$(cat $SHARED.max)" != 3; then fail "not enough parallelism"; fi