[PATCH v2 4/5] mm/damon/tests/core-kunit: add test cases for multiple regions in damon_test_split_regions_of()

Shu Anzai
2025-12-24T04:22:25Z

Extend damon_test_split_regions_of() to verify that it correctly handles
multiple regions with various 'min_sz_region'.

Signed-off-by: Shu Anzai <shu17az@gmail.com>
---
mm/damon/tests/core-kunit.h | 21 +++++++++++++++++++++
1 file changed, 21 insertions(+)

diff --git a/mm/damon/tests/core-kunit.h b/mm/damon/tests/core-kunit.h
index 2eb6f41635a8..36622a2c11f1 100644
--- a/mm/damon/tests/core-kunit.h
+++ b/mm/damon/tests/core-kunit.h
@@ -275,6 +275,9 @@ static void damon_test_split_regions_of(struct kunit *test)
{
struct damon_target *t;
struct damon_region *r;
+ unsigned long sa[] = {0, 300, 500};
+ unsigned long ea[] = {220, 400, 700};
+ int i;

t = damon_new_target();
if (!t)
@@ -301,6 +304,24 @@ static void damon_test_split_regions_of(struct kunit *test)
damon_split_regions_of(t, 4, 1);
KUNIT_EXPECT_LE(test, damon_nr_regions(t), 4u);
damon_free_target(t);
+
+ t = damon_new_target();
+ if (!t)
+ kunit_skip(test, "third target alloc fail");
+ for (i = 0; i < ARRAY_SIZE(sa); i++) {
+ r = damon_new_region(sa[i], ea[i]);
+ if (!r) {
+ damon_free_target(t);
+ kunit_skip(test, "region alloc fail");
+ }
+ damon_add_region(r, t);
+ }
+ damon_split_regions_of(t, 4, 5);
+ KUNIT_EXPECT_LE(test, damon_nr_regions(t), 12u);
+ damon_for_each_region(r, t) {
+ KUNIT_EXPECT_GE(test, damon_sz_region(r) % 5ul, 0ul);
+ }
+ damon_free_target(t);
}

static void damon_test_ops_registration(struct kunit *test)
--
2.43.0