diff options
Diffstat (limited to 'debian/tests')
-rw-r--r-- | debian/tests/control | 11 | ||||
-rwxr-xr-x | debian/tests/regress | 84 |
2 files changed, 95 insertions, 0 deletions
diff --git a/debian/tests/control b/debian/tests/control new file mode 100644 index 0000000..22d443d --- /dev/null +++ b/debian/tests/control @@ -0,0 +1,11 @@ +Tests: regress +Restrictions: needs-root allow-stderr +Depends: devscripts, + dropbear, + haveged, + openssh-tests, + openssl, + putty-tools, + python3-twisted, + sudo, + sysvinit-utils, diff --git a/debian/tests/regress b/debian/tests/regress new file mode 100755 index 0000000..40a73b2 --- /dev/null +++ b/debian/tests/regress @@ -0,0 +1,84 @@ +#! /bin/sh +set -e + +if [ "$(id -un)" != openssh-tests ]; then + TMP="$AUTOPKGTEST_TMP/user" + CREATED_RUN_SSHD=false + STARTED_HAVEGED=false + ADDED_HOST=false + + cleanup () { + if $ADDED_HOST; then + sed -i '/[[:space:]]UNKNOWN$/d' /etc/hosts + fi + + if $STARTED_HAVEGED; then + if [ -d /run/systemd/system ] && \ + which systemctl >/dev/null 2>&1; then + systemctl disable haveged || true + systemctl stop haveged || true + else + start-stop-daemon --stop --quiet --oknodo \ + --retry=TERM/30/KILL/5 \ + --pidfile "$AUTOPKGTEST_TMP/haveged.pid" \ + --name haveged + fi + fi + rm -f /etc/sudoers.d/openssh-tests + if id openssh-tests >/dev/null 2>&1; then + deluser --remove-home openssh-tests + fi + + if $CREATED_RUN_SSHD; then + rm -rf /run/sshd + fi + } + trap cleanup EXIT + + adduser --disabled-password --gecos 'OpenSSH tests' openssh-tests + usermod -p '*' openssh-tests + cat >/etc/sudoers.d/openssh-tests <<EOF +openssh-tests ALL = (ALL:ALL) NOPASSWD: ALL +EOF + chmod 440 /etc/sudoers.d/openssh-tests + mkdir -p "$TMP" + chown -R openssh-tests:openssh-tests "$TMP" + + # Depending on how the environment is configured, our test + # dependency on openssh-server may not actually started sshd and + # thus may not have caused /run/sshd to be created. + if [ ! -d /run/sshd ]; then + mkdir -m755 /run/sshd + CREATED_RUN_SSHD=: + fi + + # If we're running in a container, haveged may not have started + # automatically. + if [ -d /run/systemd/system ] && which systemctl >/dev/null 2>&1; then + systemctl enable haveged || true + systemctl start haveged || true + STARTED_HAVEGED=: + elif ! pidof haveged >/dev/null; then + start-stop-daemon --start --quiet \ + --pidfile "$AUTOPKGTEST_TMP/haveged.pid" \ + --exec /usr/sbin/haveged -- \ + -p "$AUTOPKGTEST_TMP/haveged.pid" + STARTED_HAVEGED=: + fi + + # ssh ends up setting PAM_RHOST to "UNKNOWN" during a number of + # regression tests, which causes DNS resolution delays, slowing down + # the test suite substantially and causing the connection-timeout + # tests to fail. The only way to work around this while running + # tests with "UsePAM yes" appears to be to make "UNKNOWN" + # resolvable. + if ! grep -q '[[:space:]]UNKNOWN$' /etc/hosts; then + echo '127.0.0.1 UNKNOWN' >>/etc/hosts + ADDED_HOST=: + fi + + sudo -u openssh-tests env TMP="$TMP" "$0" "$@" + exit "$?" +fi + +annotate-output +%H:%M:%S.%N /usr/lib/openssh/regress/run-tests "$TMP" |