summaryrefslogtreecommitdiffstats
path: root/debian/tests
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--debian/tests/control10
-rwxr-xr-xdebian/tests/regress84
2 files changed, 94 insertions, 0 deletions
diff --git a/debian/tests/control b/debian/tests/control
new file mode 100644
index 0000000..8bc480a
--- /dev/null
+++ b/debian/tests/control
@@ -0,0 +1,10 @@
+Tests: regress
+Restrictions: needs-root allow-stderr
+Depends: devscripts,
+ 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"