Skip to content

Commit

Permalink
netconsole: selftest: verify userdata entry limit
Browse files Browse the repository at this point in the history
Add a new selftest for netconsole that tests the userdata entry limit
functionality. The test performs two key verifications:

1. Create MAX_USERDATA_ITEMS (16) userdata entries successfully
2. Confirm that attempting to create an additional userdata entry fails

The selftest script uses the netcons library and checks the behavior
by attempting to create entries beyond the maximum allowed limit.

Signed-off-by: Breno Leitao <[email protected]>
Tested-by: Simon Horman <[email protected]>
Reviewed-by: Simon Horman <[email protected]>
Link: https://patch.msgid.link/[email protected]
Signed-off-by: Jakub Kicinski <[email protected]>
  • Loading branch information
leitao authored and kuba-moo committed Jan 10, 2025
1 parent 7dcb653 commit daea6d2
Show file tree
Hide file tree
Showing 3 changed files with 69 additions and 1 deletion.
2 changes: 1 addition & 1 deletion MAINTAINERS
Original file line number Diff line number Diff line change
Expand Up @@ -16171,7 +16171,7 @@ S: Maintained
F: Documentation/networking/netconsole.rst
F: drivers/net/netconsole.c
F: tools/testing/selftests/drivers/net/lib/sh/lib_netcons.sh
F: tools/testing/selftests/drivers/net/netcons_basic.sh
F: tools/testing/selftests/drivers/net/netcons\*

NETDEVSIM
M: Jakub Kicinski <[email protected]>
Expand Down
1 change: 1 addition & 0 deletions tools/testing/selftests/drivers/net/Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@ TEST_INCLUDES := $(wildcard lib/py/*.py) \

TEST_PROGS := \
netcons_basic.sh \
netcons_overflow.sh \
ping.py \
queues.py \
stats.py \
Expand Down
67 changes: 67 additions & 0 deletions tools/testing/selftests/drivers/net/netcons_overflow.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,67 @@
#!/usr/bin/env bash
# SPDX-License-Identifier: GPL-2.0

# This test verifies that users can successfully create up to
# MAX_USERDATA_ITEMS userdata entries without encountering any failures.
#
# Additionally, it tests for expected failure when attempting to exceed this
# maximum limit.
#
# Author: Breno Leitao <[email protected]>

set -euo pipefail

SCRIPTDIR=$(dirname "$(readlink -e "${BASH_SOURCE[0]}")")

source "${SCRIPTDIR}"/lib/sh/lib_netcons.sh
# This is coming from netconsole code. Check for it in drivers/net/netconsole.c
MAX_USERDATA_ITEMS=16

# Function to create userdata entries
function create_userdata_max_entries() {
# All these keys should be created without any error
for i in $(seq $MAX_USERDATA_ITEMS)
do
# USERDATA_KEY is used by set_user_data
USERDATA_KEY="key"${i}
set_user_data
done
}

# Function to verify the entry limit
function verify_entry_limit() {
# Allowing the test to fail without exiting, since the next command
# will fail
set +e
mkdir "${NETCONS_PATH}/userdata/key_that_will_fail" 2> /dev/null
ret="$?"
set -e
if [ "$ret" -eq 0 ];
then
echo "Adding more than ${MAX_USERDATA_ITEMS} entries in userdata should fail, but it didn't" >&2
ls "${NETCONS_PATH}/userdata/" >&2
exit "${ksft_fail}"
fi
}

# ========== #
# Start here #
# ========== #

modprobe netdevsim 2> /dev/null || true
modprobe netconsole 2> /dev/null || true

# Check for basic system dependency and exit if not found
check_for_dependencies

# Remove the namespace, interfaces and netconsole target on exit
trap cleanup EXIT
# Create one namespace and two interfaces
set_network
# Create a dynamic target for netconsole
create_dynamic_target
# populate the maximum number of supported keys in userdata
create_userdata_max_entries
# Verify an additional entry is not allowed
verify_entry_limit
exit "${ksft_pass}"

0 comments on commit daea6d2

Please sign in to comment.