Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
161 changes: 70 additions & 91 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -402,27 +402,51 @@ jobs:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Build
- name: Build natively in s390x container
run: |
sudo apt-get update && sudo apt-get install -y gcc-s390x-linux-gnu g++-s390x-linux-gnu
mkdir build && cd build
cmake -G "Ninja" ../ \
-DCMAKE_C_COMPILER=s390x-linux-gnu-gcc \
-DCMAKE_CXX_COMPILER=s390x-linux-gnu-g++ \
-DCMAKE_VERBOSE_MAKEFILE=ON \
-DTCS_ENABLE_TESTS=ON \
-DTCS_ENABLE_EXAMPLES=ON \
-DTCS_WARNINGS_AS_ERRORS=ON
cmake --build .
mv ./tests/tests ./tests_linux_s390x
mv ./tests/tests_header_only ./tests_header_only_linux_s390x
sudo apt-get update && sudo apt-get install -y qemu-user-static
docker run --rm --platform linux/s390x \
-v ${{ github.workspace }}:/workspace \
-w /workspace \
s390x/debian:bookworm sh -c '
apt-get update && apt-get install -y cmake ninja-build g++ &&
mkdir build && cd build &&
cmake -G "Ninja" ../ -DCMAKE_VERBOSE_MAKEFILE=ON -DTCS_ENABLE_TESTS=ON -DTCS_ENABLE_EXAMPLES=ON -DTCS_WARNINGS_AS_ERRORS=ON &&
cmake --build . &&
mv ./tests/tests ./tests_linux_s390x &&
mv ./tests/tests_header_only ./tests_header_only_linux_s390x
'
- uses: actions/upload-artifact@v4
with:
name: linux-s390x
path: |
build/tests_linux_s390x
build/tests_header_only_linux_s390x

linux-s390x-test:
runs-on: ubuntu-latest
timeout-minutes: 30
needs: [linux-s390x-build]
steps:
- uses: actions/download-artifact@v4
with:
name: linux-s390x
path: build/
- name: Run tests natively in s390x container
run: |
sudo apt-get update && sudo apt-get install -y qemu-user-static
set -o pipefail
echo '```' >> $GITHUB_STEP_SUMMARY
chmod +x ./build/tests_linux_s390x ./build/tests_header_only_linux_s390x
docker run --rm --platform linux/s390x \
-v ${{ github.workspace }}:/workspace \
-w /workspace \
s390x/debian:bookworm sh -c '
./build/tests_linux_s390x --test-case-exclude="*Multicast*,*TSN*" &&
./build/tests_header_only_linux_s390x --test-case-exclude="*Multicast*,*TSN*"
' 2>&1 | tee -a $GITHUB_STEP_SUMMARY
echo '```' >> $GITHUB_STEP_SUMMARY

android-x86_64-build:
runs-on: ubuntu-latest
steps:
Expand Down Expand Up @@ -585,6 +609,7 @@ jobs:
- name: Run wine tests
run: |
set -o pipefail
sudo ip link set lo multicast on
echo '```' >> $GITHUB_STEP_SUMMARY
docker run --rm \
-v ${{ github.workspace }}:/workspace \
Expand All @@ -594,12 +619,12 @@ jobs:
alpine:3.23.3 sh -c '
apk add wine &&
mkdir -p /tmp/runtime &&
wine64 ./build/tests_msvc_release_x64.exe &&
wine64 ./build/tests_header_only_msvc_release_x64.exe &&
wine64 ./build/tests_mingw_x64_winxp.exe &&
wine64 ./build/tests_header_only_mingw_x64_winxp.exe &&
wine64 ./build/tests_mingw_x64_winblue.exe &&
wine64 ./build/tests_header_only_mingw_x64_winblue.exe
wine64 ./build/tests_msvc_release_x64.exe --test-case-exclude="*Multicast*" &&
wine64 ./build/tests_header_only_msvc_release_x64.exe --test-case-exclude="*Multicast*" &&
wine64 ./build/tests_mingw_x64_winxp.exe --test-case-exclude="*Multicast*" &&
wine64 ./build/tests_header_only_mingw_x64_winxp.exe --test-case-exclude="*Multicast*" &&
wine64 ./build/tests_mingw_x64_winblue.exe --test-case-exclude="*Multicast*" &&
wine64 ./build/tests_header_only_mingw_x64_winblue.exe --test-case-exclude="*Multicast*"
' 2>&1 | tee -a $GITHUB_STEP_SUMMARY
echo '```' >> $GITHUB_STEP_SUMMARY

