X-Git-Url: http://andersk.mit.edu/gitweb/openssh.git/blobdiff_plain/6d3d14047502d13982ac4c434bf0b4c5f63fcf3f..15367d9590a1a9ba1b828a3f5018c6f0353bd334:/regress/multiplex.sh diff --git a/regress/multiplex.sh b/regress/multiplex.sh index 9940f15c..4fba7b5a 100644 --- a/regress/multiplex.sh +++ b/regress/multiplex.sh @@ -1,37 +1,65 @@ -# $OpenBSD: multiplex.sh,v 1.2 2004/06/16 13:16:40 dtucker Exp $ +# $OpenBSD: multiplex.sh,v 1.11 2005/04/25 09:54:09 dtucker Exp $ # Placed in the Public Domain. -CTL=$OBJ/ctl-sock +CTL=/tmp/openssh.regress.ctl-sock.$$ tid="connection multiplexing" +if grep "#define.*DISABLE_FD_PASSING" ${BUILDDIR}/config.h >/dev/null 2>&1 +then + echo "skipped (not supported on this platform)" + exit 0 +fi + +DATA=/bin/ls${EXEEXT} +COPY=$OBJ/ls.copy +LOG=$TEST_SSH_LOGFILE + start_sshd trace "start master, fork to background" -${SSH} -2 -MS$CTL -F $OBJ/ssh_config -f somehost sleep 60 +${SSH} -Nn2 -MS$CTL -F $OBJ/ssh_config -oSendEnv="_XXX_TEST" somehost & +MASTER_PID=$! + +# Wait for master to start and authenticate +sleep 5 + +verbose "test $tid: envpass" +trace "env passing over multiplexed connection" +_XXX_TEST=blah ${SSH} -oSendEnv="_XXX_TEST" -S$CTL otherhost sh << 'EOF' + test X"$_XXX_TEST" = X"blah" +EOF +if [ $? -ne 0 ]; then + fail "environment not found" +fi +verbose "test $tid: transfer" +rm -f ${COPY} trace "ssh transfer over multiplexed connection and check result" -${SSH} -S$CTL otherhost cat /bin/ls > $OBJ/ls.copy -test -f $OBJ/ls.copy || fail "failed copy /bin/ls" -cmp /bin/ls $OBJ/ls.copy || fail "corrupted copy of /bin/ls" +${SSH} -S$CTL otherhost cat ${DATA} > ${COPY} +test -f ${COPY} || fail "ssh -Sctl: failed copy ${DATA}" +cmp ${DATA} ${COPY} || fail "ssh -Sctl: corrupted copy of ${DATA}" +rm -f ${COPY} trace "ssh transfer over multiplexed connection and check result" -${SSH} -S $CTL otherhost cat /bin/ls > $OBJ/ls.copy -test -f $OBJ/ls.copy || fail "failed copy /bin/ls" -cmp /bin/ls $OBJ/ls.copy || fail "corrupted copy of /bin/ls" +${SSH} -S $CTL otherhost cat ${DATA} > ${COPY} +test -f ${COPY} || fail "ssh -S ctl: failed copy ${DATA}" +cmp ${DATA} ${COPY} || fail "ssh -S ctl: corrupted copy of ${DATA}" -rm -f $OBJ/ls.copy +rm -f ${COPY} trace "sftp transfer over multiplexed connection and check result" -echo "get /bin/ls $OBJ/ls.copy" | \ - ${SFTP} -oControlPath=$CTL otherhost >/dev/null 2>&1 -test -f $OBJ/ls.copy || fail "failed copy /bin/ls" -cmp /bin/ls $OBJ/ls.copy || fail "corrupted copy of /bin/ls" +echo "get ${DATA} ${COPY}" | \ + ${SFTP} -S ${SSH} -oControlPath=$CTL otherhost >$LOG 2>&1 +test -f ${COPY} || fail "sftp: failed copy ${DATA}" +cmp ${DATA} ${COPY} || fail "sftp: corrupted copy of ${DATA}" -rm -f $OBJ/ls.copy +rm -f ${COPY} trace "scp transfer over multiplexed connection and check result" -${SCP} -oControlPath=$CTL otherhost:/bin/ls $OBJ/ls.copy >/dev/null 2>&1 -test -f $OBJ/ls.copy || fail "failed copy /bin/ls" -cmp /bin/ls $OBJ/ls.copy || fail "corrupted copy of /bin/ls" +${SCP} -S ${SSH} -oControlPath=$CTL otherhost:${DATA} ${COPY} >$LOG 2>&1 +test -f ${COPY} || fail "scp: failed copy ${DATA}" +cmp ${DATA} ${COPY} || fail "scp: corrupted copy of ${DATA}" + +rm -f ${COPY} for s in 0 1 4 5 44; do trace "exit status $s over multiplexed connection" @@ -52,4 +80,13 @@ for s in 0 1 4 5 44; do fi done -sleep 30 # early close test sleeps 5 seconds per test +trace "test check command" +${SSH} -S $CTL -Ocheck otherhost || fail "check command failed" + +trace "test exit command" +${SSH} -S $CTL -Oexit otherhost || fail "send exit command failed" + +# Wait for master to exit +sleep 2 + +kill -0 $MASTER_PID >/dev/null 2>&1 && fail "exit command failed"