X-Git-Url: https://mattmccutchen.net/rsync/rsync.git/blobdiff_plain/232ce2b2c8ce48020b4d5d26969c5dca9337a883..0e9c3564c6763e4d99d7b518ccc27e60de622a3b:/testsuite/daemon.test diff --git a/testsuite/daemon.test b/testsuite/daemon.test index 7afe16e1..113d6a59 100644 --- a/testsuite/daemon.test +++ b/testsuite/daemon.test @@ -5,10 +5,10 @@ # This program is distributable under the terms of the GNU GPL (see # COPYING) -# This test starts up an rsync daemon on a high-numbered port using a -# configuration file from the test directory. I can't think of a good -# way to choose it dynamically at the moment, so we just use 2612. If -# that's in use then you lose. +# 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: @@ -19,47 +19,71 @@ # checking the log file # password authentication -# TODO: Put the common framework in a common file, so that we can have -# subtests fail and keep going. +. "$suitedir/rsync.fns" + +chkfile="$scratchdir/rsync.chk" +outfile="$scratchdir/rsync.out" + +SSH="src/support/lsh --no-cd" +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 "$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 "$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" -source "$suitedir/rsync.fns" - -# Build an appropriate configuration file -conf="$scratchdir/test-rsyncd.conf" -echo "building configuration $conf" - -port=2612 -pidfile="$scratchdir/rsyncd.pid" -logfile="$scratchdir/rsyncd.log" - -cat >$conf <