Re: [PATCH v5 4/5] lib/test: introduce cpumask KUnit test suite

From: Maíra Canal
Date: Sun Jul 31 2022 - 18:12:37 EST




On 7/31/22 12:42, Sander Vanheule wrote:
> On Sun, 2022-07-31 at 12:23 -0300, Maíra Canal wrote:
>> Hi Sander
>>
>> On 7/29/22 04:01, Sander Vanheule wrote:
>>> Add a basic suite of tests for cpumask, providing some tests for empty and
>>> completely filled cpumasks.
>>>
>>> Signed-off-by: Sander Vanheule <sander@xxxxxxxxxxxxx>
>>> Reviewed-by: Andy Shevchenko <andriy.shevchenko@xxxxxxxxxxxxxxx>
>>> Suggested-by: Yury Norov <yury.norov@xxxxxxxxx>
>>> Cc: Borislav Petkov <bp@xxxxxxxxx>
>>> Cc: Dave Hansen <dave.hansen@xxxxxxxxxxxxxxx>
>>> Cc: Greg Kroah-Hartman <gregkh@xxxxxxxxxxxxxxxxxxx>
>>> Cc: "H. Peter Anvin" <hpa@xxxxxxxxx>
>>> Cc: Ingo Molnar <mingo@xxxxxxxxxx>
>>> Cc: Marco Elver <elver@xxxxxxxxxx>
>>> Cc: Peter Zijlstra <peterz@xxxxxxxxxxxxx>
>>> Cc: Thomas Gleixner <tglx@xxxxxxxxxxxxx>
>>> Cc: Valentin Schneider <vschneid@xxxxxxxxxx>
>>> Cc: Brendan Higgins <brendanhiggins@xxxxxxxxxx>
>>> Cc: David Gow <davidgow@xxxxxxxxxx>
>>> Cc: Maíra Canal <mairacanal@xxxxxxxxxx>
>>> ---
>>> Changes since v4:
>>> - Belated addition of Yury's Suggested-by:
>>> - Follow KUnit style more closely
>>> - Drop full check on cpu_possible_mask
>>> - Update last check on cpu_possible_mask
>>> - Log masks when starting test
>>> - Update commit message
>>>  
>>> Changes since v3:
>>> - Test for_each_cpu*() over empty mask and cpu_possible_mask
>>> - Add Andy's Reviewed-by
>>> - Use num_{online,present,possible}_cpus() for builtin masks
>>> - Guard against CPU hotplugging during test for dynamic builtin CPU masks
>>>  
>>> Changes since v2:
>>> - Rework for_each_* test macros, as suggested by Yury
>>>
>>> Changes since v1:
>>> - New patch
>>>
>>>  lib/Kconfig.debug  |  12 ++++
>>>  lib/Makefile       |   1 +
>>>  lib/cpumask_test.c | 147 +++++++++++++++++++++++++++++++++++++++++++++
>>>  3 files changed, 160 insertions(+)
>>>  create mode 100644 lib/cpumask_test.c
>>>
>>> diff --git a/lib/Kconfig.debug b/lib/Kconfig.debug
>>> index 2e24db4bff19..e85e74646178 100644
>>> --- a/lib/Kconfig.debug
>>> +++ b/lib/Kconfig.debug
>>> @@ -2021,6 +2021,18 @@ config LKDTM
>>>         Documentation on how to use the module can be found in
>>>         Documentation/fault-injection/provoke-crashes.rst
>>>  
>>> +config CPUMASK_KUNIT_TEST
>>> +       tristate "KUnit test for cpumask" if !KUNIT_ALL_TESTS
>>> +       depends on KUNIT
>>> +       default KUNIT_ALL_TESTS
>>> +       help
>>> +         Enable to turn on cpumask tests, running at boot or module load
>>> time.
>>> +
>>> +         For more information on KUnit and unit tests in general, please
>>> refer
>>> +         to the KUnit documentation in Documentation/dev-tools/kunit/.
>>> +
>>> +         If unsure, say N.
>>> +
>>>  config TEST_LIST_SORT
>>>         tristate "Linked list sorting test" if !KUNIT_ALL_TESTS
>>>         depends on KUNIT
>>> diff --git a/lib/Makefile b/lib/Makefile
>>> index bcc7e8ea0cde..9f9db1376538 100644
>>> --- a/lib/Makefile
>>> +++ b/lib/Makefile
>>> @@ -59,6 +59,7 @@ obj-$(CONFIG_TEST_BPF) += test_bpf.o
>>>  obj-$(CONFIG_TEST_FIRMWARE) += test_firmware.o
>>>  obj-$(CONFIG_TEST_BITOPS) += test_bitops.o
>>>  CFLAGS_test_bitops.o += -Werror
>>> +obj-$(CONFIG_CPUMASK_KUNIT_TEST) += cpumask_test.o
>>>  obj-$(CONFIG_TEST_SYSCTL) += test_sysctl.o
>>>  obj-$(CONFIG_TEST_SIPHASH) += test_siphash.o
>>>  obj-$(CONFIG_HASH_KUNIT_TEST) += test_hash.o
>>> diff --git a/lib/cpumask_test.c b/lib/cpumask_test.c
>>> new file mode 100644
>>> index 000000000000..0f8059a5e93b
>>> --- /dev/null
>>> +++ b/lib/cpumask_test.c
>>
>> In order to make the tests at lib/ with more compliant naming, it would
>> make more sense to name it test_cpumask.c.
>
> That's what I had originally, exactly because I copied the naming from other
> files in lib/. That didn't match the style guide [1] which proposes the _test.c
> or _kunit.c suffix.

My mistake!

>
> Most files in lib/ use the test_ prefix (45), but some use the _test.c suffix
> (4), or _kunit.c suffix (6). Of the "test_" ones, only 8 are actually KUnit test
> suites. I personally think the style guide makes a good argument to use a
> suffix, as that clearly places the test suite next to the relevant file in an
> alphabetic listing.
>
> Based on the above, would you agree with using "cpumask_kunit.c" as the
> filename? That distinguishes it from the non-KUnit test files, and follows the
> style guide.

I believe this would be the best option as well, as there is many
different types of tests in this folder. Thank you for noticing this!

Best Regards,
- Maíra Canal

>
> [1] https://docs.kernel.org/dev-tools/kunit/style.html#test-file-and-module-names
>
>>
>> Thank you for the respin to the series! All tests are passing now.
>>
>> Tested-by: Maíra Canal <mairacanal@xxxxxxxxxx>
>
> Thank you for testing!
>
> Best,
> Sander