diff options
author | Eelco Dolstra <e.dolstra@tudelft.nl> | 2009-03-22T23·16+0000 |
---|---|---|
committer | Eelco Dolstra <e.dolstra@tudelft.nl> | 2009-03-22T23·16+0000 |
commit | d7b2d11255d048dd9aa59e49848baa5977b718e3 (patch) | |
tree | 9f4d15c0640695e95924755a9a9bde2f13d47273 | |
parent | 7a57b2920b7f04ab0cdd42687dd183217231549e (diff) |
* Test case (currently fails): multiple Nix builds shouldn't block
waiting on the same lock when there are other builds that can be done.
-rw-r--r-- | tests/parallel.sh | 36 |
1 files changed, 34 insertions, 2 deletions
diff --git a/tests/parallel.sh b/tests/parallel.sh index c41a28b1ad1a..26411649d1e6 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 |