diff --git a/ChangeLog b/ChangeLog index 768e09bd6..e93749ed6 100644 --- a/ChangeLog +++ b/ChangeLog @@ -9,6 +9,9 @@ - dtucker@cvs.openbsd.org 2004/06/13 13:51:02 [Makefile test-exec.sh] Add scp regression test; with & ok markus@ + - djm@cvs.openbsd.org 2004/06/13 15:04:08 + [Makefile test-exec.sh] + regress test for client multiplexing; ok markus@ 20040615 - (djm) OpenBSD CVS Sync @@ -1234,4 +1237,4 @@ - (djm) Trim deprecated options from INSTALL. Mention UsePAM - (djm) Fix quote handling in sftp; Patch from admorten AT umich.edu -$Id: ChangeLog,v 1.3390 2004/06/16 10:15:59 dtucker Exp $ +$Id: ChangeLog,v 1.3391 2004/06/16 10:22:22 dtucker Exp $ diff --git a/regress/Makefile b/regress/Makefile index 8f15f3b4d..64674521b 100644 --- a/regress/Makefile +++ b/regress/Makefile @@ -1,4 +1,4 @@ -# $OpenBSD: Makefile,v 1.29 2004/06/13 13:51:02 dtucker Exp $ +# $OpenBSD: Makefile,v 1.30 2004/06/13 15:04:08 djm Exp $ REGRESS_TARGETS= t1 t2 t3 t4 t5 t6 t7 t-exec tests: $(REGRESS_TARGETS) @@ -36,7 +36,8 @@ LTESTS= connect \ sftp-batch \ reconfigure \ dynamic-forward \ - forwarding + forwarding \ + multiplex USER!= id -un CLEANFILES= t2.out t6.out1 t6.out2 t7.out t7.out.pub copy.1 copy.2 \ diff --git a/regress/multiplex.sh b/regress/multiplex.sh new file mode 100644 index 000000000..70a4e677f --- /dev/null +++ b/regress/multiplex.sh @@ -0,0 +1,55 @@ +# $OpenBSD: multiplex.sh,v 1.1 2004/06/13 15:04:08 djm Exp $ +# Placed in the Public Domain. + +CTL=$OBJ/ctl-sock + +tid="connection multiplexing" + +start_sshd + +trace "start master, fork to background" +${SSH} -2 -MS$CTL -F $OBJ/ssh_config -f somehost sleep 60 + +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" + +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" + +rm -f $OBJ/ls.copy +trace "sftp transfer over multiplexed connection and check result" +echo "get /bin/ls $OBJ/ls.copy" | \ + ${SFTP} -oControlPath=$CTL otherhost +test -f $OBJ/ls.copy || fail "failed copy /bin/ls" +cmp /bin/ls $OBJ/ls.copy || fail "corrupted copy of /bin/ls" + +rm -f $OBJ/ls.copy +trace "scp transfer over multiplexed connection and check result" +${SCP} -oControlPath=$CTL otherhost:/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" + +for s in 0 1 4 5 44; do + trace "exit status $s over multiplexed connection" + verbose "test $tid: status $s" + ${SSH} -S $CTL otherhost exit $s + r=$? + if [ $r -ne $s ]; then + fail "exit code mismatch for protocol $p: $r != $s" + fi + + # same with early close of stdout/err + trace "exit status $s with early close over multiplexed connection" + ${SSH} -S $CTL -n otherhost \ + exec sh -c \'"sleep 2; exec > /dev/null 2>&1; sleep 3; exit $s"\' + r=$? + if [ $r -ne $s ]; then + fail "exit code (with sleep) mismatch for protocol $p: $r != $s" + fi +done + +sleep 30 # early close test sleeps 5 seconds per test diff --git a/regress/test-exec.sh b/regress/test-exec.sh index c8827b631..1f7e38d6a 100644 --- a/regress/test-exec.sh +++ b/regress/test-exec.sh @@ -1,4 +1,4 @@ -# $OpenBSD: test-exec.sh,v 1.17 2004/06/13 13:51:02 dtucker Exp $ +# $OpenBSD: test-exec.sh,v 1.18 2004/06/13 15:04:08 djm Exp $ # Placed in the Public Domain. PORT=4242 @@ -41,6 +41,7 @@ unset SSH_AUTH_SOCK # defaults SSH=ssh SSHD=sshd +SCP=scp SSHAGENT=ssh-agent SSHADD=ssh-add SSHKEYGEN=ssh-keygen @@ -55,6 +56,9 @@ fi if [ "x$TEST_SSH_SSHD" != "x" ]; then SSHD="${TEST_SSH_SSHD}" fi +if [ "x$TEST_SSH_SCP" != "x" ]; then + SCP="${TEST_SSH_SCP}" +fi if [ "x$TEST_SSH_SSHAGENT" != "x" ]; then SSHAGENT="${TEST_SSH_SSHAGENT}" fi @@ -168,6 +172,7 @@ cat << EOF > $OBJ/sshd_config LogLevel QUIET AcceptEnv _XXX_TEST_* AcceptEnv _XXX_TEST + Subsystem sftp $SFTPSERVER StrictModes no EOF