From 4c267f88c68f27af0701afb691f22055ee132530 Mon Sep 17 00:00:00 2001 From: Zach Brown Date: Fri, 28 Aug 2026 13:10:49 -0700 Subject: [PATCH] scoutfs: add portscan test Signed-off-by: Zach Brown --- tests/golden/portscan | 3 +++ tests/sequence | 1 + tests/tests/portscan.sh | 31 +++++++++++++++++++++++++++++++ 3 files changed, 35 insertions(+) create mode 100644 tests/golden/portscan create mode 100644 tests/tests/portscan.sh diff --git a/tests/golden/portscan b/tests/golden/portscan new file mode 100644 index 00000000..acd95f46 --- /dev/null +++ b/tests/golden/portscan @@ -0,0 +1,3 @@ +== make sure unknown disconnect doesn't shut down server +should be leader: 1 +should still be leader: 1 diff --git a/tests/sequence b/tests/sequence index 401b36a4..05e9c1e5 100644 --- a/tests/sequence +++ b/tests/sequence @@ -65,4 +65,5 @@ block-stale-reads.sh freed-list-wedge.sh inode-deletion.sh renameat2-noreplace.sh +portscan.sh xfstests.sh diff --git a/tests/tests/portscan.sh b/tests/tests/portscan.sh new file mode 100644 index 00000000..38fce852 --- /dev/null +++ b/tests/tests/portscan.sh @@ -0,0 +1,31 @@ +# +# Make sure the server ignores connections that aren't participating. +# + +t_require_commands nc + +echo "== make sure unknown disconnect doesn't shut down server" +# get server addr [1] and port [1] +sv=$(t_server_nr) +addrs=($(grep "peer 0.0.0.0" $(t_debugfs_path $sv)/connections | \ + awk -F"[: ]" '{print $2,$3}')) + +# verify that the server is leader and record its term +echo "should be leader: $(cat $(t_sysfs_path $sv)/quorum/is_leader)" +before=$(awk '($1 == "term") { print $2 }' < $(t_sysfs_path $sv)/quorum/status) + +# send junk +echo " " | nc ${addrs[0]} ${addrs[1]} + +# make sure the server is still leader with the same term +echo "should still be leader: $(cat $(t_sysfs_path $sv)/quorum/is_leader)" +after=$(awk '($1 == "term") { print $2 }' < $(t_sysfs_path $sv)/quorum/status) + +if [ -z "$before" -o -z "$after" ]; then + echo "couldn't find terms: before '$before', or after '$after'" +fi +if [ "$before" != "$after" ]; then + echo "term before $before != term after $after" +fi + +t_pass