From d7b2d11255d048dd9aa59e49848baa5977b718e3 Mon Sep 17 00:00:00 2001 From: Eelco Dolstra Date: Sun, 22 Mar 2009 23:16:18 +0000 Subject: [PATCH] * Test case (currently fails): multiple Nix builds shouldn't block waiting on the same lock when there are other builds that can be done. --- tests/parallel.sh | 36 ++++++++++++++++++++++++++++++++++-- 1 file changed, 34 insertions(+), 2 deletions(-) diff --git a/tests/parallel.sh b/tests/parallel.sh index c41a28b1a..26411649d 100644 --- a/tests/parallel.sh +++ b/tests/parallel.sh @@ -1,7 +1,12 @@ source common.sh +# First, test that -jN performs builds in parallel. +echo "testing nix-build -j..." + clearStore +rm -f $SHARED.cur $SHARED.max + outPath=$($nixbuild -j10000 parallel.nix) echo "output path is $outPath" @@ -9,5 +14,32 @@ echo "output path is $outPath" text=$(cat "$outPath") if test "$text" != "abacade"; then exit 1; fi -if test "$(cat $SHARED.cur)" != 0; then exit 1; fi -if test "$(cat $SHARED.max)" != 3; then exit 1; fi +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 + +# Second, test that parallel invocations of nix-build perform builds +# in parallel, and don't block waiting on locks held by the others. +echo "testing multiple nix-build -j1..." + +clearStore + +rm -f $SHARED.cur $SHARED.max + +$nixbuild -j1 parallel.nix & +pid1=$! +echo "pid 1 is $pid1" + +$nixbuild -j1 parallel.nix & +pid2=$! +echo "pid 2 is $pid2" + +$nixbuild -j1 parallel.nix & +pid3=$! +echo "pid 3 is $pid3" + +wait $pid1 +wait $pid2 +wait $pid3 + +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