Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Container tests #392

Open
wants to merge 16 commits into
base: trunk
Choose a base branch
from
273 changes: 45 additions & 228 deletions .github/workflows/linux.yml
Original file line number Diff line number Diff line change
Expand Up @@ -36,234 +36,6 @@ jobs:
# -------------------------------------------------------------------------
- name: Default
# -------------------------------------------------------------------------
- name: All-static modules
config: --enable-mods-static=reallyall
# -------------------------------------------------------------------------
- name: Prefork MPM, all-modules (except cgid)
config: --enable-mods-shared=reallyall --with-mpm=prefork --disable-cgid
# -------------------------------------------------------------------------
- name: Worker MPM, all-modules
config: --enable-mods-shared=reallyall --with-mpm=worker
# -------------------------------------------------------------------------
- name: Shared MPMs, all-modules
config: --enable-mods-shared=reallyall --enable-mpms-shared=all
# -------------------------------------------------------------------------
- name: Event MPM, all-modules, mod_cgid only
config: --enable-mods-shared=reallyall --with-mpm=event --disable-cgi
# -------------------------------------------------------------------------
- name: Event MPM, all-modules, no CMSG_DATA
config: --enable-mods-shared=reallyall --with-mpm=event ac_cv_have_decl_CMSG_DATA=no
# -------------------------------------------------------------------------
- name: Default, all-modules + install
config: --enable-mods-shared=reallyall
env: |
TEST_INSTALL=1
APACHE_TEST_EXTRA_ARGS=-v
# -------------------------------------------------------------------------
- name: Default, all-modules, random test order
config: --enable-mods-shared=reallyall
env: |
TEST_ARGS=-order=random
# -------------------------------------------------------------------------
- name: GCC 10 maintainer-mode w/-Werror, install + VPATH
config: --enable-mods-shared=reallyall --enable-maintainer-mode
notest-cflags: -Werror -O2
env: |
CC=gcc-10
TEST_VPATH=1
TEST_INSTALL=1
SKIP_TESTING=1
# -------------------------------------------------------------------------
- name: All-modules, APR 1.7.4, APR-util 1.6.3
config: --enable-mods-shared=reallyall
env: |
APR_VERSION=1.7.4
APU_VERSION=1.6.3
APU_CONFIG="--with-crypto --with-ldap"
CLEAR_CACHE=1
# -------------------------------------------------------------------------
- name: APR 1.8.x, APR-util 1.7.x
config: --enable-mods-shared=reallyall
env: |
APR_VERSION=1.8.x
APU_VERSION=1.7.x
APU_CONFIG="--with-crypto --with-ldap"
CLEAR_CACHE=1
# -------------------------------------------------------------------------
- name: Pool-debug
config: --enable-mods-shared=reallyall
env: |
APR_VERSION=1.7.x
APR_CONFIG="--enable-pool-debug"
APU_VERSION=1.7.x
APU_CONFIG="--with-crypto --with-ldap"
TEST_MALLOC=1
CLEAR_CACHE=1
# -------------------------------------------------------------------------
- name: Shared MPMs (event), pool-debug, SSL/TLS variants
config: --enable-mods-shared=reallyall --enable-mpms-shared=all --with-mpm=event
env: |
APR_VERSION=1.7.x
APR_CONFIG="--enable-pool-debug"
APU_VERSION=1.7.x
APU_CONFIG="--with-crypto --with-ldap"
TEST_MALLOC=1
TEST_SSL=1
CLEAR_CACHE=1
# -------------------------------------------------------------------------
- name: Shared MPMs (worker), pool-debug, SSL/TLS variants
config: --enable-mods-shared=reallyall --enable-mpms-shared=all --with-mpm=worker
env: |
APR_VERSION=1.7.x
APR_CONFIG="--enable-pool-debug"
APU_VERSION=1.7.x
APU_CONFIG="--with-crypto --with-ldap"
TEST_MALLOC=1
TEST_SSL=1
CLEAR_CACHE=1
# -------------------------------------------------------------------------
- name: Shared MPMs (prefork), pool-debug, SSL/TLS variants
config: --enable-mods-shared=reallyall --enable-mpms-shared=all --with-mpm=prefork
env: |
APR_VERSION=1.7.x
APR_CONFIG="--enable-pool-debug"
APU_VERSION=1.7.x
APU_CONFIG="--with-crypto --with-ldap"
TEST_MALLOC=1
TEST_SSL=1
CLEAR_CACHE=1
# -------------------------------------------------------------------------
- name: litmus WebDAV tests
config: --enable-dav --enable-dav-fs
env: |
LITMUS=1
TESTS="t/modules/dav.t"
pkgs: litmus
# -------------------------------------------------------------------------
- name: litmus WebDAV tests, APR trunk, LMDB
config: --enable-dav --enable-dav-fs
pkgs: litmus liblmdb-dev
env: |
APR_VERSION=trunk
APR_CONFIG="--with-lmdb --with-dbm=lmdb"
LITMUS=1
TESTS="t/modules/dav.t"
# -------------------------------------------------------------------------
# MFLAGS= works around https://bz.apache.org/bugzilla/show_bug.cgi?id=63942
## TODO if: *condition_not_24x
- name: Regenerate ap_expr
config: --enable-mods-shared=reallyall --enable-maintainer-mode
notest-cflags: -Werror -Wno-deprecated-declarations
env: |
BUILDCONFIG="--with-regen-expr"
MFLAGS=
# -------------------------------------------------------------------------
- name: APR 1.7.4, APR-util 1.6.3, LDAP
config: --enable-mods-shared=reallyall
pkgs: ldap-utils
env: |
APR_VERSION=1.7.4
APU_VERSION=1.6.3
APU_CONFIG="--with-crypto --with-ldap"
TEST_MALLOC=1
TEST_LDAP=1
TEST_ARGS="-defines LDAP"
TESTS="t/modules/"
CLEAR_CACHE=1
# -------------------------------------------------------------------------
### TODO: if: *condition_not_24x
- name: APR trunk thread debugging
config: --enable-mods-shared=reallyall --with-mpm=event
env: |
APR_VERSION=trunk
APR_CONFIG="--with-crypto --enable-thread-debug"
# -------------------------------------------------------------------------
- name: UBSan
notest-cflags: -fsanitize=undefined -fno-sanitize-recover=undefined
config: --enable-mods-shared=reallyall --disable-http2
env: |
NOTEST_LIBS=-lubsan
TEST_UBSAN=1
# -------------------------------------------------------------------------
- name: ASan
notest-cflags: -ggdb -fsanitize=address -fno-sanitize-recover=address -fno-omit-frame-pointer
config: --enable-mods-shared=reallyall
env: |
APR_VERSION=1.7.x
APU_VERSION=1.7.x
APU_CONFIG="--with-crypto --with-ldap"
TEST_ASAN=1
CLEAR_CACHE=1
# -------------------------------------------------------------------------
- name: ASan, pool-debug
notest-cflags: -ggdb -fsanitize=address -fno-sanitize-recover=address -fno-omit-frame-pointer
config: --enable-mods-shared=reallyall
env: |
APR_VERSION=1.7.x
APR_CONFIG="--enable-pool-debug"
APU_VERSION=1.7.x
APU_CONFIG="--with-crypto --with-ldap"
TEST_ASAN=1
CLEAR_CACHE=1
# -------------------------------------------------------------------------
- name: HTTP/2 test suite
config: --enable-mods-shared=reallyall --with-mpm=event --enable-mpms-shared=all
pkgs: curl python3-pytest nghttp2-client python3-cryptography python3-requests python3-multipart python3-filelock python3-websockets
env: |
APR_VERSION=1.7.4
APU_VERSION=1.6.3
APU_CONFIG="--with-crypto"
NO_TEST_FRAMEWORK=1
TEST_INSTALL=1
TEST_H2=1
TEST_CORE=1
TEST_PROXY=1
# -------------------------------------------------------------------------
### TODO: if: *condition_not_24x
### TODO: pebble install is broken.
# - name: ACME test suite
# config: --enable-mods-shared=reallyall --with-mpm=event --enable-mpms-shared=event
# pkgs: >-
# python3-pytest nghttp2-client python3-cryptography python3-requests python3-filelock
# golang-1.17 curl
# env: |
# APR_VERSION=1.7.4
# APU_VERSION=1.6.3
# APU_CONFIG="--with-crypto"
# GOROOT=/usr/lib/go-1.17
# NO_TEST_FRAMEWORK=1
# TEST_INSTALL=1
# TEST_MD=1
# -------------------------------------------------------------------------
### TODO: if: *condition_not_24x
### TODO: fix caching here.
- name: MOD_TLS test suite
config: --enable-mods-shared=reallyall --with-mpm=event --enable-mpms-shared=event
pkgs: curl python3-pytest nghttp2-client python3-cryptography python3-requests python3-multipart python3-filelock python3-websockets cargo cbindgen
env: |
APR_VERSION=1.7.4
APU_VERSION=1.6.3
APU_CONFIG="--with-crypto"
NO_TEST_FRAMEWORK=1
TEST_INSTALL=1
TEST_MOD_TLS=1
CLEAR_CACHE=1
# -------------------------------------------------------------------------
### TODO if: *condition_not_24x
### TODO: Fails because :i386 packages are not being found.
# - name: i386 Shared MPMs, most modules, maintainer-mode w/-Werror
# config: --enable-mods-shared=reallyall --disable-xml2enc --disable-proxy-html --enable-mpms-shared=all --enable-maintainer-mode
# pkgs: >-
# cpanminus libc6-dev-i386 gcc-multilib libexpat1-dev:i386 libssl-dev:i386
# lib32z1-dev libbrotli-dev:i386 libpcre2-dev:i386 libldap2-dev:i386 libtool-bin
# perl-doc libapr1-dev libbrotli-dev:i386
# env: |
# PKG_CONFIG_PATH="/usr/lib/i386-linux-gnu/pkgconfig"
# NOTEST_CFLAGS="-Werror"
# CC="gcc -m32"
# APR_VERSION=1.7.0
# APU_VERSION=1.6.3
# APU_CONFIG="--with-crypto --with-ldap"
runs-on: ubuntu-latest
timeout-minutes: 30
env:
Expand Down Expand Up @@ -312,4 +84,49 @@ jobs:
with:
name: error_log ${{ matrix.node-version }}
path: test/perl-framework/t/logs/error_log
containers:
strategy:
fail-fast: false
matrix:
container: ["quay.io/centos/centos:stream8", "quay.io/centos/centos:stream9",
"fedora:latest"]
container:
image: ${{ matrix.container }}
runs-on: ubuntu-latest
timeout-minutes: 30
env:
NOTEST_CFLAGS: ${{ matrix.notest-cflags }}
CONFIG: ${{ matrix.config }}
steps:
- name: Set environment variables
run: echo "${{ matrix.env }}" >> $GITHUB_ENV
- name: Enable repositories
run: |
if test -f /etc/centos-release; then
dnf install -y yum-utils
dnf config-manager --set-enabled crb || dnf config-manager --set-enabled powertools
fi
- name: Install prerequisites
run: dnf install -y libtool apr-devel apr-util-devel lua-devel openssl-devel
jansson-devel brotli-devel libcurl-devel lua-devel
/usr/bin/cpanm libnghttp2-devel pcre2-devel gdb perl-doc
make autoconf glibc-devel gcc subversion git
- uses: actions/checkout@v3
- name: Configure environment
run: ./test/travis_before_linux.sh
timeout-minutes: 15
- uses: actions/upload-artifact@v3
if: failure()
with:
name: config.log ${{ matrix.node-version }}
path: |
build/**/config.log
.cpanm/**/build.log
- name: Build and test
run: ./test/travis_run_linux.sh
- uses: actions/upload-artifact@v3
if: failure()
with:
name: error_log ${{ matrix.node-version }}
path: test/perl-framework/t/logs/error_log

