* Make this test a bit more robust. It's still timing dependent

though.
This commit is contained in:
Eelco Dolstra 2009-03-23 15:16:36 +00:00
parent 3a87163b24
commit 7aedcf9460
3 changed files with 14 additions and 10 deletions

View File

@ -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

View File

@ -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" [];

View File

@ -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