Add new basic kselftest that checks if the available rust sample modules
can be added and removed correctly.
Signed-off-by: Laura Nao <[email protected]>
---
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
On Fri, 15 Dec 2023 at 14:25, Laura Nao <[email protected]> wrote:
>
> Add new basic kselftest that checks if the available rust sample modules
> can be added and removed correctly.
>
> Signed-off-by: Laura Nao <[email protected]>
> ---
> 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 <[email protected]>
On Fri, Dec 15, 2023 at 2:21 PM Laura Nao <[email protected]> wrote:
>
> Add new basic kselftest that checks if the available rust sample modules
> can be added and removed correctly.
>
> Signed-off-by: Laura Nao <[email protected]>
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/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 <[email protected]>
Reviewed-by: Muhammad Usama Anjum <[email protected]>
Tested-by: Muhammad Usama Anjum <[email protected]>
> ---
> 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}"
--
BR,
Muhammad Usama Anjum
On 12/21/23 20:46, Miguel Ojeda wrote:
> On Fri, Dec 15, 2023 at 2:21 PM Laura Nao <[email protected]>
> wrote:
>>
>> Add new basic kselftest that checks if the available rust sample
>> modules
>> can be added and removed correctly.
>>
>> Signed-off-by: Laura Nao <[email protected]>
>
> 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/[email protected]/T/#u
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/[email protected]/T/#u
>
> 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/[email protected]/T/#u
Best,
Laura