All of lore.kernel.org
 help / color / mirror / Atom feed
From: Shuah Khan <skhan@linuxfoundation.org>
To: Luis Felipe Hernandez <luis.hernandez093@gmail.com>,
	brendan.higgins@linux.dev, davidgow@google.com,
	Andrew Morton <akpm@linux-foundation.org>
Cc: linux-kselftest@vger.kernel.org, kunit-dev@googlegroups.com,
	ricardo@marliere.net,
	linux-kernel-mentees@lists.linuxfoundation.org,
	andriy.shevchenko@linux.intel.com,
	Shuah Khan <skhan@linuxfoundation.org>
Subject: Re: [PATCH v3] lib/math: Add int_sqrt test suite
Date: Thu, 31 Oct 2024 11:50:16 -0600	[thread overview]
Message-ID: <c213dbcb-35de-4afd-9d4b-f42f6a9e3de6@linuxfoundation.org> (raw)
In-Reply-To: <20241030134355.14294-1-luis.hernandez093@gmail.com>

On 10/30/24 07:43, Luis Felipe Hernandez wrote:
> Adds test suite for integer based square root function.
> 
> The test suite is designed to verify the correctness of the int_sqrt()
> math library function.
> 
> Signed-off-by: Luis Felipe Hernandez <luis.hernandez093@gmail.com>
> ---
> Changes in v2
>    - Add new line at the end of int_sqrt_kunit.c
>    - Add explicit header includes for MODULE_* macros, strscpy, and ULONG_MAX
> 
> Changes in v3
>    - Remove unnecesary new line after Kconfig entry for INT_SQRT_KUNIT_TEST
>    - Correct int_sqrt instances with int_sqrt() in commit message and kconfig
> entry desc
>    - Fix limits.h header include path

Adding Andrew to the thread. I think this depends on the other lib kunit
content that is already in next.

