Merge pull request #118 from danielinux/fix-stuck-forwarding-test #655
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| name: Linux interop tests | |
| on: | |
| push: | |
| branches: [ 'master', 'main', 'release/**' ] | |
| pull_request: | |
| branches: [ '*' ] | |
| jobs: | |
| linux_test: | |
| runs-on: ubuntu-latest | |
| timeout-minutes: 15 | |
| steps: | |
| - uses: actions/checkout@v4 | |
| with: | |
| submodules: true | |
| - name: Install dependencies | |
| run: | | |
| sudo apt-get update | |
| sudo apt-get install -y build-essential autoconf automake libtool pkg-config \ | |
| tftpd-hpa tftp-hpa | |
| sudo modprobe tun | |
| # The tftpd-hpa package installs a systemd unit that binds the | |
| # standard TFTP port. The interop test starts its own in.tftpd | |
| # bound to the test tap link, so stop the system instance to | |
| # keep ports / file ownership predictable. | |
| sudo systemctl stop tftpd-hpa || true | |
| sudo systemctl disable tftpd-hpa || true | |
| - name: Clone and build wolfSSL from nightly-snapshot | |
| run: | | |
| git clone --depth=1 https://github.com/wolfssl/wolfssl --branch nightly-snapshot /tmp/wolfssl | |
| cd /tmp/wolfssl | |
| ./autogen.sh | |
| ./configure --enable-all --enable-md5 | |
| make -j$(nproc) | |
| sudo make install | |
| sudo ldconfig | |
| - name: Build linux tests | |
| run: | | |
| mkdir -p build/port | |
| make EXTRA_CFLAGS="-DWOLFIP_RAWSOCKETS=1 -DWOLFIP_PACKET_SOCKETS=1" | |
| make EXTRA_CFLAGS="-DWOLFIP_RAWSOCKETS=1 -DWOLFIP_PACKET_SOCKETS=1" build/raw_ping build/packet_ping | |
| - name: Run standalone "event loop" test | |
| timeout-minutes: 5 | |
| run: | | |
| set -euo pipefail | |
| timeout --preserve-status 5m sudo ./build/test-evloop | |
| sudo killall tcpdump || true | |
| - name: Run standalone "event loop" TUN test | |
| timeout-minutes: 5 | |
| run: | | |
| set -euo pipefail | |
| timeout --preserve-status 5m sudo ./build/test-evloop-tun | |
| sudo killall tcpdump || true | |
| - name: Run standalone "IPsec esp" test | |
| timeout-minutes: 7 | |
| run: | | |
| set -euo pipefail | |
| sudo ./tools/ip-xfrm/delete_all || true | |
| timeout --preserve-status 7m sudo ./tools/ip-xfrm/rfc4106 128 | |
| timeout --preserve-status 7m sudo ./build/test-esp -m 0 | |
| sudo killall tcpdump || true | |
| sudo ./tools/ip-xfrm/delete_all || true | |
| timeout --preserve-status 7m sudo ./tools/ip-xfrm/cbc_auth sha256 128 | |
| timeout --preserve-status 7m sudo ./build/test-esp -m 1 | |
| sudo killall tcpdump || true | |
| sudo ./tools/ip-xfrm/delete_all || true | |
| - name: Run standalone wolfssl test | |
| timeout-minutes: 5 | |
| run: | | |
| set -euo pipefail | |
| timeout --preserve-status 5m sudo ./build/test-wolfssl | |
| sudo killall tcpdump || true | |
| - name: Run standalone forwarding test | |
| timeout-minutes: 5 | |
| run: | | |
| set -euo pipefail | |
| timeout --preserve-status 5m sudo ./build/test-wolfssl-forwarding | |
| - name: Run standalone TTL expired test | |
| timeout-minutes: 5 | |
| run: | | |
| set -euo pipefail | |
| timeout --preserve-status 5m ./build/test-ttl-expired | |
| - name: Testing ICMP socket by stealing system calls in ping | |
| timeout-minutes: 2 | |
| run: | | |
| set -euo pipefail | |
| timeout --preserve-status 2m sudo LD_PRELOAD=$PWD/libwolfip.so ping -c 5 10.10.10.1 | |
| - name: Rebuild libwolfip.so with loopback enabled | |
| run: | | |
| set -euo pipefail | |
| rm -f libwolfip.so build/pie/wolfip.o | |
| make libwolfip.so EXTRA_CFLAGS="-DWOLFIP_ENABLE_LOOPBACK=1" | |
| - name: Testing ICMP loopback smoke (no TUN/TAP) | |
| timeout-minutes: 2 | |
| run: | | |
| set -euo pipefail | |
| timeout --preserve-status 2m sudo LD_PRELOAD=$PWD/libwolfip.so ping -4 -n -c 5 127.0.0.1 | |
| - name: Testing raw sockets with raw_ping | |
| timeout-minutes: 2 | |
| run: | | |
| set -euo pipefail | |
| timeout --preserve-status 2m sudo ./build/raw_ping 10.10.10.1 | |
| - name: Testing packet sockets with packet_ping | |
| timeout-minutes: 2 | |
| run: | | |
| set -euo pipefail | |
| timeout --preserve-status 2m sudo ./build/packet_ping wtcp0 10.10.10.1 | |
| - name: Install check | |
| run: | | |
| sudo apt-get install -y check | |
| - name: Build unit tests | |
| run: | | |
| make unit | |
| - name: Run unit tests | |
| timeout-minutes: 5 | |
| run: | | |
| set -euo pipefail | |
| timeout --preserve-status 5m build/test/unit | |
| - name: Build TFTP interop test | |
| run: | | |
| make build/test-tftp-interop | |
| - name: Run TFTP interop test (wolfIP client vs tftpd-hpa, wolfIP server vs tftp-hpa) | |
| timeout-minutes: 3 | |
| run: | | |
| set -euo pipefail | |
| timeout --preserve-status 3m sudo ./build/test-tftp-interop all | |
| sudo killall tcpdump || true | |
| - name: Upload TFTP interop diagnostics on failure | |
| if: failure() | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: tftp-interop-diagnostics | |
| path: | | |
| /tmp/wolfip-tftp.pcap | |
| /tmp/wolfip-tftpd-hpa.log | |
| /tmp/wolfip-tftp-client.log | |
| if-no-files-found: ignore | |
| - name: Build ESP unit tests | |
| run: | | |
| make unit-esp | |
| - name: Run ESP unit tests | |
| timeout-minutes: 5 | |
| run: | | |
| set -euo pipefail | |
| timeout --preserve-status 5m ./build/test/unit-esp | |
| - name: Cleanup IPsec state | |
| if: always() | |
| run: | | |
| sudo ./tools/ip-xfrm/delete_all || true | |
| sudo killall tcpdump || true |