2020-07-28 23:00:35 +02:00
# Copyright 2019 Ilya Shipitsin <chipitsine@gmail.com>
# Copyright 2020 Tim Duesterhus <tim@bastelstu.be>
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License
# as published by the Free Software Foundation; either version
# 2 of the License, or (at your option) any later version.
name : VTest
on :
push :
jobs :
# The generate-matrix job generates the build matrix using JSON output
# generated by .github/matrix.py.
generate-matrix :
name : Generate Build Matrix
runs-on : ubuntu-latest
outputs :
matrix : ${{ steps.set-matrix.outputs.matrix }}
steps :
- uses : actions/checkout@v2
- name : Generate Build Matrix
id : set-matrix
2020-11-20 00:16:00 +01:00
run : python3 .github/matrix.py "${{ github.event_name }}"
2020-07-28 23:00:35 +02:00
# The Test job actually runs the tests.
Test :
name : ${{ matrix.name }}
needs : generate-matrix
runs-on : ${{ matrix.os }}
strategy :
matrix : ${{ fromJson(needs.generate-matrix.outputs.matrix) }}
fail-fast : false
env :
# Configure a short TMPDIR to prevent failures due to long unix socket
# paths.
TMPDIR : /tmp
# Force ASAN output into asan.log to make the output more readable.
ASAN_OPTIONS : log_path=asan.log
steps :
- uses : actions/checkout@v2
with :
fetch-depth : 100
- name : Install apt dependencies
if : ${{ startsWith(matrix.os, 'ubuntu-') }}
run : |
2020-11-21 13:42:19 +05:00
sudo apt-get update
2020-07-28 23:00:35 +02:00
sudo apt-get install -y \
liblua5.3-dev \
libpcre2-dev \
libsystemd-dev \
ninja-build \
socat
- name : Install brew dependencies
if : ${{ startsWith(matrix.os, 'macos-') }}
run : |
brew install socat
brew install lua
- name : Install VTest
run : |
2021-03-02 19:18:59 +01:00
curl -fsSL https://github.com/vtest/VTest/archive/master.tar.gz -o VTest.tar.gz
2020-07-28 23:00:35 +02:00
mkdir VTest
tar xvf VTest.tar.gz -C VTest --strip-components=1
2021-05-12 21:08:49 +02:00
make -C VTest -j$(nproc) FLAGS="-O2 -s -Wall"
2020-07-28 23:00:35 +02:00
sudo install -m755 VTest/vtest /usr/local/bin/vtest
- name : Install SSL ${{ matrix.ssl }}
if : ${{ matrix.ssl && matrix.ssl != 'stock' }}
run : env ${{ matrix.ssl }} scripts/build-ssl.sh
- name : Build WURFL
if : ${{ contains(matrix.FLAGS, 'USE_WURFL=1') }}
2021-04-02 16:39:44 +02:00
run : make -C addons/wurfl/dummy
2020-07-28 23:00:35 +02:00
- name : Compile HAProxy with ${{ matrix.CC }}
run : |
make -j$(nproc) all \
ERR=1 \
TARGET=${{ matrix.TARGET }} \
CC=${{ matrix.CC }} \
2020-11-21 18:08:00 +01:00
DEBUG=-DDEBUG_STRICT=1 \
2020-07-28 23:00:35 +02:00
${{ join(matrix.FLAGS, ' ') }} \
ADDLIB="-Wl,-rpath,/usr/local/lib/ -Wl,-rpath,$HOME/opt/lib/"
sudo make install
- name : Show HAProxy version
id : show-version
run : |
echo "::group::Show dynamic libraries."
if command -v ldd > /dev/null; then
# Linux
ldd $(which haproxy)
else
# macOS
otool -L $(which haproxy)
fi
echo "::endgroup::"
haproxy -vv
echo "::set-output name=version::$(haproxy -v |awk 'NR==1{print $3}')"
- name : Install problem matcher for VTest
# This allows one to more easily see which tests fail.
run : echo "::add-matcher::.github/vtest.json"
- name : Run VTest for HAProxy ${{ steps.show-version.outputs.version }}
id : vtest
# sudo is required, because macOS fails due to an open files limit.
run : sudo make reg-tests REGTESTS_TYPES=default,bug,devel
- name : Show results
if : ${{ failure() }}
# The chmod / sudo is necessary due to the `sudo` while running the tests.
run : |
sudo chmod a+rX ${TMPDIR}/haregtests-*/
for folder in ${TMPDIR}/haregtests-*/vtc.*; do
printf "::group::"
cat $folder/INFO
cat $folder/LOG
echo "::endgroup::"
done
shopt -s nullglob
for asan in asan.log*; do
echo "::group::$asan"
sudo cat $asan
echo "::endgroup::"
done