[2/2] selftests: lib: prime_numbers: update presence check

Message ID 1497879872-11137-1-git-send-email-sumit.semwal@linaro.org
State New
Headers show
Series
  • Untitled series #2484
Related show

Commit Message

Sumit Semwal June 19, 2017, 1:44 p.m.
The test for prime numbers doesn't differentiate between missing
prime_numbers.ko and failure in prime_numbers.ko.

Update it to check for presence of the file itself to skip, therefore
correctly exercising the test failure case.

Signed-off-by: Sumit Semwal <sumit.semwal@linaro.org>

---
 tools/testing/selftests/lib/prime_numbers.sh | 5 +++--
 1 file changed, 3 insertions(+), 2 deletions(-)

-- 
2.7.4

Comments

Chris Wilson June 19, 2017, 1:51 p.m. | #1
Quoting Sumit Semwal (2017-06-19 14:44:32)
> The test for prime numbers doesn't differentiate between missing

> prime_numbers.ko and failure in prime_numbers.ko.

> 

> Update it to check for presence of the file itself to skip, therefore

> correctly exercising the test failure case.


modprobe -r shouldn't be executing the module? But you still need to
unload the module before you can load it with the selftest module
parameters. If you can't unload the module due to an earlier failure,
you cannot discern whether or not the module itself is at fault, so
still want to SKIP.
-Chris
Sumit Semwal June 19, 2017, 2:46 p.m. | #2
Hi Chris,

On 19 June 2017 at 19:21, Chris Wilson <chris@chris-wilson.co.uk> wrote:
> Quoting Sumit Semwal (2017-06-19 14:44:32)

>> The test for prime numbers doesn't differentiate between missing

>> prime_numbers.ko and failure in prime_numbers.ko.

>>

>> Update it to check for presence of the file itself to skip, therefore

>> correctly exercising the test failure case.

>

> modprobe -r shouldn't be executing the module? But you still need to

> unload the module before you can load it with the selftest module

> parameters. If you can't unload the module due to an earlier failure,

> you cannot discern whether or not the module itself is at fault, so

> still want to SKIP.


My bad here: I missed the '-r' in the first modprobe.

I am wondering if 'modprobe -q -n' won't suffice, as it is a dry-run
only, but will still search for the module? Unless of course, there's
something specific about '-q -r' that seems better still?

Shuah,
Could you please disregard this patch, and the other patch I sent:
will send out a new version soon.

> -Chris


Best,
Sumit.
Sumit Semwal June 19, 2017, 3:11 p.m. | #3
On 19 June 2017 at 20:27, Chris Wilson <chris@chris-wilson.co.uk> wrote:
> Quoting Sumit Semwal (2017-06-19 15:46:20)

>> Hi Chris,

>>

>> On 19 June 2017 at 19:21, Chris Wilson <chris@chris-wilson.co.uk> wrote:

>> > Quoting Sumit Semwal (2017-06-19 14:44:32)

>> >> The test for prime numbers doesn't differentiate between missing

>> >> prime_numbers.ko and failure in prime_numbers.ko.

>> >>

>> >> Update it to check for presence of the file itself to skip, therefore

>> >> correctly exercising the test failure case.

>> >

>> > modprobe -r shouldn't be executing the module? But you still need to

>> > unload the module before you can load it with the selftest module

>> > parameters. If you can't unload the module due to an earlier failure,

>> > you cannot discern whether or not the module itself is at fault, so

>> > still want to SKIP.

>>

>> My bad here: I missed the '-r' in the first modprobe.

>>

>> I am wondering if 'modprobe -q -n' won't suffice, as it is a dry-run

>> only, but will still search for the module? Unless of course, there's

>> something specific about '-q -r' that seems better still?

>

> I think there are two things to be tested here, both causing a SKIP.

>

>  - If the module doesn't exist at all; modprobe -q -n seems sensible for

>    querying its existence.

>

>  - If the module cannot be [un]loaded; for which I was using the

>    modprobe -q -r. If we can't unload the module, then we can't test :)


:) Right; then the question is, for prime_numbers.ko, do we need to
differentiate between these 2 SKIPs?

