aboutsummaryrefslogtreecommitdiff
path: root/tests/referrers.sh
diff options
context:
space:
mode:
authorEelco Dolstra <e.dolstra@tudelft.nl>2008-06-09 13:52:45 +0000
committerEelco Dolstra <e.dolstra@tudelft.nl>2008-06-09 13:52:45 +0000
commitb0e92f6d474ce91d7f071f9ed62bbb2015009c58 (patch)
treec3d28be6b89dfa618df290d5c78c55897b119b6c /tests/referrers.sh
parent4ed01ed791b3bb7a4010049c6128aa2d49a81a29 (diff)
* Merged the no-bdb branch (-r10900:HEAD
https://svn.nixos.org/repos/nix/nix/branches/no-bdb).
Diffstat (limited to 'tests/referrers.sh')
-rw-r--r--tests/referrers.sh48
1 files changed, 43 insertions, 5 deletions
diff --git a/tests/referrers.sh b/tests/referrers.sh
index 4d2aaab5a..2fdf0cf7c 100644
--- a/tests/referrers.sh
+++ b/tests/referrers.sh
@@ -9,12 +9,50 @@ reference=$NIX_STORE_DIR/abcdef
touch $reference
(echo $reference && echo && echo 0) | $nixstore --register-validity
-echo "registering..."
-time for ((n = 0; n < $max; n++)); do
+echo "making registration..."
+
+for ((n = 0; n < $max; n++)); do
storePath=$NIX_STORE_DIR/$n
touch $storePath
- (echo $storePath && echo && echo 1 && echo $reference)
-done | $nixstore --register-validity
+ ref2=$NIX_STORE_DIR/$((n+1))
+ if test $((n+1)) = $max; then
+ ref2=$reference
+ fi
+ (echo $storePath && echo && echo 2 && echo $reference && echo $ref2)
+done > $TEST_ROOT/reg_info
+
+echo "registering..."
+
+time $nixstore --register-validity < $TEST_ROOT/reg_info
+
+oldTime=$(cat test-tmp/db/info/1 | grep Registered-At)
+
+echo "sleeping..."
+
+sleep 2
+
+echo "reregistering..."
+
+time $nixstore --register-validity --reregister < $TEST_ROOT/reg_info
+
+newTime=$(cat test-tmp/db/info/1 | grep Registered-At)
+
+if test "$newTime" != "$oldTime"; then
+ echo "reregistration changed original registration time"
+ exit 1
+fi
+
+if test "$(cat test-tmp/db/referrer/1 | wc -w)" != 1; then
+ echo "reregistration duplicated referrers"
+ exit 1
+fi
echo "collecting garbage..."
-time $nixstore --gc 2> /dev/null
+ln -sfn $reference "$NIX_STATE_DIR"/gcroots/ref
+time $nixstore --gc
+
+if test "$(cat test-tmp/db/referrer/abcdef | wc -w)" != 0; then
+ echo "referrers not cleaned up"
+ exit 1
+fi
+