display and/or create md5sum in user.md5 xattr
[cloudstore.git] / test.sh
diff --git a/test.sh b/test.sh
index 28a5db4..8518ecf 100755 (executable)
--- a/test.sh
+++ b/test.sh
 #!/bin/sh -xe
 
-log=/srv/cloudstore/users/dpavlin/log/
-rm -v $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
+base_dir=`pwd`
+
+RSYNC_LOGIN=`sudo ./create-user.sh test@example.com secret 500000`
+RSYNC_LOGIN2=`sudo ./create-user.sh test2@example.com secret 100000`
+
+. ./env.sh
+
 dir=/tmp/test
 rm -Rf "$dir"
 mkdir /tmp/test
 cd $dir
+
 push . --recursive --delete -v
+
+if [ ! -z "$ALL" ] ; then # skip tests if false
+
 ps ax > foo
 push foo -v
 push foo -v
 ps ax > bar
 push bar -v
+touch --date='2000-01-01' bar
+push bar -v
 pull bar baz
+push baz -v
 ps ax >> baz
-push bar -v
+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
 
-tail -20 $log/*
+pull non-existing || true
+
+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
+
+# test receiving of sent files
+mkdir /tmp/test/$RSYNC_LOGIN2
+RSYNC_PASSWORD=secret rsync -rv rsync://$RSYNC_LOGIN2@127.0.0.1:6501/$RSYNC_LOGIN2/received/ /tmp/test/$RSYNC_LOGIN2
+
+fi # skip tests
+
+# test file move
+
+ps ax > Jellyfish.jpg
+push Jellyfish.jpg
+
+mkdir -p .sync/pending
+cat << __pending__ > .sync/pending/test
+MOVED#Jellyfish.jpg#Photos with space/Jellyfish cool.jpg
+DELETED#Photos with space/Jellyfish cool.jpg
+DELETED#Photos with space
+__pending__
+
+push .sync -rv
+
+exit
+
+ps ax > perms-test
+chmod 400 perms-test
+push -va perms-test
+
+sudo sh -xc "ls -al ~$RSYNC_LOGIN/localhost/"
+
+
+
+
+find $SLICE/2001/ -type f | grep -v '/\.' | xargs md5sum | sort > /tmp/test/1
+FULL=1 $base_dir/user-md5sum.pl u2001 | sort > /tmp/test/2
 
-pull non-existing # dies, must be last
+diff /tmp/test/1 /tmp/test/2 && echo "OK - md5 database consistant with filesystem"