Re: [PATCH] mm/damon/tests/core-kunit: improve nr_samples_per_aggr test isolation

From: SJ Park

Date: Tue Sep 08 2026 - 10:04:51 EST


Hi Kunwu,

On Tue, 8 Sep 2026 14:36:35 +0800 Kunwu Chan <kunwu.chan@xxxxxxxxx> wrote:

> The damon_nr_samples_per_aggr() test sets both intervals to zero,
> which exercises two different fallback paths at once.
>
> Use separate compound initializers for each case so that each case
> tests one fallback path independently. Also make the overflow case
> use an explicit non-zero sample interval so that it does not depend
> on the zero sample interval fallback.

Thank you for sharing this patch!

>
> Signed-off-by: Kunwu Chan <kunwu.chan@xxxxxxxxx>
> ---
> mm/damon/tests/core-kunit.h | 19 +++++++++++++++----
> 1 file changed, 15 insertions(+), 4 deletions(-)
>
> diff --git a/mm/damon/tests/core-kunit.h b/mm/damon/tests/core-kunit.h
> index c01e6a75cad..ff23208c181 100644
> --- a/mm/damon/tests/core-kunit.h
> +++ b/mm/damon/tests/core-kunit.h
> @@ -627,12 +627,20 @@ static void damon_test_set_regions(struct kunit *test)
>
> static void damon_test_nr_samples_per_aggr(struct kunit *test)
> {
> - struct damon_attrs attrs = {
> + struct damon_attrs attrs;
> +
> + /* Zero sample interval is treated as one. */
> + attrs = (struct damon_attrs){
> .sample_interval = 0,
> - .aggr_interval = 0,
> + .aggr_interval = 5000,
> };
> + KUNIT_EXPECT_EQ(test, damon_nr_samples_per_aggr(&attrs), 5000);

Thank you for adding this test case.

>
> - /* Zero aggregation interval doesn't cause division by zero */
> + /* Zero samples per aggregation is treated as one. */
> + attrs = (struct damon_attrs){
> + .sample_interval = 5000,
> + .aggr_interval = 0,
> + };
> KUNIT_EXPECT_EQ(test, damon_nr_samples_per_aggr(&attrs), 1);

But damon_set_attrs() disallows sample intervals that are larger than the
aggregation intervals. Hence this setup is somewhat unrealistic. Should we
set sample_interval zero?

>
> /*
> @@ -640,7 +648,10 @@ static void damon_test_nr_samples_per_aggr(struct kunit *test)
> * overflow
> */
> if (ULONG_MAX > UINT_MAX) {
> - attrs.aggr_interval = (unsigned long)UINT_MAX + 1;
> + attrs = (struct damon_attrs){
> + .sample_interval = 1,
> + .aggr_interval = (unsigned long)UINT_MAX + 1,
> + };
> KUNIT_EXPECT_EQ(test, damon_nr_samples_per_aggr(&attrs),
> UINT_MAX);
> }
>
> base-commit: d118502628f8b673be9023db8bdf878f64a7ed45
> --
> 2.43.0


Thanks,
SJ