openssh/regress
Darren Tucker 6223eea596 - dtucker@cvs.openbsd.org 2004/06/22 22:45:52
[regress/test-exec.sh]
     Add TEST_SSH_SSHD_CONFOPTS and TEST_SSH_SSH_CONFOPTS to allow adding
     arbitary options to sshd_config and ssh_config during tests.  ok markus@
2004-06-23 09:25:02 +10:00
..
agent-getpeereid.sh - [Makefile.in regress/agent-getpeereid.sh] config.h is now in $BUILDDIR 2003-09-04 18:04:16 +10:00
agent-ptrace.sh - (dtucker) [regress/agent-ptrace.sh] Test for GDB output from Solaris and 2003-11-15 12:13:16 +11:00
agent-timeout.sh - (dtucker) [regress/agent-timeout.sh] Timeout of 5 sec is borderline for 2003-09-13 09:46:03 +10:00
agent.sh - [regress/agent.sh regress/proto-version.sh regress/ssh-com.sh 2003-09-04 15:16:56 +10:00
banner.sh - dtucker@cvs.openbsd.org 2003/10/11 11:49:49 2004-01-30 12:58:51 +11:00
broken-pipe.sh - (djm) Import OpenBSD regression tests. Requires BSD make to run 2002-05-01 13:17:33 +10:00
bsd.regress.mk - (djm) Import OpenBSD regression tests. Requires BSD make to run 2002-05-01 13:17:33 +10:00
connect-privsep.sh - (djm) Import OpenBSD regression tests. Requires BSD make to run 2002-05-01 13:17:33 +10:00
connect.sh - (djm) Import OpenBSD regression tests. Requires BSD make to run 2002-05-01 13:17:33 +10:00
dsa_ssh2.prv - (djm) Import OpenBSD regression tests. Requires BSD make to run 2002-05-01 13:17:33 +10:00
dsa_ssh2.pub - (djm) Import OpenBSD regression tests. Requires BSD make to run 2002-05-01 13:17:33 +10:00
dynamic-forward.sh - dtucker@cvs.openbsd.org 2004/02/28 12:16:57 2004-02-29 20:37:06 +11:00
envpass.sh - dtucker@cvs.openbsd.org 2004/06/22 22:42:02 2004-06-23 09:23:58 +10:00
exit-status.sh - (djm) Import OpenBSD regression tests. Requires BSD make to run 2002-05-01 13:17:33 +10:00
forwarding.sh - (dtucker) [dynamic-forward.sh forwarding.sh sftp-batch.sh (all regress/)] 2003-09-07 09:28:03 +10:00
keygen-change.sh - (djm) Sync regress with OpenBSD -current 2003-01-22 17:53:16 +11:00
keyscan.sh - (djm) Import OpenBSD regression tests. Requires BSD make to run 2002-05-01 13:17:33 +10:00
login-timeout.sh - dtucker@cvs.openbsd.org 2004/03/08 10:17:12 2004-04-19 22:04:21 +10:00
Makefile - djm@cvs.openbsd.org 2004/06/13 15:04:08 2004-06-16 20:22:22 +10:00
multiplex.sh - markus@cvs.openbsd.org 2004/06/22 03:12:13 2004-06-22 13:38:56 +10:00
proto-mismatch.sh - (djm) Import OpenBSD regression tests. Requires BSD make to run 2002-05-01 13:17:33 +10:00
proto-version.sh - [regress/agent.sh regress/proto-version.sh regress/ssh-com.sh 2003-09-04 15:16:56 +10:00
proxy-connect.sh - (djm) Sync regress with OpenBSD -current 2003-01-22 17:53:16 +11:00
README.regress - (dtucker) [regress/README.regress] Add detail on how to run a single 2004-06-18 14:14:43 +10:00
reconfigure.sh - [regress/reconfigure/sh] Make path to sshd fully qualified if required. 2003-09-04 13:59:48 +10:00
rekey.sh - [regress/rekey.sh] Remove dependence on /dev/zero (not all platforms have 2003-09-04 14:02:56 +10:00
rsa_openssh.prv - (djm) Import OpenBSD regression tests. Requires BSD make to run 2002-05-01 13:17:33 +10:00
rsa_openssh.pub - (djm) Import OpenBSD regression tests. Requires BSD make to run 2002-05-01 13:17:33 +10:00
rsa_ssh2.prv - (djm) Import OpenBSD regression tests. Requires BSD make to run 2002-05-01 13:17:33 +10:00
runtests.sh - (djm) Import OpenBSD regression tests. Requires BSD make to run 2002-05-01 13:17:33 +10:00
scp-ssh-wrapper.sh - dtucker@cvs.openbsd.org 2004/06/13 13:51:02 2004-06-16 20:15:59 +10:00
scp.sh - (dtucker) [regress/scp.sh] diff -N is not portable (but needed for some 2004-06-17 15:18:32 +10:00
sftp-badcmds.sh [Makefile.in regress/sftp-badcmds.sh regress/test-exec.sh] 2004-02-12 07:17:10 -08:00
sftp-batch.sh - djm@cvs.openbsd.org 2004/01/13 09:49:06 2004-01-30 13:02:55 +11:00
sftp-cmds.sh - (dtucker) [regress/sftp-cmds.sh] Skip quoting test on Cygwin, since 2004-04-16 17:58:28 +10:00
sftp.sh - [regress/sftp.sh] Remove dependency on /dev/stdin. 2003-09-04 15:00:55 +10:00
ssh-com-client.sh - markus@cvs.openbsd.org 2004/02/24 17:06:52 2004-02-29 20:33:51 +11:00
ssh-com-keygen.sh - markus@cvs.openbsd.org 2004/02/24 17:06:52 2004-02-29 20:33:51 +11:00
ssh-com-sftp.sh - markus@cvs.openbsd.org 2004/02/24 17:06:52 2004-02-29 20:33:51 +11:00
ssh-com.sh - markus@cvs.openbsd.org 2004/02/24 17:06:52 2004-02-29 20:33:51 +11:00
stderr-after-eof.sh [regress/agent-ptrace.sh regress/dynamic-forward.sh 2003-09-11 22:32:17 -07:00
stderr-data.sh - [regress/sftp-badcmds.sh regress/sftp-cmds.sh regress/sftp.sh 2003-09-04 14:54:39 +10:00
t4.ok - (djm) Import OpenBSD regression tests. Requires BSD make to run 2002-05-01 13:17:33 +10:00
t5.ok - (djm) Import OpenBSD regression tests. Requires BSD make to run 2002-05-01 13:17:33 +10:00
test-exec.sh - dtucker@cvs.openbsd.org 2004/06/22 22:45:52 2004-06-23 09:25:02 +10:00
transfer.sh - [regress/sftp-badcmds.sh regress/sftp-cmds.sh regress/sftp.sh 2003-09-04 14:54:39 +10:00
try-ciphers.sh - (dtucker) [regress/try-ciphers.sh] Skip acss if not compiled in (eg if we 2004-02-29 21:30:05 +11:00
yes-head.sh [regress/yes-head.sh] shell portability fix. 2003-09-12 13:21:14 -07:00

Overview.

$ ./configure && make tests

You'll see some progress info. A failure will cause either the make to
abort or the driver script to report a "FATAL" failure.

The test consists of 2 parts. The first is the file-based tests which is
driven by the Makefile, and the second is a set of network or proxycommand
based tests, which are driven by a driver script (test-exec.sh) which is
called multiple times by the Makefile.

Failures in the first part will cause the Makefile to return an error.
Failures in the second part will print a "FATAL" message for the failed
test and continue.

OpenBSD has a system-wide regression test suite. OpenSSH Portable's test
suite is based on OpenBSD's with modifications.


Environment variables.

SUDO: path to sudo command, if desired. Note that some systems (notably
	systems using PAM) require sudo to execute some tests.
TEST_SSH_TRACE: set to "yes" for verbose output from tests 
TEST_SSH_QUIET: set to "yes" to suppress non-fatal output.
TEST_SSH_x: path to "ssh" command under test, where x=SSH,SSHD,SSHAGENT,SSHADD
	SSHKEYGEN,SSHKEYSCAN,SFTP,SFTPSERVER
OBJ: used by test scripts to access build dir.
TEST_SHELL: shell used for running the test scripts.


Individual tests.

You can run an individual test from the top-level Makefile, eg:
$ make tests LTESTS=agent-timeout

If you need to manipulate the environment more you can invoke test-exec.sh
directly if you set up the path to find the binaries under test and the
test scripts themselves, for example:

$ cd regress
$ PATH=`pwd`/..:$PATH:. TEST_SHELL=/bin/sh sh test-exec.sh `pwd` \
    agent-timeout.sh
ok agent timeout test


Files.

test-exec.sh: the main test driver. Sets environment, creates config files
and keys and runs the specified test.

At the time of writing, the individual tests are:
agent-timeout.sh:	agent timeout test
agent.sh:		simple agent test
broken-pipe.sh:		broken pipe test
connect-privsep.sh:	proxy connect with privsep
connect.sh:		simple connect
exit-status.sh:		remote exit status
forwarding.sh:		local and remote forwarding
keygen-change.sh:	change passphrase for key
keyscan.sh:		keyscan
proto-mismatch.sh:	protocol version mismatch
proto-version.sh:	sshd version with different protocol combinations
proxy-connect.sh:	proxy connect
sftp.sh:		basic sftp put/get
ssh-com-client.sh:	connect with ssh.com client
ssh-com-keygen.sh:	ssh.com key import
ssh-com-sftp.sh:	basic sftp put/get with ssh.com server
ssh-com.sh:		connect to ssh.com server
stderr-after-eof.sh:	stderr data after eof
stderr-data.sh:		stderr data transfer
transfer.sh:		transfer data
try-ciphers.sh:		try ciphers
yes-head.sh:		yes pipe head


Problems?

Run the failing test with shell tracing (-x) turned on:
$ PATH=`pwd`/..:$PATH:. sh -x test-exec.sh `pwd` agent-timeout.sh

Failed tests can be difficult to diagnose. Suggestions:
- run the individual test via ./test-exec.sh `pwd` [testname]
- set LogLevel to VERBOSE in test-exec.sh and enable syslogging of
  auth.debug (eg to /var/log/authlog).


Known Issues.

- If you build with tcpwrappers and try to run the regression tests,
  your hosts.allow must permit connections from localhost and from
  "unknown".  This is because some tests are performed via the loopback
  interface, while others are done with "sshd -i" as a ProxyCommand.  In
  the latter case, when sshd calls getpeername() on the socket it will
  fail (because it's not a tcp socket) and will be identified as
  "unknown", which is then checked against tcpwrappers.

- If your build requires ssh-rand-helper regress tests will fail
  unless ssh-rand-helper is in pre-installed (the path to
  ssh-rand-helper is hard coded).

$Id: README.regress,v 1.6 2004/06/18 04:14:43 dtucker Exp $