multiplex.sh revision 218767
118334Speter# $OpenBSD: multiplex.sh,v 1.12 2009/05/05 07:51:36 dtucker Exp $ 290075Sobrien# Placed in the Public Domain. 390075Sobrien 418334SpeterCTL=/tmp/openssh.regress.ctl-sock.$$ 590075Sobrien 618334Spetertid="connection multiplexing" 790075Sobrien 890075Sobrienif config_defined DISABLE_FD_PASSING ; then 990075Sobrien echo "skipped (not supported on this platform)" 1090075Sobrien exit 0 1118334Speterfi 1290075Sobrien 1390075SobrienDATA=/bin/ls${EXEEXT} 1490075SobrienCOPY=$OBJ/ls.copy 1590075SobrienLOG=$TEST_SSH_LOGFILE 1618334Speter 1718334Speterstart_sshd 1890075Sobrien 1990075Sobrientrace "start master, fork to background" 2090075Sobrien${SSH} -Nn2 -MS$CTL -F $OBJ/ssh_config -oSendEnv="_XXX_TEST" somehost & 2118334SpeterMASTER_PID=$! 2218334Speter 2318334Speter# Wait for master to start and authenticate 2418334Spetersleep 5 2518334Speter 2618334Speterverbose "test $tid: envpass" 2718334Spetertrace "env passing over multiplexed connection" 2818334Speter_XXX_TEST=blah ${SSH} -F $OBJ/ssh_config -oSendEnv="_XXX_TEST" -S$CTL otherhost sh << 'EOF' 2918334Speter test X"$_XXX_TEST" = X"blah" 3018334SpeterEOF 3118334Speterif [ $? -ne 0 ]; then 3218334Speter fail "environment not found" 3318334Speterfi 3418334Speter 3518334Speterverbose "test $tid: transfer" 3618334Speterrm -f ${COPY} 3718334Spetertrace "ssh transfer over multiplexed connection and check result" 3850397Sobrien${SSH} -F $OBJ/ssh_config -S$CTL otherhost cat ${DATA} > ${COPY} 3950397Sobrientest -f ${COPY} || fail "ssh -Sctl: failed copy ${DATA}" 4050397Sobriencmp ${DATA} ${COPY} || fail "ssh -Sctl: corrupted copy of ${DATA}" 4150397Sobrien 4250397Sobrienrm -f ${COPY} 4350397Sobrientrace "ssh transfer over multiplexed connection and check result" 4450397Sobrien${SSH} -F $OBJ/ssh_config -S $CTL otherhost cat ${DATA} > ${COPY} 4550397Sobrientest -f ${COPY} || fail "ssh -S ctl: failed copy ${DATA}" 4650397Sobriencmp ${DATA} ${COPY} || fail "ssh -S ctl: corrupted copy of ${DATA}" 4790075Sobrien 4850397Sobrienrm -f ${COPY} 4918334Spetertrace "sftp transfer over multiplexed connection and check result" 5018334Speterecho "get ${DATA} ${COPY}" | \ 5118334Speter ${SFTP} -S ${SSH} -F $OBJ/ssh_config -oControlPath=$CTL otherhost >$LOG 2>&1 5218334Spetertest -f ${COPY} || fail "sftp: failed copy ${DATA}" 5318334Spetercmp ${DATA} ${COPY} || fail "sftp: corrupted copy of ${DATA}" 5418334Speter 5518334Speterrm -f ${COPY} 5618334Spetertrace "scp transfer over multiplexed connection and check result" 5718334Speter${SCP} -S ${SSH} -F $OBJ/ssh_config -oControlPath=$CTL otherhost:${DATA} ${COPY} >$LOG 2>&1 5818334Spetertest -f ${COPY} || fail "scp: failed copy ${DATA}" 5918334Spetercmp ${DATA} ${COPY} || fail "scp: corrupted copy of ${DATA}" 6018334Speter 6150397Sobrienrm -f ${COPY} 6250397Sobrien 6350397Sobrienfor s in 0 1 4 5 44; do 6418334Speter trace "exit status $s over multiplexed connection" 6518334Speter verbose "test $tid: status $s" 6618334Speter ${SSH} -F $OBJ/ssh_config -S $CTL otherhost exit $s 6718334Speter r=$? 6818334Speter if [ $r -ne $s ]; then 6918334Speter fail "exit code mismatch for protocol $p: $r != $s" 7018334Speter fi 7118334Speter 7218334Speter # same with early close of stdout/err 7318334Speter trace "exit status $s with early close over multiplexed connection" 7418334Speter ${SSH} -F $OBJ/ssh_config -S $CTL -n otherhost \ 7518334Speter exec sh -c \'"sleep 2; exec > /dev/null 2>&1; sleep 3; exit $s"\' 7618334Speter r=$? 7718334Speter if [ $r -ne $s ]; then 7818334Speter fail "exit code (with sleep) mismatch for protocol $p: $r != $s" 7950397Sobrien fi 8050397Sobriendone 8118334Speter 8218334Spetertrace "test check command" 8318334Speter${SSH} -F $OBJ/ssh_config -S $CTL -Ocheck otherhost || fail "check command failed" 8418334Speter 8590075Sobrientrace "test exit command" 8690075Sobrien${SSH} -F $OBJ/ssh_config -S $CTL -Oexit otherhost || fail "send exit command failed" 8790075Sobrien 8890075Sobrien# Wait for master to exit 8990075Sobriensleep 2 9090075Sobrien 9190075Sobrienkill -0 $MASTER_PID >/dev/null 2>&1 && fail "exit command failed" 9290075Sobrien