Expand Down Expand Up @@ -631,6 +656,7 @@ jobs:
- name: Run wine tests
run: |
set -o pipefail
sudo ip link set lo multicast on
echo '```' >> $GITHUB_STEP_SUMMARY
docker run --rm \
-v ${{ github.workspace }}:/workspace \
Expand All @@ -640,14 +666,14 @@ jobs:
i386/alpine:3.23.3 sh -c '
apk add wine &&
mkdir -p /tmp/runtime &&
wine ./build/tests_msvc_release_x86.exe &&
wine ./build/tests_header_only_msvc_release_x86.exe &&
wine ./build/tests_mingw_x86_winxp.exe &&
wine ./build/tests_header_only_mingw_x86_winxp.exe &&
wine ./build/tests_mingw_x86_winblue.exe &&
wine ./build/tests_header_only_mingw_x86_winblue.exe &&
wine ./build/tests_mingw_x86_win2k.exe &&
wine ./build/tests_header_only_mingw_x86_win2k.exe
wine ./build/tests_msvc_release_x86.exe --test-case-exclude="*Multicast*" &&
wine ./build/tests_header_only_msvc_release_x86.exe --test-case-exclude="*Multicast*" &&
wine ./build/tests_mingw_x86_winxp.exe --test-case-exclude="*Multicast*" &&
wine ./build/tests_header_only_mingw_x86_winxp.exe --test-case-exclude="*Multicast*" &&
wine ./build/tests_mingw_x86_winblue.exe --test-case-exclude="*Multicast*" &&
wine ./build/tests_header_only_mingw_x86_winblue.exe --test-case-exclude="*Multicast*" &&
wine ./build/tests_mingw_x86_win2k.exe --test-case-exclude="*Multicast*" &&
wine ./build/tests_header_only_mingw_x86_win2k.exe --test-case-exclude="*Multicast*"
' 2>&1 | tee -a $GITHUB_STEP_SUMMARY
echo '```' >> $GITHUB_STEP_SUMMARY

Expand All @@ -663,6 +689,7 @@ jobs:
- name: Run tests
run: |
set -o pipefail
sudo ip link set lo multicast on
echo '```' >> $GITHUB_STEP_SUMMARY
chmod +x ./build/tests_linux_musl_x86_64 ./build/tests_header_only_linux_musl_x86_64
sudo capsh --caps='cap_net_raw+eip' -- -c ./build/tests_linux_musl_x86_64 2>&1 | tee -a $GITHUB_STEP_SUMMARY
Expand All @@ -681,6 +708,7 @@ jobs:
- name: Run tests
run: |
set -o pipefail
sudo ip link set lo multicast on
echo '```' >> $GITHUB_STEP_SUMMARY
chmod +x ./build/tests_linux_musl_x86 ./build/tests_header_only_linux_musl_x86
sudo capsh --caps='cap_net_raw+eip' -- -c ./build/tests_linux_musl_x86 2>&1 | tee -a $GITHUB_STEP_SUMMARY
Expand All @@ -699,6 +727,7 @@ jobs:
- name: Run tests
run: |
set -o pipefail
sudo ip link set lo multicast on
echo '```' >> $GITHUB_STEP_SUMMARY
chmod +x ./build/tests_linux_glibc_x86_64 ./build/tests_header_only_linux_glibc_x86_64
sudo capsh --caps='cap_net_raw+eip' -- -c ./build/tests_linux_glibc_x86_64 2>&1 | tee -a $GITHUB_STEP_SUMMARY
Expand All @@ -717,6 +746,7 @@ jobs:
- name: Run tests
run: |
set -o pipefail
sudo ip link set lo multicast on
echo '```' >> $GITHUB_STEP_SUMMARY
docker run --rm --cap-add=NET_RAW \
-v ${{ github.workspace }}:/workspace \
Expand All @@ -742,8 +772,8 @@ jobs:
set -o pipefail
echo '```' >> $GITHUB_STEP_SUMMARY
chmod +x ./build/tests_macos_arm64 ./build/tests_header_only_macos_arm64
./build/tests_macos_arm64 2>&1 | tee -a $GITHUB_STEP_SUMMARY
./build/tests_header_only_macos_arm64 2>&1 | tee -a $GITHUB_STEP_SUMMARY
./build/tests_macos_arm64 --test-case-exclude="*Add-Drop-Add*" 2>&1 | tee -a $GITHUB_STEP_SUMMARY
./build/tests_header_only_macos_arm64 --test-case-exclude="*Add-Drop-Add*" 2>&1 | tee -a $GITHUB_STEP_SUMMARY
echo '```' >> $GITHUB_STEP_SUMMARY

freebsd-x86_64-test:
Expand All @@ -758,20 +788,12 @@ jobs:
- uses: vmactions/freebsd-vm@v1
with:
usesh: true
# Multicast excluded: FreeBSD QEMU has async IGMP membership, causing flaky multicast tests
run: |
chmod +x ./build/tests_freebsd_x86_64 ./build/tests_header_only_freebsd_x86_64
./build/tests_freebsd_x86_64 > /tmp/out1.txt 2>&1; s1=$?
cat /tmp/out1.txt
./build/tests_header_only_freebsd_x86_64 > /tmp/out2.txt 2>&1; s2=$?
cat /tmp/out2.txt
cat /tmp/out1.txt /tmp/out2.txt > ./test_output.txt
./build/tests_freebsd_x86_64 --test-case-exclude="*Multicast*"; s1=$?
./build/tests_header_only_freebsd_x86_64 --test-case-exclude="*Multicast*"; s2=$?
[ $s1 -eq 0 ] && [ $s2 -eq 0 ] || exit 1
- name: Write step summary
if: always()
run: |
echo '```' >> $GITHUB_STEP_SUMMARY
cat ./test_output.txt >> $GITHUB_STEP_SUMMARY
echo '```' >> $GITHUB_STEP_SUMMARY

