On Sun, Nov 16, 2025 at 05:14:05PM +0000, Andre Carvalho wrote:
> Introduce a new netconsole selftest to validate that netconsole is able
> to resume a deactivated target when the low level interface comes back.
> 
> The test setups the network using netdevsim, creates a netconsole target
> and then remove/add netdevsim in order to bring the same interfaces
> back. Afterwards, the test validates that the target works as expected.
> 
> Targets are created via cmdline parameters to the module to ensure that
> we are able to resume targets that were bound by mac and interface name.
> 
> Signed-off-by: Andre Carvalho <[email protected]>
> ---
>  tools/testing/selftests/drivers/net/Makefile       |  1 +
>  .../selftests/drivers/net/lib/sh/lib_netcons.sh    | 35 ++++++--
>  .../selftests/drivers/net/netcons_resume.sh        | 97 
> ++++++++++++++++++++++
>  3 files changed, 128 insertions(+), 5 deletions(-)
> 
> diff --git a/tools/testing/selftests/drivers/net/Makefile 
> b/tools/testing/selftests/drivers/net/Makefile
> index 33f4816216ec..7dc9e5b23d5b 100644
> --- a/tools/testing/selftests/drivers/net/Makefile
> +++ b/tools/testing/selftests/drivers/net/Makefile
> @@ -17,6 +17,7 @@ TEST_PROGS := \
>       netcons_cmdline.sh \
>       netcons_fragmented_msg.sh \
>       netcons_overflow.sh \
> +     netcons_resume.sh \
>       netcons_sysdata.sh \
>       netcons_torture.sh \
>       netpoll_basic.py \
> diff --git a/tools/testing/selftests/drivers/net/lib/sh/lib_netcons.sh 
> b/tools/testing/selftests/drivers/net/lib/sh/lib_netcons.sh
> index 87f89fd92f8c..6157db660067 100644
> --- a/tools/testing/selftests/drivers/net/lib/sh/lib_netcons.sh
> +++ b/tools/testing/selftests/drivers/net/lib/sh/lib_netcons.sh
> @@ -203,19 +203,21 @@ function do_cleanup() {
>  function cleanup_netcons() {
>       # delete netconsole dynamic reconfiguration
>       # do not fail if the target is already disabled
> -     if [[ ! -d "${NETCONS_PATH}" ]]
> +     local TARGET_PATH=${1:-${NETCONS_PATH}}
> +
> +     if [[ ! -d "${TARGET_PATH}" ]]
>       then
>               # in some cases this is called before netcons path is created
>               return
>       fi
> -     if [[ $(cat "${NETCONS_PATH}"/enabled) != 0 ]]
> +     if [[ $(cat "${TARGET_PATH}"/enabled) != 0 ]]
>       then
> -             echo 0 > "${NETCONS_PATH}"/enabled || true
> +             echo 0 > "${TARGET_PATH}"/enabled || true
>       fi
>       # Remove all the keys that got created during the selftest
> -     find "${NETCONS_PATH}/userdata/" -mindepth 1 -type d -delete
> +     find "${TARGET_PATH}/userdata/" -mindepth 1 -type d -delete
>       # Remove the configfs entry
> -     rmdir "${NETCONS_PATH}"
> +     rmdir "${TARGET_PATH}"
>  }
>  
>  function cleanup() {
> @@ -377,6 +379,29 @@ function check_netconsole_module() {
>       fi
>  }
>  
> +function wait_target_state() {
> +     local TARGET=${1}
> +     local STATE=${2}
> +     local TARGET_PATH="${NETCONS_CONFIGFS}"/"${TARGET}"
> +     local ENABLED=0
> +
> +     if [ "${STATE}" == "enabled" ]
> +     then
> +             local ENABLED=1

ENABLED is already marked as local above. "local" here is unnecessary.

Other than that, and with the "trap" fix, it might be in good shape.

Thanks for this selftest.
--breno

--
pw-bot: cr

Reply via email to