Valgrind test: split and move up list.

Since the valgrind test takes so long it approaches the limit allowed by
github, move it to the head of the list so it's the first one started and
split the longest tests out into a second instance that runs concurrently
with the first.
This commit is contained in:
Darren Tucker 2021-02-22 08:09:27 +11:00
parent c3b1636770
commit ffcdd3d90e
4 changed files with 26 additions and 9 deletions

13
.github/configs vendored
View File

@ -12,6 +12,7 @@ config=$1
TEST_TARGET="tests" TEST_TARGET="tests"
LTESTS="" LTESTS=""
SKIP_LTESTS=""
SUDO=sudo # run with sudo by default SUDO=sudo # run with sudo by default
TEST_SSH_UNSAFE_PERMISSIONS=1 TEST_SSH_UNSAFE_PERMISSIONS=1
@ -55,14 +56,22 @@ case "$config" in
LIBCRYPTOFLAGS="--without-openssl" LIBCRYPTOFLAGS="--without-openssl"
TEST_TARGET=t-exec TEST_TARGET=t-exec
;; ;;
valgrind) valgrind-1)
# rlimit sandbox and FORTIFY_SOURCE confuse Valgrind. # rlimit sandbox and FORTIFY_SOURCE confuse Valgrind.
CONFIGFLAGS="--without-sandbox --without-hardening" CONFIGFLAGS="--without-sandbox --without-hardening"
CONFIGFLAGS="$CONFIGFLAGS --with-cppflags=-D_FORTIFY_SOURCE=0" CONFIGFLAGS="$CONFIGFLAGS --with-cppflags=-D_FORTIFY_SOURCE=0"
# Valgrind slows things down enough that the agent timeout test # Valgrind slows things down enough that the agent timeout test
# won't reliably pass, and the unit tests run longer than allowed # won't reliably pass, and the unit tests run longer than allowed
# by github. # by github.
TEST_TARGET="t-exec USE_VALGRIND=1 SKIP_LTESTS=agent-timeout" TEST_TARGET="t-exec USE_VALGRIND=1"
SKIP_LTESTS="agent-timeout rekey try-ciphers cert-userkey integrity"
;;
valgrind-2)
CONFIGFLAGS="--without-sandbox --without-hardening"
CONFIGFLAGS="$CONFIGFLAGS --with-cppflags=-D_FORTIFY_SOURCE=0"
# The rekey test takes >30 min so run separately.
TEST_TARGET="t-exec USE_VALGRIND=1"
LTESTS="rekey try-ciphers cert-userkey integrity"
;; ;;
*) *)
echo "Unknown configuration $config" echo "Unknown configuration $config"

6
.github/run_test.sh vendored
View File

@ -6,11 +6,11 @@
set -ex set -ex
if [ -z "$LTESTS" ]; then if [ -z "${LTESTS}" ]; then
make $TEST_TARGET make ${TEST_TARGET} SKIP_LTESTS="${SKIP_LTESTS}"
result=$? result=$?
else else
make $TEST_TARGET LTESTS="$LTESTS" make ${TEST_TARGET} SKIP_LTESTS="${SKIP_LTESTS}" LTESTS="${LTESTS}"
result=$? result=$?
fi fi

2
.github/setup_ci.sh vendored
View File

@ -53,7 +53,7 @@ for TARGET in $TARGETS; do
libressl-head) libressl-head)
INSTALL_LIBRESSL_HEAD=yes INSTALL_LIBRESSL_HEAD=yes
;; ;;
valgrind) valgrind*)
PACKAGES="$PACKAGES valgrind" PACKAGES="$PACKAGES valgrind"
;; ;;
*) echo "Invalid option '${TARGET}'" *) echo "Invalid option '${TARGET}'"

View File

@ -12,22 +12,30 @@ jobs:
strategy: strategy:
fail-fast: false fail-fast: false
matrix: matrix:
os: [ubuntu-16.04, ubuntu-18.04, ubuntu-20.04, macos-10.15, macos-11.0] # First we test all OSes in the default configuration.
configs: [default, pam] os: [ubuntu-20.04, ubuntu-18.04, ubuntu-16.04, macos-10.15, macos-11.0]
configs: [default]
# Then we include any extra configs we want to test for specific VMs. # Then we include any extra configs we want to test for specific VMs.
# Valgrind slows things down quite a bit, so start them first.
include: include:
- { os: ubuntu-20.04, configs: valgrind-1 }
- { os: ubuntu-20.04, configs: valgrind-2 }
- { os: ubuntu-20.04, configs: pam }
- { os: ubuntu-20.04, configs: kitchensink } - { os: ubuntu-20.04, configs: kitchensink }
- { os: ubuntu-20.04, configs: hardenedmalloc } - { os: ubuntu-20.04, configs: hardenedmalloc }
- { os: ubuntu-20.04, configs: libressl-head } - { os: ubuntu-20.04, configs: libressl-head }
- { os: ubuntu-20.04, configs: openssl-head } - { os: ubuntu-20.04, configs: openssl-head }
- { os: ubuntu-20.04, configs: valgrind } - { os: ubuntu-18.04, configs: pam }
- { os: ubuntu-18.04, configs: kerberos5 } - { os: ubuntu-18.04, configs: kerberos5 }
- { os: ubuntu-18.04, configs: libedit } - { os: ubuntu-18.04, configs: libedit }
- { os: ubuntu-18.04, configs: sk } - { os: ubuntu-18.04, configs: sk }
- { os: ubuntu-18.04, configs: selinux } - { os: ubuntu-18.04, configs: selinux }
- { os: ubuntu-18.04, configs: kitchensink } - { os: ubuntu-18.04, configs: kitchensink }
- { os: ubuntu-18.04, configs: without-openssl } - { os: ubuntu-18.04, configs: without-openssl }
- { os: ubuntu-16.04, configs: pam }
- { os: ubuntu-16.04, configs: kitchensink } - { os: ubuntu-16.04, configs: kitchensink }
- { os: macos-10.15, configs: pam }
- { os: macos-11.0, configs: pam }
runs-on: ${{ matrix.os }} runs-on: ${{ matrix.os }}
steps: steps:
- uses: actions/checkout@v2 - uses: actions/checkout@v2