diff --git a/tests/parallel.builder.sh b/tests/parallel.builder.sh index d9118eff12..280eb1de8c 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 eb5dd02c01..23f142059f 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 26411649d1..798c15f5b4 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