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

Configure Feed

Select the types of activity you want to include in your feed.

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

Add a new unit test for damos_commit().

Link: https://lkml.kernel.org/r/20251111184415.141757-11-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
299a88f6 eec573b8

+92
+92
mm/damon/tests/core-kunit.h
··· 873 873 }); 874 874 } 875 875 876 + static void damos_test_help_initailize_scheme(struct damos *scheme) 877 + { 878 + INIT_LIST_HEAD(&scheme->quota.goals); 879 + INIT_LIST_HEAD(&scheme->filters); 880 + INIT_LIST_HEAD(&scheme->ops_filters); 881 + } 882 + 883 + static void damos_test_commit_for(struct kunit *test, struct damos *dst, 884 + struct damos *src) 885 + { 886 + int err; 887 + 888 + damos_test_help_initailize_scheme(dst); 889 + damos_test_help_initailize_scheme(src); 890 + 891 + err = damos_commit(dst, src); 892 + if (err) 893 + kunit_skip(test, "damos_commit fail"); 894 + 895 + KUNIT_EXPECT_EQ(test, dst->pattern.min_sz_region, 896 + src->pattern.min_sz_region); 897 + KUNIT_EXPECT_EQ(test, dst->pattern.max_sz_region, 898 + src->pattern.max_sz_region); 899 + KUNIT_EXPECT_EQ(test, dst->pattern.min_nr_accesses, 900 + src->pattern.min_nr_accesses); 901 + KUNIT_EXPECT_EQ(test, dst->pattern.max_nr_accesses, 902 + src->pattern.max_nr_accesses); 903 + KUNIT_EXPECT_EQ(test, dst->pattern.min_age_region, 904 + src->pattern.min_age_region); 905 + KUNIT_EXPECT_EQ(test, dst->pattern.max_age_region, 906 + src->pattern.max_age_region); 907 + 908 + KUNIT_EXPECT_EQ(test, dst->action, src->action); 909 + KUNIT_EXPECT_EQ(test, dst->apply_interval_us, src->apply_interval_us); 910 + 911 + KUNIT_EXPECT_EQ(test, dst->wmarks.metric, src->wmarks.metric); 912 + KUNIT_EXPECT_EQ(test, dst->wmarks.interval, src->wmarks.interval); 913 + KUNIT_EXPECT_EQ(test, dst->wmarks.high, src->wmarks.high); 914 + KUNIT_EXPECT_EQ(test, dst->wmarks.mid, src->wmarks.mid); 915 + KUNIT_EXPECT_EQ(test, dst->wmarks.low, src->wmarks.low); 916 + 917 + switch (src->action) { 918 + case DAMOS_MIGRATE_COLD: 919 + case DAMOS_MIGRATE_HOT: 920 + KUNIT_EXPECT_EQ(test, dst->target_nid, src->target_nid); 921 + break; 922 + default: 923 + break; 924 + } 925 + } 926 + 927 + static void damos_test_commit(struct kunit *test) 928 + { 929 + damos_test_commit_for(test, 930 + &(struct damos){ 931 + .pattern = (struct damos_access_pattern){ 932 + 1, 2, 3, 4, 5, 6}, 933 + .action = DAMOS_PAGEOUT, 934 + .apply_interval_us = 1000000, 935 + .wmarks = (struct damos_watermarks){ 936 + DAMOS_WMARK_FREE_MEM_RATE, 937 + 900, 100, 50}, 938 + }, 939 + &(struct damos){ 940 + .pattern = (struct damos_access_pattern){ 941 + 2, 3, 4, 5, 6, 7}, 942 + .action = DAMOS_PAGEOUT, 943 + .apply_interval_us = 2000000, 944 + .wmarks = (struct damos_watermarks){ 945 + DAMOS_WMARK_FREE_MEM_RATE, 946 + 800, 50, 30}, 947 + }); 948 + damos_test_commit_for(test, 949 + &(struct damos){ 950 + .pattern = (struct damos_access_pattern){ 951 + 1, 2, 3, 4, 5, 6}, 952 + .action = DAMOS_PAGEOUT, 953 + .apply_interval_us = 1000000, 954 + .wmarks = (struct damos_watermarks){ 955 + DAMOS_WMARK_FREE_MEM_RATE, 956 + 900, 100, 50}, 957 + }, 958 + &(struct damos){ 959 + .pattern = (struct damos_access_pattern){ 960 + 2, 3, 4, 5, 6, 7}, 961 + .action = DAMOS_MIGRATE_HOT, 962 + .apply_interval_us = 2000000, 963 + .target_nid = 5, 964 + }); 965 + } 966 + 876 967 static void damos_test_filter_out(struct kunit *test) 877 968 { 878 969 struct damon_target *t; ··· 1169 1078 KUNIT_CASE(damos_test_commit_quota), 1170 1079 KUNIT_CASE(damos_test_commit_dests), 1171 1080 KUNIT_CASE(damos_test_commit_filter), 1081 + KUNIT_CASE(damos_test_commit), 1172 1082 KUNIT_CASE(damos_test_filter_out), 1173 1083 KUNIT_CASE(damon_test_feed_loop_next_input), 1174 1084 KUNIT_CASE(damon_test_set_filters_default_reject),