From 0a19707b1ad55ea5694b95332990180337825bfe Mon Sep 17 00:00:00 2001 From: mozillazg Date: Sat, 27 Apr 2024 20:38:37 +0800 Subject: [PATCH] ci: add e2e test --- .github/workflows/test.yml | 74 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 74 insertions(+) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 5f12148e..9783f6b6 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -32,6 +32,80 @@ jobs: - name: Test run: make test + - name: Store executable + uses: actions/upload-artifact@v4 + with: + name: ptcpdump + path: ptcpdump + + + e2e-test: + runs-on: ubuntu-latest + name: e2e-test + needs: build + strategy: + fail-fast: false + matrix: + kernel: [ '5.10-v0.3', '5.15-v0.3', '6.3-main', 'bpf-next-20231030.012704' ] + timeout-minutes: 10 + steps: + - uses: actions/checkout@v4 + + - name: Retrieve stored ptcpdump executable + uses: actions/download-artifact@v4 + with: + name: ptcpdump + path: ptcpdump + + - name: Provision LVH VMs + uses: cilium/little-vm-helper@v0.0.12 + with: + test-name: ptcpdump-test + image-version: ${{ matrix.kernel }} + host-mount: ./ + dns-resolver: '1.1.1.1' + install-dependencies: 'true' + cmd: | + chmod +x /host/ptcpdump/ptcpdump + + - name: Test base + uses: cilium/little-vm-helper@v0.0.12 + with: + provision: 'false' + dns-resolver: '1.1.1.1' + cmd: | + set -ex + + timeout 20s /host/ptcpdump/ptcpdump -c 1 -i any --print -w ptcpdump.pcapng 'dst host 1.1.1.1 and tcp[tcpflags] = tcp-syn' 2>&1 1>/tmp/log | (read _; curl 1.1.1.1 &>/dev/null || true) + + cat /tmp/log + cat /tmp/log | grep '/usr/bin/curl' + cat /tmp/log | grep -F ' > 1.1.1.1.80: Flags [S],' + + apt install -y tcpdump + tcpdump -nr ./ptcpdump.pcapnp + tcpdump -nr ./ptcpdump.pcapnp | grep -F ' > 1.1.1.1.80: Flags [S],' + + - name: Test filter by process + uses: cilium/little-vm-helper@v0.0.12 + with: + provision: 'false' + dns-resolver: '1.1.1.1' + cmd: | + set -ex + + timeout 20s /host/ptcpdump/ptcpdump -c 3 --pname curl --pid "$$" -f -i any --print -w ptcpdump.pcapng 2>&1 1>/tmp/log | (read _; curl 1.1.1.1 &>/dev/null || true) + + cat /tmp/log + cat /tmp/log | grep '/usr/bin/curl' + cat /tmp/log | grep -F ' > 1.1.1.1.80: Flags [S],' + cat /tmp/log | grep -P '1.1.1.1.80 > .*: Flags \[S.\],' + + apt install -y tcpdump + tcpdump -nr ./ptcpdump.pcapnp + tcpdump -nr ./ptcpdump.pcapnp | grep -F ' > 1.1.1.1.80: Flags [S],' + tcpdump -nr ./ptcpdump.pcapnp | grep -P '1.1.1.1.80 > .*: Flags \[S.\],' + releaser-test: runs-on: ubuntu-latest