From d966a9bb173117654a6404b99dd87503e8d41c18 Mon Sep 17 00:00:00 2001 From: sfan5 Date: Sat, 16 Mar 2024 19:11:51 +0100 Subject: [PATCH] Rework tests to actually check something --- .github/workflows/build.yml | 14 ++++++++-- util/ci-test.sh | 54 ++++++++++++++++++++++++++++--------- util/ci-test2.sh | 14 ++++++++++ 3 files changed, 67 insertions(+), 15 deletions(-) create mode 100755 util/ci-test2.sh diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index e52cda3..d8f1b96 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -5,11 +5,13 @@ on: paths: - 'src/**.[ch]' - '**/Makefile' + - 'util/**.sh' - '.github/workflows/**.yml' pull_request: paths: - 'src/**.[ch]' - '**/Makefile' + - 'util/**.sh' - '.github/workflows/**.yml' jobs: @@ -30,7 +32,11 @@ jobs: - name: Test run: | - sudo ./util/ci-test.sh + ./util/ci-test.sh + + - name: Test 2 + run: | + sudo ./util/ci-test2.sh clang: @@ -50,4 +56,8 @@ jobs: - name: Test run: | - sudo ./util/ci-test.sh + ./util/ci-test.sh + + - name: Test 2 + run: | + sudo ./util/ci-test2.sh diff --git a/util/ci-test.sh b/util/ci-test.sh index 8865632..4834395 100755 --- a/util/ci-test.sh +++ b/util/ci-test.sh @@ -1,22 +1,50 @@ #!/bin/bash -e -if=dummy0 -if [ ! -e /sys/class/net/$if ]; then - ip l add $if type dummy - ip l set $if up - ip r add 100::/64 dev $if -fi +pcap=test.pcap +log=out.txt args=( - --interface $if + --quiet + --interface "dump:$pcap" --source-mac 02:00:00:00:00:f0 --router-mac 02-00-00-00-00-0F --source-ip 2001:db8::1 --source-port 64000 ) -echo "ICMP:" -./fi6s "${args[@]}" --icmp 100::x -echo "TCP:" -./fi6s "${args[@]}" -b -p 1 100::x -echo "UDP:" -./fi6s "${args[@]}" -bu -p 53 100::x +ecode=0 +dotest () { + echo "=== Running test: $id ===" + ./fi6s "${args[@]}" "${args2[@]}" || : + tcpdump -nn -v -r "$pcap" >$log 2>/dev/null + if ! grep -aP "$regex" $log; then + echo "FAILED, actual dump:" + cat $log + ecode=1 + else + echo "Passed." + fi + echo +} + +## + +id="ICMP" +args2=(--icmp 100::x) +regex='2001:db8::1 > 100::a: \[icmp6 sum ok\] ICMP6, echo request' +dotest + +id="TCP" +args2=(-b -p 1 100::x) +regex='2001:db8::1\.64000 > 100::b\.1: Flags \[S\], cksum [^ ]+ \(correct\).*, length 0' +dotest + +id="UDP 53" +args2=(-bu -p 53 100::x) +regex='2001:db8::1\.64000 > 100::c\.53: \[udp sum ok\] [^ ]+ TXT [^ ]+ version\.bind\.' +dotest + +## + +echo "=== Done ===" +rm -f $pcap $log +exit $ecode diff --git a/util/ci-test2.sh b/util/ci-test2.sh new file mode 100755 index 0000000..a90ae5c --- /dev/null +++ b/util/ci-test2.sh @@ -0,0 +1,14 @@ +#!/bin/bash -e +args=( + --interface lo + --router-mac 01:01:01:01:01:01 + --source-ip ::1 +) + +./fi6s "${args[@]}" --icmp ::1 | tee out.txt +if ! grep -q "^icmp up 0 ::1 " out.txt; then + echo "FAILED!" + exit 1 +fi +echo "Passed." +exit 0