blob: b479c6c07934b52e94b2bdb71cbab6e5b731a67d [file] [log] [blame]
Darren Tucker9d9d4482003-09-04 15:39:54 +10001Overview.
2
3$ ./configure && make tests
4
5You'll see some progress info. A failure will cause either the make to
6abort or the driver script to report a "FATAL" failure.
7
8The test consists of 2 parts. The first is the file-based tests which is
9driven by the Makefile, and the second is a set of network or proxycommand
10based tests, which are driven by a driver script (test-exec.sh) which is
11called multiple times by the Makefile.
12
13Failures in the first part will cause the Makefile to return an error.
14Failures in the second part will print a "FATAL" message for the failed
15test and continue.
16
17OpenBSD has a system-wide regression test suite. OpenSSH Portable's test
18suite is based on OpenBSD's with modifications.
19
20
21Environment variables.
22
23SUDO: path to sudo command, if desired. Note that some systems (notably
24 systems using PAM) require sudo to execute some tests.
Tim Rice3084a612004-01-26 09:37:09 -080025TEST_SSH_TRACE: set to "yes" for verbose output from tests
Darren Tucker9d9d4482003-09-04 15:39:54 +100026TEST_SSH_QUIET: set to "yes" to suppress non-fatal output.
27TEST_SSH_x: path to "ssh" command under test, where x=SSH,SSHD,SSHAGENT,SSHADD
28 SSHKEYGEN,SSHKEYSCAN,SFTP,SFTPSERVER
29OBJ: used by test scripts to access build dir.
30
31
32Individual tests.
33
34You can invoke test-exec.sh directly if you set up the path to find the
35binaries under test and the test scripts themselves, for example:
36
37$ cd regress
38$ PATH=`pwd`/..:$PATH:. sh test-exec.sh `pwd` agent-timeout.sh
39ok agent timeout test
40
41
42Files.
43
44test-exec.sh: the main test driver. Sets environment, creates config files
45and keys and runs the specified test.
46
47At the time of writing, the individual tests are:
48agent-timeout.sh: agent timeout test
49agent.sh: simple agent test
50broken-pipe.sh: broken pipe test
51connect-privsep.sh: proxy connect with privsep
52connect.sh: simple connect
53exit-status.sh: remote exit status
54forwarding.sh: local and remote forwarding
55keygen-change.sh: change passphrase for key
56keyscan.sh: keyscan
57proto-mismatch.sh: protocol version mismatch
58proto-version.sh: sshd version with different protocol combinations
59proxy-connect.sh: proxy connect
60sftp.sh: basic sftp put/get
61ssh-com-client.sh: connect with ssh.com client
62ssh-com-keygen.sh: ssh.com key import
63ssh-com-sftp.sh: basic sftp put/get with ssh.com server
64ssh-com.sh: connect to ssh.com server
65stderr-after-eof.sh: stderr data after eof
66stderr-data.sh: stderr data transfer
67transfer.sh: transfer data
68try-ciphers.sh: try ciphers
69yes-head.sh: yes pipe head
70
71
72Problems?
73
74Run the failing test with shell tracing (-x) turned on:
75$ PATH=`pwd`/..:$PATH:. sh -x test-exec.sh `pwd` agent-timeout.sh
76
77Failed tests can be difficult to diagnose. Suggestions:
78- run the individual test via ./test-exec.sh `pwd` [testname]
79- set LogLevel to VERBOSE in test-exec.sh and enable syslogging of
80 auth.debug (eg to /var/log/authlog).
81
82
83Known Issues.
84
Darren Tucker4f9f6792004-01-28 12:26:14 +110085- If you build with tcpwrappers and try to run the regression tests,
86 your hosts.allow must permit connections from localhost and from
87 "unknown". This is because some tests are performed via the loopback
88 interface, while others are done with "sshd -i" as a ProxyCommand. In
89 the latter case, when sshd calls getpeername() on the socket it will
90 fail (because it's not a tcp socket) and will be identified as
91 "unknown", which is then checked against tcpwrappers.
Darren Tucker9d9d4482003-09-04 15:39:54 +100092
Darren Tucker4f9f6792004-01-28 12:26:14 +110093
94$Id: README.regress,v 1.3 2004/01/28 01:26:14 dtucker Exp $