mm/damon/test/core-kunit: add damon_apply_min_nr_regions() test

Add a kunit test for the functionality of damon_apply_min_nr_regions().

Link: https://lkml.kernel.org/r/20260228222831.7232-4-sj@kernel.org
Signed-off-by: SeongJae Park <sj@kernel.org>
Cc: Brendan Higgins <brendan.higgins@linux.dev>
Cc: David Gow <davidgow@google.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
This commit is contained in:
SeongJae Park
2026-02-28 14:28:27 -08:00
committed by Andrew Morton
parent 442d87c7db
commit ca6969e074

View File

@@ -1239,6 +1239,57 @@ static void damon_test_set_filters_default_reject(struct kunit *test)
damos_free_filter(target_filter);
}
static void damon_test_apply_min_nr_regions_for(struct kunit *test,
unsigned long sz_regions, unsigned long min_region_sz,
unsigned long min_nr_regions,
unsigned long max_region_sz_expect,
unsigned long nr_regions_expect)
{
struct damon_ctx *ctx;
struct damon_target *t;
struct damon_region *r;
unsigned long max_region_size;
ctx = damon_new_ctx();
if (!ctx)
kunit_skip(test, "ctx alloc fail\n");
t = damon_new_target();
if (!t) {
damon_destroy_ctx(ctx);
kunit_skip(test, "target alloc fail\n");
}
damon_add_target(ctx, t);
r = damon_new_region(0, sz_regions);
if (!r) {
damon_destroy_ctx(ctx);
kunit_skip(test, "region alloc fail\n");
}
damon_add_region(r, t);
ctx->min_region_sz = min_region_sz;
ctx->attrs.min_nr_regions = min_nr_regions;
max_region_size = damon_apply_min_nr_regions(ctx);
KUNIT_EXPECT_EQ(test, max_region_size, max_region_sz_expect);
KUNIT_EXPECT_EQ(test, damon_nr_regions(t), nr_regions_expect);
damon_destroy_ctx(ctx);
}
static void damon_test_apply_min_nr_regions(struct kunit *test)
{
/* common, expected setup */
damon_test_apply_min_nr_regions_for(test, 10, 1, 10, 1, 10);
/* no zero size limit */
damon_test_apply_min_nr_regions_for(test, 10, 1, 15, 1, 10);
/* max size should be aligned by min_region_sz */
damon_test_apply_min_nr_regions_for(test, 10, 2, 2, 6, 2);
/*
* when min_nr_regions and min_region_sz conflicts, min_region_sz wins.
*/
damon_test_apply_min_nr_regions_for(test, 10, 2, 10, 2, 5);
}
static struct kunit_case damon_test_cases[] = {
KUNIT_CASE(damon_test_target),
KUNIT_CASE(damon_test_regions),
@@ -1265,6 +1316,7 @@ static struct kunit_case damon_test_cases[] = {
KUNIT_CASE(damos_test_filter_out),
KUNIT_CASE(damon_test_feed_loop_next_input),
KUNIT_CASE(damon_test_set_filters_default_reject),
KUNIT_CASE(damon_test_apply_min_nr_regions),
{},
};