port md5 support to TokyoCabinet
[cloudstore.git] / test.sh
diff --git a/test.sh b/test.sh
index 03f5bcf..707577f 100755 (executable)
--- a/test.sh
+++ b/test.sh
@@ -1,25 +1,34 @@
 #!/bin/sh -xe
 
-user_dir=/srv/cloudstore/users/dpavlin/
-rm -vf $user_dir/log/*
+RSYNC_LOGIN=fake
 
 push() {
        file=`shift`
-       RSYNC_PASSWORD=secret rsync $* $file rsync://dpavlin@127.0.0.1:6501/dpavlin/$file
+       RSYNC_PASSWORD=secret rsync $* $file rsync://$RSYNC_LOGIN@127.0.0.1:6501/$RSYNC_LOGIN/localhost/$file
 }
 pull() {
        from=$1
        to=$2
        test -z "$to" && to=$1
-       RSYNC_PASSWORD=secret rsync rsync://dpavlin@127.0.0.1:6501/dpavlin/$from $to
+       RSYNC_PASSWORD=secret rsync rsync://$RSYNC_LOGIN@127.0.0.1:6501/$RSYNC_LOGIN/localhost/$from $to
 }
 
 
+sudo ./remove-user.sh test@example.com
+sudo ./remove-user.sh test2@example.com
+
+RSYNC_LOGIN=`sudo ./create-user.sh test@example.com secret 500k`
+RSYNC_LOGIN2=`sudo ./create-user.sh test2@example.com secret 20k`
+
 dir=/tmp/test
 rm -Rf "$dir"
 mkdir /tmp/test
 cd $dir
+
 push . --recursive --delete -v
+
+if true ; then # skip tests if false
+
 ps ax > foo
 push foo -v
 push foo -v
@@ -31,19 +40,70 @@ pull bar baz
 push baz -v
 ps ax >> baz
 push baz -v
+cp baz baz2
+push baz baz2 -v
+
 mkdir dir-test
 # deduplicate?
 cp foo bar dir-test/
 uptime > "dir-test/file with spaces"
 push dir-test --recursive -v
+
+find . type -f | xargs -i md5sum {} > /tmp/md5sum
+
 rm foo bar
 push dir-test --recursive --delete -v
 rm -Rf dir-test
 
 pull non-existing || true
 
-tail -20 $user_dir/log/*
+cp /tmp/md5sum md5sum
+mkdir clone
+# test md5 import from directory
+mv md5sum clone/
+push clone -r -v
+# client should hardlink or copy files locally to avoid wastefull pull
+# but we test server-side hardlink here
+pull clone -r -v
+
+md5sum clone/* | sed -e 's!  !  _import/foo/bar/baz!' > md5sum
+cat md5sum
+push md5sum -v
+
+# test unused md5 pool quota
+
+ps ax > tmp
+push tmp -v
+rm tmp
+push . -r --delete -v
+
+# test send
+
+ps ax >> send
+mkdir dir1
+ps ax >> dir1/send
+mkdir dir2
+ps ax >> dir2/send
+
+mkdir -p .sync/send
+cat << __SEND__ > .sync/send/timestamp
+$RSYNC_LOGIN2 send
+$RSYNC_LOGIN2 dir1/send
+$RSYNC_LOGIN2 dir2/send
+__SEND__
+
+# order is important! .sync must be last!
+push send dir1 dir2 .sync -rv
+
+
+fi # skip tests
+
+# test file move
 
-diff -urw $user_dir/blob $dir/
-diff -urw $user_dir/json $dir/
+pending=/tmp/pending.0610201109464117
+grep ^MOVED $pending | cut -d\# -f2 | xargs -i sh -c "ps ax > {}"
+push . -rv
 
+mkdir -p .sync/pending
+cp $pending .sync/pending/
+push .sync -rv