1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198
|
#!/bin/bash -ex
# SPDX-License-Identifier: LGPL-2.1+
DIGEST=${1:-sha512-256}
COMPRESSION=${2:-zstd}
# Skip the test if given compressor is unavailable
[ $COMPRESSION != "gzip" -o @HAVE_LIBZ@ = 1 ] || exit 77
[ $COMPRESSION != "xz" -o @HAVE_LIBLZMA@ = 1 ] || exit 77
[ $COMPRESSION != "zstd" -o @HAVE_LIBZSTD@ = 1 ] || exit 77
PARAMS="-v --digest=$DIGEST --compression=$COMPRESSION"
if [ $UID != 0 ]; then
PARAMS="$PARAMS --without=privileged"
fi
export CASYNC_PROTOCOL_PATH=@top_builddir@
SCRATCH_DIR=${TMPDIR:-/var/tmp}/test-casync.$RANDOM
mkdir -p $SCRATCH_DIR/src
mkdir $SCRATCH_DIR/src/casync
if [ $UID = 0 ]; then
cp -a @top_srcdir@/{test-files,src} $SCRATCH_DIR/src/casync/
else
# If we lack privileges we use rsync rather than cp to copy, as it will just skip over device nodes
rsync -a --exclude=.cacac @top_srcdir@/{test-files,src} $SCRATCH_DIR/src/casync/
fi
cd $SCRATCH_DIR/src
@top_builddir@/casync $PARAMS list >$SCRATCH_DIR/test.list
@top_builddir@/casync $PARAMS mtree >$SCRATCH_DIR/test.mtree
@top_builddir@/casync $PARAMS digest >$SCRATCH_DIR/test.digest
@top_builddir@/casync $PARAMS make $SCRATCH_DIR/test.catar
@top_builddir@/casync $PARAMS list $SCRATCH_DIR/test.catar >$SCRATCH_DIR/test.catar.list
@top_builddir@/casync $PARAMS mtree $SCRATCH_DIR/test.catar >$SCRATCH_DIR/test.catar.mtree
@top_builddir@/casync $PARAMS digest $SCRATCH_DIR/test.catar >$SCRATCH_DIR/test.catar.digest
@top_builddir@/test-calc-digest $DIGEST $SCRATCH_DIR/test.catar >$SCRATCH_DIR/test.catar.digest2
@top_builddir@/casync $PARAMS $DIRS make $SCRATCH_DIR/test.caidx
@top_builddir@/casync $PARAMS $DIRS list $SCRATCH_DIR/test.caidx >$SCRATCH_DIR/test.caidx.list
@top_builddir@/casync $PARAMS $DIRS mtree $SCRATCH_DIR/test.caidx >$SCRATCH_DIR/test.caidx.mtree
@top_builddir@/casync $PARAMS $DIRS digest $SCRATCH_DIR/test.caidx >$SCRATCH_DIR/test.caidx.digest
diff -q $SCRATCH_DIR/test.list $SCRATCH_DIR/test.catar.list
diff -q $SCRATCH_DIR/test.list $SCRATCH_DIR/test.caidx.list
diff -q $SCRATCH_DIR/test.mtree $SCRATCH_DIR/test.catar.mtree
diff -q $SCRATCH_DIR/test.mtree $SCRATCH_DIR/test.caidx.mtree
diff -q $SCRATCH_DIR/test.digest $SCRATCH_DIR/test.catar.digest
diff -q $SCRATCH_DIR/test.digest $SCRATCH_DIR/test.catar.digest2
diff -q $SCRATCH_DIR/test.digest $SCRATCH_DIR/test.caidx.digest
### Test Extraction
@top_builddir@/casync $PARAMS extract $SCRATCH_DIR/test.catar $SCRATCH_DIR/extract-catar
@top_builddir@/casync $PARAMS extract $SCRATCH_DIR/test.catar --seed=$SCRATCH_DIR/extract-catar --hardlink=no $SCRATCH_DIR/extract-catar2
@top_builddir@/casync $PARAMS extract $SCRATCH_DIR/test.catar --seed=$SCRATCH_DIR/extract-catar --hardlink=yes $SCRATCH_DIR/extract-catar3
@top_builddir@/casync $PARAMS extract $SCRATCH_DIR/test.caidx $SCRATCH_DIR/extract-caidx
@top_builddir@/casync $PARAMS extract $SCRATCH_DIR/test.caidx --seed=$SCRATCH_DIR/extract-caidx $SCRATCH_DIR/extract-caidx2
set +e
diff -ur --no-dereference . $SCRATCH_DIR/extract-catar
diff -ur --no-dereference . $SCRATCH_DIR/extract-catar2
diff -ur --no-dereference . $SCRATCH_DIR/extract-catar3
diff -ur --no-dereference . $SCRATCH_DIR/extract-caidx
diff -ur --no-dereference . $SCRATCH_DIR/extract-caidx2
set -e
@top_builddir@/casync $PARAMS list $SCRATCH_DIR/extract-catar >$SCRATCH_DIR/test.extract-catar.list
@top_builddir@/casync $PARAMS list $SCRATCH_DIR/extract-catar2 >$SCRATCH_DIR/test.extract-catar2.list
@top_builddir@/casync $PARAMS list $SCRATCH_DIR/extract-catar3 >$SCRATCH_DIR/test.extract-catar3.list
@top_builddir@/casync $PARAMS list $SCRATCH_DIR/extract-caidx >$SCRATCH_DIR/test.extract-caidx.list
@top_builddir@/casync $PARAMS list $SCRATCH_DIR/extract-caidx2 >$SCRATCH_DIR/test.extract-caidx2.list
@top_builddir@/casync $PARAMS mtree $SCRATCH_DIR/extract-catar >$SCRATCH_DIR/test.extract-catar.mtree
@top_builddir@/casync $PARAMS mtree $SCRATCH_DIR/extract-catar2 >$SCRATCH_DIR/test.extract-catar2.mtree
@top_builddir@/casync $PARAMS mtree $SCRATCH_DIR/extract-catar3 >$SCRATCH_DIR/test.extract-catar3.mtree
@top_builddir@/casync $PARAMS mtree $SCRATCH_DIR/extract-caidx >$SCRATCH_DIR/test.extract-caidx.mtree
@top_builddir@/casync $PARAMS mtree $SCRATCH_DIR/extract-caidx2 >$SCRATCH_DIR/test.extract-caidx2.mtree
@top_builddir@/casync $PARAMS digest $SCRATCH_DIR/extract-catar >$SCRATCH_DIR/test.extract-catar.digest
@top_builddir@/casync $PARAMS digest $SCRATCH_DIR/extract-catar2 >$SCRATCH_DIR/test.extract-catar2.digest
@top_builddir@/casync $PARAMS digest $SCRATCH_DIR/extract-catar3 >$SCRATCH_DIR/test.extract-catar3.digest
@top_builddir@/casync $PARAMS digest $SCRATCH_DIR/extract-caidx >$SCRATCH_DIR/test.extract-caidx.digest
@top_builddir@/casync $PARAMS digest $SCRATCH_DIR/extract-caidx2 >$SCRATCH_DIR/test.extract-caidx2.digest
diff -q $SCRATCH_DIR/test.list $SCRATCH_DIR/test.extract-catar.list
diff -q $SCRATCH_DIR/test.list $SCRATCH_DIR/test.extract-catar2.list
diff -q $SCRATCH_DIR/test.list $SCRATCH_DIR/test.extract-catar3.list
diff -q $SCRATCH_DIR/test.list $SCRATCH_DIR/test.extract-caidx.list
diff -q $SCRATCH_DIR/test.list $SCRATCH_DIR/test.extract-caidx2.list
diff -q $SCRATCH_DIR/test.mtree $SCRATCH_DIR/test.extract-catar.mtree
diff -q $SCRATCH_DIR/test.mtree $SCRATCH_DIR/test.extract-catar2.mtree
diff -q $SCRATCH_DIR/test.mtree $SCRATCH_DIR/test.extract-catar3.mtree
diff -q $SCRATCH_DIR/test.mtree $SCRATCH_DIR/test.extract-caidx.mtree
diff -q $SCRATCH_DIR/test.mtree $SCRATCH_DIR/test.extract-caidx2.mtree
diff -q $SCRATCH_DIR/test.digest $SCRATCH_DIR/test.extract-catar.digest
diff -q $SCRATCH_DIR/test.digest $SCRATCH_DIR/test.extract-catar2.digest
diff -q $SCRATCH_DIR/test.digest $SCRATCH_DIR/test.extract-catar3.digest
diff -q $SCRATCH_DIR/test.digest $SCRATCH_DIR/test.extract-caidx.digest
diff -q $SCRATCH_DIR/test.digest $SCRATCH_DIR/test.extract-caidx2.digest
### Test seeking
@top_builddir@/casync $PARAMS make $SCRATCH_DIR/seek.catar
@top_builddir@/casync $PARAMS make $SCRATCH_DIR/seek.caidx
@top_builddir@/casync $PARAMS extract $SCRATCH_DIR/seek.catar $SCRATCH_DIR/extract-seek-catar casync/test-files
@top_builddir@/casync $PARAMS extract $SCRATCH_DIR/seek.caidx $SCRATCH_DIR/extract-seek-caidx casync/test-files
@top_builddir@/casync $PARAMS mtree casync/test-files >$SCRATCH_DIR/original-seek.mtree
@top_builddir@/casync $PARAMS digest casync/test-files >$SCRATCH_DIR/original-seek.digest
@top_builddir@/casync $PARAMS mtree $SCRATCH_DIR/extract-seek-catar/test-files >$SCRATCH_DIR/extract-seek-catar.mtree
@top_builddir@/casync $PARAMS digest $SCRATCH_DIR/extract-seek-catar/test-files >$SCRATCH_DIR/extract-seek-catar.digest
@top_builddir@/casync $PARAMS mtree $SCRATCH_DIR/extract-seek-caidx/test-files >$SCRATCH_DIR/extract-seek-caidx.mtree
@top_builddir@/casync $PARAMS digest $SCRATCH_DIR/extract-seek-caidx/test-files >$SCRATCH_DIR/extract-seek-caidx.digest
@top_builddir@/casync $PARAMS digest $SCRATCH_DIR/seek.catar casync/test-files >$SCRATCH_DIR/extract-seek-catar-direct.digest
@top_builddir@/casync $PARAMS digest $SCRATCH_DIR/seek.caidx casync/test-files >$SCRATCH_DIR/extract-seek-caidx-direct.digest
diff -q $SCRATCH_DIR/original-seek.digest $SCRATCH_DIR/extract-seek-catar.digest
diff -q $SCRATCH_DIR/original-seek.digest $SCRATCH_DIR/extract-seek-caidx.digest
diff -q $SCRATCH_DIR/original-seek.digest $SCRATCH_DIR/extract-seek-catar-direct.digest
diff -q $SCRATCH_DIR/original-seek.digest $SCRATCH_DIR/extract-seek-caidx-direct.digest
diff -q $SCRATCH_DIR/original-seek.mtree $SCRATCH_DIR/extract-seek-catar.mtree
diff -q $SCRATCH_DIR/original-seek.mtree $SCRATCH_DIR/extract-seek-caidx.mtree
### Test SSH Remoting
export CASYNC_SSH_PATH=@top_srcdir@/test/pseudo-ssh
export CASYNC_REMOTE_PATH=@top_builddir@/casync
@top_builddir@/casync $PARAMS list localhost:$SCRATCH_DIR/test.caidx >$SCRATCH_DIR/test-remote.caidx.list
@top_builddir@/casync $PARAMS mtree localhost:$SCRATCH_DIR/test.caidx >$SCRATCH_DIR/test-remote.caidx.mtree
@top_builddir@/casync $PARAMS digest localhost:$SCRATCH_DIR/test.caidx >$SCRATCH_DIR/test-remote.caidx.digest
@top_builddir@/casync $PARAMS list localhost:$SCRATCH_DIR/test.catar >$SCRATCH_DIR/test-remote.catar.list
@top_builddir@/casync $PARAMS mtree localhost:$SCRATCH_DIR/test.catar >$SCRATCH_DIR/test-remote.catar.mtree
@top_builddir@/casync $PARAMS digest localhost:$SCRATCH_DIR/test.catar >$SCRATCH_DIR/test-remote.catar.digest
diff -q $SCRATCH_DIR/test.list $SCRATCH_DIR/test-remote.caidx.list
diff -q $SCRATCH_DIR/test.mtree $SCRATCH_DIR/test-remote.caidx.mtree
diff -q $SCRATCH_DIR/test.digest $SCRATCH_DIR/test-remote.caidx.digest
diff -q $SCRATCH_DIR/test.list $SCRATCH_DIR/test-remote.catar.list
diff -q $SCRATCH_DIR/test.mtree $SCRATCH_DIR/test-remote.catar.mtree
diff -q $SCRATCH_DIR/test.digest $SCRATCH_DIR/test-remote.catar.digest
rm -rf $SCRATCH_DIR/default.castr
@top_builddir@/casync $PARAMS make localhost:$SCRATCH_DIR/test2.caidx
@top_builddir@/casync $PARAMS list $SCRATCH_DIR/test2.caidx >$SCRATCH_DIR/test2.caidx.list
@top_builddir@/casync $PARAMS mtree $SCRATCH_DIR/test2.caidx >$SCRATCH_DIR/test2.caidx.mtree
@top_builddir@/casync $PARAMS digest $SCRATCH_DIR/test2.caidx >$SCRATCH_DIR/test2.caidx.digest
diff -q $SCRATCH_DIR/test.list $SCRATCH_DIR/test2.caidx.list
diff -q $SCRATCH_DIR/test.mtree $SCRATCH_DIR/test2.caidx.mtree
diff -q $SCRATCH_DIR/test.digest $SCRATCH_DIR/test2.caidx.digest
@top_builddir@/casync $PARAMS make localhost:$SCRATCH_DIR/test2.catar
@top_builddir@/casync $PARAMS list $SCRATCH_DIR/test2.catar >$SCRATCH_DIR/test2.catar.list
@top_builddir@/casync $PARAMS mtree $SCRATCH_DIR/test2.catar >$SCRATCH_DIR/test2.catar.mtree
@top_builddir@/casync $PARAMS digest $SCRATCH_DIR/test2.catar >$SCRATCH_DIR/test2.catar.digest
diff -q $SCRATCH_DIR/test.list $SCRATCH_DIR/test2.catar.list
diff -q $SCRATCH_DIR/test.mtree $SCRATCH_DIR/test2.catar.mtree
diff -q $SCRATCH_DIR/test.digest $SCRATCH_DIR/test2.catar.digest
### Test HTTP Remoting
HTTP_PORT=$((10000 + $$ % 10000))
export CASYNC_PROTOCOL_PATH=@top_builddir@
HTTP_PID=`@top_builddir@/notify-wait @top_srcdir@/test/http-server.py $SCRATCH_DIR $HTTP_PORT`
@top_builddir@/casync $PARAMS list http://localhost:$HTTP_PORT/test2.caidx >$SCRATCH_DIR/test3.caidx.list
@top_builddir@/casync $PARAMS mtree http://localhost:$HTTP_PORT/test2.caidx >$SCRATCH_DIR/test3.caidx.mtree
@top_builddir@/casync $PARAMS digest http://localhost:$HTTP_PORT/test2.caidx >$SCRATCH_DIR/test3.caidx.digest
@top_builddir@/casync $PARAMS list http://localhost:$HTTP_PORT/test2.catar >$SCRATCH_DIR/test3.catar.list
@top_builddir@/casync $PARAMS mtree http://localhost:$HTTP_PORT/test2.catar >$SCRATCH_DIR/test3.catar.mtree
@top_builddir@/casync $PARAMS digest http://localhost:$HTTP_PORT/test2.catar >$SCRATCH_DIR/test3.catar.digest
diff -q $SCRATCH_DIR/test.list $SCRATCH_DIR/test3.caidx.list
diff -q $SCRATCH_DIR/test.mtree $SCRATCH_DIR/test3.caidx.mtree
diff -q $SCRATCH_DIR/test.digest $SCRATCH_DIR/test3.caidx.digest
diff -q $SCRATCH_DIR/test.list $SCRATCH_DIR/test3.catar.list
diff -q $SCRATCH_DIR/test.mtree $SCRATCH_DIR/test3.catar.mtree
diff -q $SCRATCH_DIR/test.digest $SCRATCH_DIR/test3.catar.digest
kill $HTTP_PID
chmod -R u+rwx $SCRATCH_DIR
rm -rf $SCRATCH_DIR
|