#!/bin/sh # Copyright (C) 2001 by Martin Pool # This program is distributable under the terms of the GNU GPL (see # COPYING) # We don't really want to start the server listening, because that # might interfere with the security or operation of the test machine. # Instead we use the fake-connect feature to dynamically assign a pair # of ports. # Having started the server we try some basic operations against it: # getting a list of module # listing files in a module # retrieving a module # uploading to a module # checking the log file # password authentication . "$suitedir/rsync.fns" chkfile="$scratchdir/rsync.chk" outfile="$scratchdir/rsync.out" SSH="src/support/lsh --no-cd" FILE_REPL='s/^\([^d][^ ]*\) *\(..........[0-9]\) /\1 \2 /' DIR_REPL='s/^\(d[^ ]*\) *[0-9][.,0-9]* /\1 DIR /' LS_REPL='s;[0-9][0-9][0-9][0-9]/[0-9][0-9]/[0-9][0-9] [0-9][0-9]:[0-9][0-9]:[0-9][0-9];####/##/## ##:##:##;' build_rsyncd_conf makepath "$fromdir/foo" "$fromdir/bar/baz" makepath "$todir" echo one >"$fromdir/foo/one" echo two >"$fromdir/bar/two" echo three >"$fromdir/bar/baz/three" cd "$scratchdir" ln -s test-rsyncd.conf rsyncd.conf confopt='' case `id -u` in 0) # Root needs to specify the config file, or it uses /etc/rsyncd.conf. echo "Forcing --config=$conf" confopt=" --config=$conf" ;; esac $RSYNC -ve "$SSH" --rsync-path="$RSYNC$confopt" localhost:: RSYNC_CONNECT_PROG="$RSYNC --config=$conf --daemon" export RSYNC_CONNECT_PROG $RSYNC -v localhost:: \ | tee "$outfile" # These have a space-padded 15-char name, then a tab, then a comment. sed 's/NOCOMMENT//' <"$chkfile" test-from r/o test-to r/w test-scratch NOCOMMENT EOT diff $diffopt "$chkfile" "$outfile" || test_fail "test 1 failed" $RSYNC -r localhost::test-hidden \ | sed "$FILE_REPL" | sed "$DIR_REPL" | sed "$LS_REPL" \ | tee "$outfile" cat <"$chkfile" drwxr-xr-x DIR ####/##/## ##:##:## . drwxr-xr-x DIR ####/##/## ##:##:## bar -rw-r--r-- 4 ####/##/## ##:##:## bar/two drwxr-xr-x DIR ####/##/## ##:##:## bar/baz -rw-r--r-- 6 ####/##/## ##:##:## bar/baz/three drwxr-xr-x DIR ####/##/## ##:##:## foo -rw-r--r-- 4 ####/##/## ##:##:## foo/one EOT diff $diffopt "$chkfile" "$outfile" || test_fail "test 2 failed" $RSYNC -r localhost::test-from/f* \ | sed "$FILE_REPL" | sed "$DIR_REPL" | sed "$LS_REPL" \ | tee "$outfile" cat <"$chkfile" drwxr-xr-x DIR ####/##/## ##:##:## foo -rw-r--r-- 4 ####/##/## ##:##:## foo/one EOT diff $diffopt "$chkfile" "$outfile" || test_fail "test 3 failed"