Fixed the interaction of --fake-super with --link-dest & --xattrs.
[rsync/rsync.git] / testsuite / daemon.test
index 028fc78..439b883 100644 (file)
@@ -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:
 
 
 . "$suitedir/rsync.fns"
 
-# Build an appropriate configuration file
-conf="$scratchdir/test-rsyncd.conf"
-echo "building configuration $conf"
+SSH="$scratchdir/pretend-ssh"
 
-port=2612
-pidfile="$scratchdir/rsyncd.pid"
-logfile="$scratchdir/rsyncd.log"
+cat >"$SSH" <<'EOT'
+while : ; do
+    case "$1" in
+    -*) shift ;;
+    localhost) shift; break ;;
+    *) exit 1 ;;
+    esac
+done
 
-cat >$conf <<EOF
-# rsyncd configuration file autogenerated by $0
+eval "${@}"
+EOT
+chmod +x "$SSH"
 
-pid file = $pidfile
-use chroot = no
-hosts allow = localhost, 127.0.0.1
-log file = $logfile
+build_rsyncd_conf
 
-[test-from] = $scratchdir/daemon-from/
-       read only = yes
+cd "$scratchdir"
 
-[test-to] = $scratchdir/daemon-to/
-       read only = no
+ln -s test-rsyncd.conf rsyncd.conf
 
-EOF
+$RSYNC -ve $SSH --rsync-path="$RSYNC" localhost::
 
+RSYNC_CONNECT_PROG="$RSYNC --config=$conf --daemon"
+export RSYNC_CONNECT_PROG
 
-
-echo starting daemon
-$rsync_bin --daemon --port $port --config $conf
-sleep 2
-pid=`cat "$pidfile"`
-echo rsyncd running as process $pid
-
-
-# We need to make sure that we always kill rsync, even if there's an
-# error.  Otherwise it might hang around, and be insecure or at any
-# rate keep the port bound and prevent the tests running in the
-# future.
-
-trap "echo killing off process $pid; kill $pid" EXIT
+$RSYNC -v localhost::