X-Git-Url: http://git.rot13.org/?a=blobdiff_plain;f=test.sh;h=8518ecfaee8cae4fe896a246efdbd1401de07fb3;hb=eaaf66c7ab6e529345899e4cfa8d21f30aa93084;hp=7889eec0dd41e59bb8f1fb3f005eb8d7f0ab1d7d;hpb=2a4ae3fb4b06bdc526154fb5d4cfb832d7b622fa;p=cloudstore.git diff --git a/test.sh b/test.sh index 7889eec..8518ecf 100755 --- a/test.sh +++ b/test.sh @@ -1,5 +1,136 @@ -#!/bin/sh +#!/bin/sh -xe + +RSYNC_LOGIN=fake + +push() { + file=`shift` + 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://$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 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 + +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 + +diff /tmp/test/1 /tmp/test/2 && echo "OK - md5 database consistant with filesystem" -ps ax > /tmp/foo -RSYNC_PASSWORD=secret rsync /tmp/foo rsync://dpavlin@127.0.0.1:6501/dpavlin -RSYNC_PASSWORD=secret rsync rsync://dpavlin@127.0.0.1:6501/dpavlin/foo /tmp/foo