Add new basic kselftest that checks if the available rust sample modules can be added and removed correctly.
Signed-off-by: Laura Nao laura.nao@collabora.com --- MAINTAINERS | 1 + tools/testing/selftests/Makefile | 1 + tools/testing/selftests/rust/.gitignore | 1 + tools/testing/selftests/rust/Makefile | 8 ++++ .../selftests/rust/test_probe_samples.sh | 42 +++++++++++++++++++ 5 files changed, 53 insertions(+) create mode 100644 tools/testing/selftests/rust/.gitignore create mode 100644 tools/testing/selftests/rust/Makefile create mode 100755 tools/testing/selftests/rust/test_probe_samples.sh
diff --git a/MAINTAINERS b/MAINTAINERS index e2c6187a3ac8..acf283a5d2c0 100644 --- a/MAINTAINERS +++ b/MAINTAINERS @@ -18847,6 +18847,7 @@ F: Documentation/rust/ F: rust/ F: samples/rust/ F: scripts/*rust* +F: tools/testing/selftests/rust/ K: \b(?i:rust)\b
RXRPC SOCKETS (AF_RXRPC) diff --git a/tools/testing/selftests/Makefile b/tools/testing/selftests/Makefile index 3b2061d1c1a5..26140426c849 100644 --- a/tools/testing/selftests/Makefile +++ b/tools/testing/selftests/Makefile @@ -74,6 +74,7 @@ TARGETS += riscv TARGETS += rlimits TARGETS += rseq TARGETS += rtc +TARGETS += rust TARGETS += seccomp TARGETS += sgx TARGETS += sigaltstack diff --git a/tools/testing/selftests/rust/.gitignore b/tools/testing/selftests/rust/.gitignore new file mode 100644 index 000000000000..e3c5c04d1b19 --- /dev/null +++ b/tools/testing/selftests/rust/.gitignore @@ -0,0 +1 @@ +ktap_helpers.sh diff --git a/tools/testing/selftests/rust/Makefile b/tools/testing/selftests/rust/Makefile new file mode 100644 index 000000000000..ccaa50f35b5b --- /dev/null +++ b/tools/testing/selftests/rust/Makefile @@ -0,0 +1,8 @@ + +TEST_PROGS += test_probe_samples.sh +TEST_GEN_FILES := ktap_helpers.sh + +include ../lib.mk + +$(OUTPUT)/ktap_helpers.sh: + cp $(top_srcdir)/tools/testing/selftests/dt/ktap_helpers.sh $@ diff --git a/tools/testing/selftests/rust/test_probe_samples.sh b/tools/testing/selftests/rust/test_probe_samples.sh new file mode 100755 index 000000000000..a46550543f73 --- /dev/null +++ b/tools/testing/selftests/rust/test_probe_samples.sh @@ -0,0 +1,42 @@ +#!/bin/bash +# SPDX-License-Identifier: GPL-2.0 +# +# Copyright (c) 2023 Collabora Ltd +# +# This script tests whether the rust sample modules can +# be added and removed correctly. +# + +DIR="$(dirname "$(readlink -f "$0")")" + +source "${DIR}"/ktap_helpers.sh + +rust_sample_modules=("rust_minimal" "rust_print") + +KSFT_PASS=0 +KSFT_FAIL=1 +KSFT_SKIP=4 + +ret="${KSFT_PASS}" + +ktap_print_header + +ktap_set_plan "${#rust_sample_modules[@]}" + +for sample in "${rust_sample_modules[@]}"; do + if ! /sbin/modprobe -n -q "$sample"; then + ktap_test_skip "module $sample is not found in /lib/modules/$(uname -r)" + continue + fi + + if /sbin/modprobe -q "$sample"; then + /sbin/modprobe -q -r "$sample" + ktap_test_pass "$sample" + else + ret="${KSFT_FAIL}" + ktap_test_fail "$sample" + fi +done + +ktap_print_totals +exit "${ret}"
On Fri, 15 Dec 2023 at 14:25, Laura Nao laura.nao@collabora.com wrote:
Add new basic kselftest that checks if the available rust sample modules can be added and removed correctly.
Signed-off-by: Laura Nao laura.nao@collabora.com
MAINTAINERS | 1 + tools/testing/selftests/Makefile | 1 + tools/testing/selftests/rust/.gitignore | 1 + tools/testing/selftests/rust/Makefile | 8 ++++ .../selftests/rust/test_probe_samples.sh | 42 +++++++++++++++++++ 5 files changed, 53 insertions(+) create mode 100644 tools/testing/selftests/rust/.gitignore create mode 100644 tools/testing/selftests/rust/Makefile create mode 100755 tools/testing/selftests/rust/test_probe_samples.sh
diff --git a/MAINTAINERS b/MAINTAINERS index e2c6187a3ac8..acf283a5d2c0 100644 --- a/MAINTAINERS +++ b/MAINTAINERS @@ -18847,6 +18847,7 @@ F: Documentation/rust/ F: rust/ F: samples/rust/ F: scripts/*rust* +F: tools/testing/selftests/rust/ K: \b(?i:rust)\b
RXRPC SOCKETS (AF_RXRPC) diff --git a/tools/testing/selftests/Makefile b/tools/testing/selftests/Makefile index 3b2061d1c1a5..26140426c849 100644 --- a/tools/testing/selftests/Makefile +++ b/tools/testing/selftests/Makefile @@ -74,6 +74,7 @@ TARGETS += riscv TARGETS += rlimits TARGETS += rseq TARGETS += rtc +TARGETS += rust TARGETS += seccomp TARGETS += sgx TARGETS += sigaltstack diff --git a/tools/testing/selftests/rust/.gitignore b/tools/testing/selftests/rust/.gitignore new file mode 100644 index 000000000000..e3c5c04d1b19 --- /dev/null +++ b/tools/testing/selftests/rust/.gitignore @@ -0,0 +1 @@ +ktap_helpers.sh diff --git a/tools/testing/selftests/rust/Makefile b/tools/testing/selftests/rust/Makefile new file mode 100644 index 000000000000..ccaa50f35b5b --- /dev/null +++ b/tools/testing/selftests/rust/Makefile @@ -0,0 +1,8 @@
+TEST_PROGS += test_probe_samples.sh +TEST_GEN_FILES := ktap_helpers.sh
+include ../lib.mk
+$(OUTPUT)/ktap_helpers.sh:
cp $(top_srcdir)/tools/testing/selftests/dt/ktap_helpers.sh $@
diff --git a/tools/testing/selftests/rust/test_probe_samples.sh b/tools/testing/selftests/rust/test_probe_samples.sh new file mode 100755 index 000000000000..a46550543f73 --- /dev/null +++ b/tools/testing/selftests/rust/test_probe_samples.sh @@ -0,0 +1,42 @@ +#!/bin/bash +# SPDX-License-Identifier: GPL-2.0 +# +# Copyright (c) 2023 Collabora Ltd +# +# This script tests whether the rust sample modules can +# be added and removed correctly. +#
+DIR="$(dirname "$(readlink -f "$0")")"
+source "${DIR}"/ktap_helpers.sh
+rust_sample_modules=("rust_minimal" "rust_print")
+KSFT_PASS=0 +KSFT_FAIL=1 +KSFT_SKIP=4
+ret="${KSFT_PASS}"
+ktap_print_header
+ktap_set_plan "${#rust_sample_modules[@]}"
+for sample in "${rust_sample_modules[@]}"; do
- if ! /sbin/modprobe -n -q "$sample"; then
ktap_test_skip "module $sample is not found in /lib/modules/$(uname -r)"
continue
- fi
- if /sbin/modprobe -q "$sample"; then
/sbin/modprobe -q -r "$sample"
ktap_test_pass "$sample"
- else
ret="${KSFT_FAIL}"
ktap_test_fail "$sample"
- fi
+done
+ktap_print_totals
+exit "${ret}"
2.30.2
Reviewed-by: Sergio Gonzalez Collado sergio.collado@gmail.com
On Fri, Dec 15, 2023 at 2:21 PM Laura Nao laura.nao@collabora.com wrote:
Add new basic kselftest that checks if the available rust sample modules can be added and removed correctly.
Signed-off-by: Laura Nao laura.nao@collabora.com
Thanks Laura!
Shuah: do you want that we pick this one? If so, your `Acked-by` would be nice -- thanks! Otherwise, please feel free to pick it up.
Cc'ing David too since it involves KTAP in case he has comments.
diff --git a/tools/testing/selftests/rust/Makefile b/tools/testing/selftests/rust/Makefile
Missing SPDX line? (it can be added when picking it up, though).
+$(OUTPUT)/ktap_helpers.sh:
cp $(top_srcdir)/tools/testing/selftests/dt/ktap_helpers.sh $@
This may be something for another series, but should these helpers be factored out perhaps / provided by the framework? Does it work sourcing them from `dt` directly instead of copying meanwhile (to simplify)?
+KSFT_PASS=0 +KSFT_FAIL=1 +KSFT_SKIP=4
Similarly, would it make sense for this kind of "common constants" be factored somehow? Or does that not make sense (I see other tests also define them "manually")?
Cheers, Miguel
On 12/21/23 20:46, Miguel Ojeda wrote:
On Fri, Dec 15, 2023 at 2:21 PM Laura Nao laura.nao@collabora.com wrote:
Add new basic kselftest that checks if the available rust sample modules can be added and removed correctly.
Signed-off-by: Laura Nao laura.nao@collabora.com
Thanks Laura!
Shuah: do you want that we pick this one? If so, your `Acked-by` would be nice -- thanks! Otherwise, please feel free to pick it up.
Cc'ing David too since it involves KTAP in case he has comments.
diff --git a/tools/testing/selftests/rust/Makefile b/tools/testing/selftests/rust/Makefile
Missing SPDX line? (it can be added when picking it up, though).
Thanks for the feedback Miguel!
+$(OUTPUT)/ktap_helpers.sh:
cp $(top_srcdir)/tools/testing/selftests/dt/ktap_helpers.sh
$@
This may be something for another series, but should these helpers be factored out perhaps / provided by the framework? Does it work sourcing them from `dt` directly instead of copying meanwhile (to simplify)?
+KSFT_PASS=0 +KSFT_FAIL=1 +KSFT_SKIP=4
Similarly, would it make sense for this kind of "common constants" be factored somehow? Or does that not make sense (I see other tests also define them "manually")?
Sourcing the file from the `dt` folder does work when running the test with `make -C tools/testing/selftests TARGETS=rust run_tests`, but fails when the test is installed with `make -C tools/testing/selftests TARGETS=rust install` and run with `./tools/testing/selftests/kselftest_install/run_kselftest.sh` (unless the dt kselftest is installed too).
I agree factoring out the helpers might be a better solution. I sent a patch to move the ktap_helpers.sh file to the kselftest common directory, so that kselftests written in bash can make use of the helper functions more easily:
https://lore.kernel.org/linux-kselftest/20240102141528.169947-1-laura.nao@co...
If that patch is merged first, I'll rework this one and send a v2 with the proper adjustments.
Best,
Laura
On 1/2/24 15:25, Laura Nao wrote:
I agree factoring out the helpers might be a better solution. I sent a patch to move the ktap_helpers.sh file to the kselftest common directory, so that kselftests written in bash can make use of the helper functions more easily:
https://lore.kernel.org/linux-kselftest/20240102141528.169947-1-laura.nao@co...
If that patch is merged first, I'll rework this one and send a v2 with the proper adjustments.
v2 sent: https://lore.kernel.org/linux-kselftest/20240222151009.461264-1-laura.nao@co...
Best,
Laura
On 12/15/23 6:21 PM, Laura Nao wrote:
Add new basic kselftest that checks if the available rust sample modules can be added and removed correctly.
Signed-off-by: Laura Nao laura.nao@collabora.com
Reviewed-by: Muhammad Usama Anjum usama.anjum@collabora.com Tested-by: Muhammad Usama Anjum usama.anjum@collabora.com
MAINTAINERS | 1 + tools/testing/selftests/Makefile | 1 + tools/testing/selftests/rust/.gitignore | 1 + tools/testing/selftests/rust/Makefile | 8 ++++ .../selftests/rust/test_probe_samples.sh | 42 +++++++++++++++++++ 5 files changed, 53 insertions(+) create mode 100644 tools/testing/selftests/rust/.gitignore create mode 100644 tools/testing/selftests/rust/Makefile create mode 100755 tools/testing/selftests/rust/test_probe_samples.sh
diff --git a/MAINTAINERS b/MAINTAINERS index e2c6187a3ac8..acf283a5d2c0 100644 --- a/MAINTAINERS +++ b/MAINTAINERS @@ -18847,6 +18847,7 @@ F: Documentation/rust/ F: rust/ F: samples/rust/ F: scripts/*rust* +F: tools/testing/selftests/rust/ K: \b(?i:rust)\b RXRPC SOCKETS (AF_RXRPC) diff --git a/tools/testing/selftests/Makefile b/tools/testing/selftests/Makefile index 3b2061d1c1a5..26140426c849 100644 --- a/tools/testing/selftests/Makefile +++ b/tools/testing/selftests/Makefile @@ -74,6 +74,7 @@ TARGETS += riscv TARGETS += rlimits TARGETS += rseq TARGETS += rtc +TARGETS += rust TARGETS += seccomp TARGETS += sgx TARGETS += sigaltstack diff --git a/tools/testing/selftests/rust/.gitignore b/tools/testing/selftests/rust/.gitignore new file mode 100644 index 000000000000..e3c5c04d1b19 --- /dev/null +++ b/tools/testing/selftests/rust/.gitignore @@ -0,0 +1 @@ +ktap_helpers.sh diff --git a/tools/testing/selftests/rust/Makefile b/tools/testing/selftests/rust/Makefile new file mode 100644 index 000000000000..ccaa50f35b5b --- /dev/null +++ b/tools/testing/selftests/rust/Makefile @@ -0,0 +1,8 @@
+TEST_PROGS += test_probe_samples.sh +TEST_GEN_FILES := ktap_helpers.sh
+include ../lib.mk
+$(OUTPUT)/ktap_helpers.sh:
- cp $(top_srcdir)/tools/testing/selftests/dt/ktap_helpers.sh $@
diff --git a/tools/testing/selftests/rust/test_probe_samples.sh b/tools/testing/selftests/rust/test_probe_samples.sh new file mode 100755 index 000000000000..a46550543f73 --- /dev/null +++ b/tools/testing/selftests/rust/test_probe_samples.sh @@ -0,0 +1,42 @@ +#!/bin/bash +# SPDX-License-Identifier: GPL-2.0 +# +# Copyright (c) 2023 Collabora Ltd +# +# This script tests whether the rust sample modules can +# be added and removed correctly. +#
+DIR="$(dirname "$(readlink -f "$0")")"
+source "${DIR}"/ktap_helpers.sh
+rust_sample_modules=("rust_minimal" "rust_print")
+KSFT_PASS=0 +KSFT_FAIL=1 +KSFT_SKIP=4
+ret="${KSFT_PASS}"
+ktap_print_header
+ktap_set_plan "${#rust_sample_modules[@]}"
+for sample in "${rust_sample_modules[@]}"; do
- if ! /sbin/modprobe -n -q "$sample"; then
ktap_test_skip "module $sample is not found in /lib/modules/$(uname -r)"
continue
- fi
- if /sbin/modprobe -q "$sample"; then
/sbin/modprobe -q -r "$sample"
ktap_test_pass "$sample"
- else
ret="${KSFT_FAIL}"
ktap_test_fail "$sample"
- fi
+done
+ktap_print_totals +exit "${ret}"
linux-kselftest-mirror@lists.linaro.org