> ---
>   lib/Kconfig.debug               | 15 ++++++++++
>   lib/math/Makefile               |  1 +
>   lib/math/tests/Makefile         |  1 +
>   lib/math/tests/int_sqrt_kunit.c | 51 +++++++++++++++++++++++++++++++++
>   4 files changed, 68 insertions(+)
>   create mode 100644 lib/math/tests/int_sqrt_kunit.c
> 
> diff --git a/lib/Kconfig.debug b/lib/Kconfig.debug
> index 7312ae7c3cc5..c83f5dc9bb48 100644
> --- a/lib/Kconfig.debug
> +++ b/lib/Kconfig.debug
> @@ -2993,6 +2993,21 @@ config TEST_OBJPOOL
>   
>   	  If unsure, say N.
>   
> +config INT_SQRT_KUNIT_TEST
> +	tristate "Integer square root test test" if !KUNIT_ALL_TESTS
> +	depends on KUNIT
> +	default KUNIT_ALL_TESTS
> +	help
> +	  This option enables the KUnit test suite for the int_sqrt() function,
> +	  which performs square root calculation. The test suite checks
> +	  various scenarios, including edge cases, to ensure correctness.
> +
> +	  Enabling this option will include tests that check various scenarios
> +	  and edge cases to ensure the accuracy and reliability of the square root
> +	  function.
> +
> +	  If unsure, say N
> +
>   endif # RUNTIME_TESTING_MENU
>   
>   config ARCH_USE_MEMTEST
> diff --git a/lib/math/Makefile b/lib/math/Makefile
> index 3ef11305f8d2..25bcb968b369 100644
> --- a/lib/math/Makefile
> +++ b/lib/math/Makefile
> @@ -9,3 +9,4 @@ obj-$(CONFIG_INT_POW_TEST)  += tests/int_pow_kunit.o
>   obj-$(CONFIG_TEST_DIV64)	+= test_div64.o
>   obj-$(CONFIG_TEST_MULDIV64)	+= test_mul_u64_u64_div_u64.o
>   obj-$(CONFIG_RATIONAL_KUNIT_TEST) += rational-test.o
> +obj-y  += tests/
> diff --git a/lib/math/tests/Makefile b/lib/math/tests/Makefile
> index 6a169123320a..e1a79f093b2d 100644
> --- a/lib/math/tests/Makefile
> +++ b/lib/math/tests/Makefile
> @@ -1,3 +1,4 @@
>   # SPDX-License-Identifier: GPL-2.0-only
>   
>   obj-$(CONFIG_INT_POW_TEST) += int_pow_kunit.o
> +obj-$(CONFIG_INT_SQRT_KUNIT_TEST) += int_sqrt_kunit.o
> diff --git a/lib/math/tests/int_sqrt_kunit.c b/lib/math/tests/int_sqrt_kunit.c
> new file mode 100644
> index 000000000000..3590142d2012
> --- /dev/null
> +++ b/lib/math/tests/int_sqrt_kunit.c
> @@ -0,0 +1,51 @@
> +// SPDX-License-Identifier: GPL-2.0-only
> +
> +#include <kunit/test.h>
> +#include <linux/limits.h>
> +#include <linux/math.h>
> +#include <linux/module.h>
> +#include <linux/string.h>
> +
> +struct test_case_params {
> +	unsigned long x;
> +	unsigned long expected_result;
> +	const char *name;
> +};
> +
> +static const struct test_case_params params[] = {
> +	{ 0, 0, "edge-case: square root of 0" },
> +	{ 4, 2, "perfect square: square root of 4" },
> +	{ 81, 9, "perfect square: square root of 9" },
> +	{ 2, 1, "non-perfect square: square root of 2" },
> +	{ 5, 2, "non-perfect square: square root of 5"},
> +	{ ULONG_MAX, 4294967295, "large input"},
> +};
> +
> +static void get_desc(const struct test_case_params *tc, char *desc)
> +{
> +	strscpy(desc, tc->name, KUNIT_PARAM_DESC_SIZE);
> +}
> +
> +KUNIT_ARRAY_PARAM(int_sqrt, params, get_desc);
> +
> +static void int_sqrt_test(struct kunit *test)
> +{
> +	const struct test_case_params *tc = (const struct test_case_params *)test->param_value;
> +
> +	KUNIT_EXPECT_EQ(test, tc->expected_result, int_sqrt(tc->x));
> +}
> +
> +static struct kunit_case math_int_sqrt_test_cases[] = {
> +	KUNIT_CASE_PARAM(int_sqrt_test, int_sqrt_gen_params),
> +	{}
> +};
> +
> +static struct kunit_suite int_sqrt_test_suite = {
> +	.name = "math-int_sqrt",
> +	.test_cases = math_int_sqrt_test_cases,
> +};
> +
> +kunit_test_suites(&int_sqrt_test_suite);
> +
> +MODULE_DESCRIPTION("math.int_sqrt KUnit test suite");
> +MODULE_LICENSE("GPL");

Acked-by: Shuah Khan <skhan@linuxfoundation.org>

thanks,
-- Shuah

  reply	other threads:[~2024-10-31 17:50 UTC|newest]

Thread overview: 8+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2024-10-30 13:43 [PATCH v3] lib/math: Add int_sqrt test suite Luis Felipe Hernandez
2024-10-31 17:50 ` Shuah Khan [this message]
2024-11-01  0:39   ` Andrew Morton
2024-11-01  2:25     ` Shuah Khan
2024-11-01  2:28       ` Andrew Morton
2024-11-01  4:27       ` Andrew Morton
2024-11-01 21:01     ` Luis Felipe Hernandez
2024-11-11  3:39 ` Luis Felipe Hernandez

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=c213dbcb-35de-4afd-9d4b-f42f6a9e3de6@linuxfoundation.org \
    --to=skhan@linuxfoundation.org \
    --cc=akpm@linux-foundation.org \
    --cc=andriy.shevchenko@linux.intel.com \
    --cc=brendan.higgins@linux.dev \
    --cc=davidgow@google.com \
    --cc=kunit-dev@googlegroups.com \
    --cc=linux-kernel-mentees@lists.linuxfoundation.org \
    --cc=linux-kselftest@vger.kernel.org \
    --cc=luis.hernandez093@gmail.com \
    --cc=ricardo@marliere.net \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.