15 changes: 5 additions & 10 deletions test/travis_before_linux.sh
Original file line number Diff line number Diff line change
@@ -1,5 +1,10 @@
#!/bin/bash -xe

if [ $EUID = 0 ]; then
useradd user
su - user -- $0 $*
fi

if test -v CLEAR_CACHE; then
rm -rf $HOME/root
fi
Expand All @@ -11,16 +16,6 @@ fi
cat /etc/hosts
: -- ends

# ### FIXME: This is a workaround, non-x86 builds have an IPv6
# configuration which somehow breaks the test suite runs. Appears
# that Apache::Test only configures the server to Listen on 0.0.0.0
# (that is hard-coded), but then Apache::TestSerer::wait_till_is_up()
# tries to connect via ::1, which fails/times out.
if grep ip6-localhost /etc/hosts; then
sudo sed -i "/ip6-/d" /etc/hosts
cat /etc/hosts
fi

function install_apx() {
local name=$1
local version=$2
Expand Down
4 changes: 4 additions & 0 deletions test/travis_run_linux.sh
Original file line number Diff line number Diff line change
@@ -1,5 +1,9 @@
#!/bin/bash -ex

if [ $EUID = 0 ]; then
su - user -- $0 $*
fi

# Test for APLOGNO() macro errors (duplicates, empty args) etc. For
# trunk, run the updater script to see if it fails. If it succeeds
# and changes any files (because there was a missing argument), the
Expand Down
Loading