Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

mm/damon/tests/core-kunit: add damon_commit_target_regions() test

Add a new test for damon_commit_target_regions().

Link: https://lkml.kernel.org/r/20251111184415.141757-12-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>

authored by

SeongJae Park and committed by
Andrew Morton
603f67eb 299a88f6

+65
+65
mm/damon/tests/core-kunit.h
··· 964 964 }); 965 965 } 966 966 967 + static struct damon_target *damon_test_help_setup_target( 968 + unsigned long region_start_end[][2], int nr_regions) 969 + { 970 + struct damon_target *t; 971 + struct damon_region *r; 972 + int i; 973 + 974 + t = damon_new_target(); 975 + if (!t) 976 + return NULL; 977 + for (i = 0; i < nr_regions; i++) { 978 + r = damon_new_region(region_start_end[i][0], 979 + region_start_end[i][1]); 980 + if (!r) { 981 + damon_free_target(t); 982 + return NULL; 983 + } 984 + damon_add_region(r, t); 985 + } 986 + return t; 987 + } 988 + 989 + static void damon_test_commit_target_regions_for(struct kunit *test, 990 + unsigned long dst_start_end[][2], int nr_dst_regions, 991 + unsigned long src_start_end[][2], int nr_src_regions, 992 + unsigned long expect_start_end[][2], int nr_expect_regions) 993 + { 994 + struct damon_target *dst_target, *src_target; 995 + struct damon_region *r; 996 + int i; 997 + 998 + dst_target = damon_test_help_setup_target(dst_start_end, nr_dst_regions); 999 + if (!dst_target) 1000 + kunit_skip(test, "dst target setup fail"); 1001 + src_target = damon_test_help_setup_target(src_start_end, nr_src_regions); 1002 + if (!src_target) { 1003 + damon_free_target(dst_target); 1004 + kunit_skip(test, "src target setup fail"); 1005 + } 1006 + damon_commit_target_regions(dst_target, src_target, 1); 1007 + i = 0; 1008 + damon_for_each_region(r, dst_target) { 1009 + KUNIT_EXPECT_EQ(test, r->ar.start, expect_start_end[i][0]); 1010 + KUNIT_EXPECT_EQ(test, r->ar.end, expect_start_end[i][1]); 1011 + i++; 1012 + } 1013 + KUNIT_EXPECT_EQ(test, damon_nr_regions(dst_target), nr_expect_regions); 1014 + KUNIT_EXPECT_EQ(test, i, nr_expect_regions); 1015 + damon_free_target(dst_target); 1016 + damon_free_target(src_target); 1017 + } 1018 + 1019 + static void damon_test_commit_target_regions(struct kunit *test) 1020 + { 1021 + damon_test_commit_target_regions_for(test, 1022 + (unsigned long[][2]) {{3, 8}, {8, 10}}, 2, 1023 + (unsigned long[][2]) {{4, 6}}, 1, 1024 + (unsigned long[][2]) {{4, 6}}, 1); 1025 + damon_test_commit_target_regions_for(test, 1026 + (unsigned long[][2]) {{3, 8}, {8, 10}}, 2, 1027 + (unsigned long[][2]) {}, 0, 1028 + (unsigned long[][2]) {{3, 8}, {8, 10}}, 2); 1029 + } 1030 + 967 1031 static void damos_test_filter_out(struct kunit *test) 968 1032 { 969 1033 struct damon_target *t; ··· 1234 1170 KUNIT_CASE(damos_test_commit_dests), 1235 1171 KUNIT_CASE(damos_test_commit_filter), 1236 1172 KUNIT_CASE(damos_test_commit), 1173 + KUNIT_CASE(damon_test_commit_target_regions), 1237 1174 KUNIT_CASE(damos_test_filter_out), 1238 1175 KUNIT_CASE(damon_test_feed_loop_next_input), 1239 1176 KUNIT_CASE(damon_test_set_filters_default_reject),