The unloading of the prime_numbers module before running the test is
required since it isn't a standalone test module - unlike the
test_bitmap and test_printf ones.

So then, for prime_numbers: if distinguishing between the two cases
you mentioned above isn't important, we can just keep your original
code. If it is important to distinguish, I can add the -q -n test to
query existence separately.

For test_bitmap and test_printf tests, I think I will just go ahead
with -q -n itself, since we can assume that the test modules will only
be loaded/unloaded via these tests I guess?

>

> -Chris


Best,
Sumit.
Sumit Semwal June 20, 2017, 1:08 p.m. | #4
Hi Chris,

On 20 June 2017 at 17:17, Chris Wilson <chris@chris-wilson.co.uk> wrote:
> Quoting Sumit Semwal (2017-06-19 16:11:33)

>> On 19 June 2017 at 20:27, Chris Wilson <chris@chris-wilson.co.uk> wrote:

>> > Quoting Sumit Semwal (2017-06-19 15:46:20)

>> >> Hi Chris,

>> >>

>> >> On 19 June 2017 at 19:21, Chris Wilson <chris@chris-wilson.co.uk> wrote:

>> >> > Quoting Sumit Semwal (2017-06-19 14:44:32)

>> >> >> The test for prime numbers doesn't differentiate between missing

>> >> >> prime_numbers.ko and failure in prime_numbers.ko.

>> >> >>

>> >> >> Update it to check for presence of the file itself to skip, therefore

>> >> >> correctly exercising the test failure case.

>> >> >

>> >> > modprobe -r shouldn't be executing the module? But you still need to

>> >> > unload the module before you can load it with the selftest module

>> >> > parameters. If you can't unload the module due to an earlier failure,

>> >> > you cannot discern whether or not the module itself is at fault, so

>> >> > still want to SKIP.

>> >>

>> >> My bad here: I missed the '-r' in the first modprobe.

>> >>

>> >> I am wondering if 'modprobe -q -n' won't suffice, as it is a dry-run

>> >> only, but will still search for the module? Unless of course, there's

>> >> something specific about '-q -r' that seems better still?

>> >

>> > I think there are two things to be tested here, both causing a SKIP.

>> >

>> >  - If the module doesn't exist at all; modprobe -q -n seems sensible for

>> >    querying its existence.

>> >

>> >  - If the module cannot be [un]loaded; for which I was using the

>> >    modprobe -q -r. If we can't unload the module, then we can't test :)

>>

>> :) Right; then the question is, for prime_numbers.ko, do we need to

>> differentiate between these 2 SKIPs?

>

> I don't see a downside to being verbose here. It both helps explain the

> test and alert the user about the remedy if desired.

>

>> The unloading of the prime_numbers module before running the test is

>> required since it isn't a standalone test module - unlike the

>> test_bitmap and test_printf ones.

>>

>> So then, for prime_numbers: if distinguishing between the two cases

>> you mentioned above isn't important, we can just keep your original

>> code. If it is important to distinguish, I can add the -q -n test to

>> query existence separately.

>>

>> For test_bitmap and test_printf tests, I think I will just go ahead

>> with -q -n itself, since we can assume that the test modules will only

>> be loaded/unloaded via these tests I guess?

>

> Yes. For that style of standalone test module, if the test module is still

> around it is probably for a reason :)


:) These test cases seem to try to load the module (and hence run the
tests), and then try to unload the module right after, so I think we
should be ok there.

> -Chris

Patch

diff --git a/tools/testing/selftests/lib/prime_numbers.sh b/tools/testing/selftests/lib/prime_numbers.sh
index da4cbcd766f5..492f0dcdf088 100755
--- a/tools/testing/selftests/lib/prime_numbers.sh
+++ b/tools/testing/selftests/lib/prime_numbers.sh
@@ -1,8 +1,9 @@ 
 #!/bin/sh
 # Checks fast/slow prime_number generation for inconsistencies
 
-if ! /sbin/modprobe -q -r prime_numbers; then
-	echo "prime_numbers: [SKIP]"
+if ! find /lib/modules/$(uname -r) -type f -name prime_numbers.ko | grep -q .;
+then
+	echo "prime_numbers: prime_numbers.ko not found: [SKIP]"
 	exit 77
 fi