openbsd-x86_64-test:
runs-on: ubuntu-latest
Expand All @@ -787,18 +809,9 @@ jobs:
usesh: true
run: |
chmod +x ./build/tests_openbsd_x86_64 ./build/tests_header_only_openbsd_x86_64
./build/tests_openbsd_x86_64 > /tmp/out1.txt 2>&1; s1=$?
cat /tmp/out1.txt
./build/tests_header_only_openbsd_x86_64 > /tmp/out2.txt 2>&1; s2=$?
cat /tmp/out2.txt
cat /tmp/out1.txt /tmp/out2.txt > ./test_output.txt
./build/tests_openbsd_x86_64; s1=$?
./build/tests_header_only_openbsd_x86_64; s2=$?
[ $s1 -eq 0 ] && [ $s2 -eq 0 ] || exit 1
- name: Write step summary
if: always()
run: |
echo '```' >> $GITHUB_STEP_SUMMARY
cat ./test_output.txt >> $GITHUB_STEP_SUMMARY
echo '```' >> $GITHUB_STEP_SUMMARY

omnios-x86_64-test:
runs-on: ubuntu-latest
Expand All @@ -812,20 +825,12 @@ jobs:
- uses: vmactions/omnios-vm@v1
with:
usesh: true
# Multicast excluded: OmniOS QEMU has unreliable multicast loopback
run: |
chmod +x ./build/tests_omnios_x86_64 ./build/tests_header_only_omnios_x86_64
./build/tests_omnios_x86_64 > /tmp/out1.txt 2>&1; s1=$?
cat /tmp/out1.txt
./build/tests_header_only_omnios_x86_64 > /tmp/out2.txt 2>&1; s2=$?
cat /tmp/out2.txt
cat /tmp/out1.txt /tmp/out2.txt > ./test_output.txt
./build/tests_omnios_x86_64 --test-case-exclude="*Multicast*"; s1=$?
./build/tests_header_only_omnios_x86_64 --test-case-exclude="*Multicast*"; s2=$?
[ $s1 -eq 0 ] && [ $s2 -eq 0 ] || exit 1
- name: Write step summary
if: always()
run: |
echo '```' >> $GITHUB_STEP_SUMMARY
cat ./test_output.txt >> $GITHUB_STEP_SUMMARY
echo '```' >> $GITHUB_STEP_SUMMARY

omnios-x86_64-noifaddrs-test:
runs-on: ubuntu-latest
Expand All @@ -839,39 +844,13 @@ jobs:
- uses: vmactions/omnios-vm@v1
with:
usesh: true
# Multicast excluded: OmniOS QEMU has unreliable multicast loopback
run: |
chmod +x ./build/tests_omnios_x86_64_noifaddrs ./build/tests_header_only_omnios_x86_64_noifaddrs
./build/tests_omnios_x86_64_noifaddrs > /tmp/out1.txt 2>&1; s1=$?
cat /tmp/out1.txt
./build/tests_header_only_omnios_x86_64_noifaddrs > /tmp/out2.txt 2>&1; s2=$?
cat /tmp/out2.txt
cat /tmp/out1.txt /tmp/out2.txt > ./test_output.txt
./build/tests_omnios_x86_64_noifaddrs --test-case-exclude="*Multicast*"; s1=$?
./build/tests_header_only_omnios_x86_64_noifaddrs --test-case-exclude="*Multicast*"; s2=$?
[ $s1 -eq 0 ] && [ $s2 -eq 0 ] || exit 1
- name: Write step summary
if: always()
run: |
echo '```' >> $GITHUB_STEP_SUMMARY
cat ./test_output.txt >> $GITHUB_STEP_SUMMARY
echo '```' >> $GITHUB_STEP_SUMMARY

linux-s390x-test:
runs-on: ubuntu-latest
timeout-minutes: 30
needs: [linux-s390x-build]
steps:
- uses: actions/download-artifact@v4
with:
name: linux-s390x
path: build/
- name: Run tests
run: |
set -o pipefail
sudo apt-get update && sudo apt-get install -y qemu-user-static gcc-s390x-linux-gnu
echo '```' >> $GITHUB_STEP_SUMMARY
chmod +x ./build/tests_linux_s390x ./build/tests_header_only_linux_s390x
qemu-s390x-static -L /usr/s390x-linux-gnu/ ./build/tests_linux_s390x 2>&1 | tee -a $GITHUB_STEP_SUMMARY
qemu-s390x-static -L /usr/s390x-linux-gnu/ ./build/tests_header_only_linux_s390x 2>&1 | tee -a $GITHUB_STEP_SUMMARY
echo '```' >> $GITHUB_STEP_SUMMARY

android-x86_64-test:
runs-on: ubuntu-latest
Expand Down
Loading
Loading