Add kunit test to ensure damon_commit_filter() updates destination
filter as expected for valid inputs.

Signed-off-by: SJ Park <[email protected]>
---
 mm/damon/tests/core-kunit.h | 40 +++++++++++++++++++++++++++++++++++++
 1 file changed, 40 insertions(+)

diff --git a/mm/damon/tests/core-kunit.h b/mm/damon/tests/core-kunit.h
index c7bda8aadef3f..ff864402e9c75 100644
--- a/mm/damon/tests/core-kunit.h
+++ b/mm/damon/tests/core-kunit.h
@@ -1354,6 +1354,45 @@ static void damon_test_commit_target_regions(struct 
kunit *test)
                        (unsigned long[][2]) {{3, 8}, {8, 10}}, 2);
 }
 
+static void damon_test_commit_filter_for(struct kunit *test,
+               struct damon_filter *dst, struct damon_filter *src)
+{
+       damon_commit_filter(dst, src);
+       KUNIT_EXPECT_EQ(test, dst->type, src->type);
+       KUNIT_EXPECT_EQ(test, dst->matching, src->matching);
+       KUNIT_EXPECT_EQ(test, dst->allow, src->allow);
+       switch (src->type) {
+       case DAMOS_FILTER_TYPE_MEMCG:
+               KUNIT_EXPECT_EQ(test, dst->memcg_id, src->memcg_id);
+               break;
+       default:
+               break;
+       }
+}
+
+static void damon_test_commit_filter(struct kunit *test)
+{
+       struct damon_filter dst = {
+               .type = DAMON_FILTER_TYPE_ANON,
+               .matching = false,
+               .allow = false,
+       };
+
+       damon_test_commit_filter_for(test, &dst,
+                       &(struct damon_filter){
+                       .type = DAMON_FILTER_TYPE_ANON,
+                       .matching = true,
+                       .allow = true,
+                       });
+       damon_test_commit_filter_for(test, &dst,
+                       &(struct damon_filter){
+                       .type = DAMON_FILTER_TYPE_MEMCG,
+                       .matching = false,
+                       .allow = false,
+                       .memcg_id = 123,
+                       });
+}
+
 static void damon_test_commit_ctx(struct kunit *test)
 {
        struct damon_ctx *src, *dst;
@@ -1705,6 +1744,7 @@ static struct kunit_case damon_test_cases[] = {
        KUNIT_CASE(damos_test_commit_pageout),
        KUNIT_CASE(damos_test_commit_migrate_hot),
        KUNIT_CASE(damon_test_commit_target_regions),
+       KUNIT_CASE(damon_test_commit_filter),
        KUNIT_CASE(damon_test_commit_ctx),
        KUNIT_CASE(damos_test_filter_out),
        KUNIT_CASE(damon_test_feed_loop_next_input),
-- 
2.47.3

Reply via email to