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>pull/1354/merge
parent
eec573b8dd
commit
299a88f6ec
|
|
@ -873,6 +873,97 @@ static void damos_test_commit_filter(struct kunit *test)
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void damos_test_help_initailize_scheme(struct damos *scheme)
|
||||||
|
{
|
||||||
|
INIT_LIST_HEAD(&scheme->quota.goals);
|
||||||
|
INIT_LIST_HEAD(&scheme->filters);
|
||||||
|
INIT_LIST_HEAD(&scheme->ops_filters);
|
||||||
|
}
|
||||||
|
|
||||||
|
static void damos_test_commit_for(struct kunit *test, struct damos *dst,
|
||||||
|
struct damos *src)
|
||||||
|
{
|
||||||
|
int err;
|
||||||
|
|
||||||
|
damos_test_help_initailize_scheme(dst);
|
||||||
|
damos_test_help_initailize_scheme(src);
|
||||||
|
|
||||||
|
err = damos_commit(dst, src);
|
||||||
|
if (err)
|
||||||
|
kunit_skip(test, "damos_commit fail");
|
||||||
|
|
||||||
|
KUNIT_EXPECT_EQ(test, dst->pattern.min_sz_region,
|
||||||
|
src->pattern.min_sz_region);
|
||||||
|
KUNIT_EXPECT_EQ(test, dst->pattern.max_sz_region,
|
||||||
|
src->pattern.max_sz_region);
|
||||||
|
KUNIT_EXPECT_EQ(test, dst->pattern.min_nr_accesses,
|
||||||
|
src->pattern.min_nr_accesses);
|
||||||
|
KUNIT_EXPECT_EQ(test, dst->pattern.max_nr_accesses,
|
||||||
|
src->pattern.max_nr_accesses);
|
||||||
|
KUNIT_EXPECT_EQ(test, dst->pattern.min_age_region,
|
||||||
|
src->pattern.min_age_region);
|
||||||
|
KUNIT_EXPECT_EQ(test, dst->pattern.max_age_region,
|
||||||
|
src->pattern.max_age_region);
|
||||||
|
|
||||||
|
KUNIT_EXPECT_EQ(test, dst->action, src->action);
|
||||||
|
KUNIT_EXPECT_EQ(test, dst->apply_interval_us, src->apply_interval_us);
|
||||||
|
|
||||||
|
KUNIT_EXPECT_EQ(test, dst->wmarks.metric, src->wmarks.metric);
|
||||||
|
KUNIT_EXPECT_EQ(test, dst->wmarks.interval, src->wmarks.interval);
|
||||||
|
KUNIT_EXPECT_EQ(test, dst->wmarks.high, src->wmarks.high);
|
||||||
|
KUNIT_EXPECT_EQ(test, dst->wmarks.mid, src->wmarks.mid);
|
||||||
|
KUNIT_EXPECT_EQ(test, dst->wmarks.low, src->wmarks.low);
|
||||||
|
|
||||||
|
switch (src->action) {
|
||||||
|
case DAMOS_MIGRATE_COLD:
|
||||||
|
case DAMOS_MIGRATE_HOT:
|
||||||
|
KUNIT_EXPECT_EQ(test, dst->target_nid, src->target_nid);
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
static void damos_test_commit(struct kunit *test)
|
||||||
|
{
|
||||||
|
damos_test_commit_for(test,
|
||||||
|
&(struct damos){
|
||||||
|
.pattern = (struct damos_access_pattern){
|
||||||
|
1, 2, 3, 4, 5, 6},
|
||||||
|
.action = DAMOS_PAGEOUT,
|
||||||
|
.apply_interval_us = 1000000,
|
||||||
|
.wmarks = (struct damos_watermarks){
|
||||||
|
DAMOS_WMARK_FREE_MEM_RATE,
|
||||||
|
900, 100, 50},
|
||||||
|
},
|
||||||
|
&(struct damos){
|
||||||
|
.pattern = (struct damos_access_pattern){
|
||||||
|
2, 3, 4, 5, 6, 7},
|
||||||
|
.action = DAMOS_PAGEOUT,
|
||||||
|
.apply_interval_us = 2000000,
|
||||||
|
.wmarks = (struct damos_watermarks){
|
||||||
|
DAMOS_WMARK_FREE_MEM_RATE,
|
||||||
|
800, 50, 30},
|
||||||
|
});
|
||||||
|
damos_test_commit_for(test,
|
||||||
|
&(struct damos){
|
||||||
|
.pattern = (struct damos_access_pattern){
|
||||||
|
1, 2, 3, 4, 5, 6},
|
||||||
|
.action = DAMOS_PAGEOUT,
|
||||||
|
.apply_interval_us = 1000000,
|
||||||
|
.wmarks = (struct damos_watermarks){
|
||||||
|
DAMOS_WMARK_FREE_MEM_RATE,
|
||||||
|
900, 100, 50},
|
||||||
|
},
|
||||||
|
&(struct damos){
|
||||||
|
.pattern = (struct damos_access_pattern){
|
||||||
|
2, 3, 4, 5, 6, 7},
|
||||||
|
.action = DAMOS_MIGRATE_HOT,
|
||||||
|
.apply_interval_us = 2000000,
|
||||||
|
.target_nid = 5,
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
static void damos_test_filter_out(struct kunit *test)
|
static void damos_test_filter_out(struct kunit *test)
|
||||||
{
|
{
|
||||||
struct damon_target *t;
|
struct damon_target *t;
|
||||||
|
|
@ -1078,6 +1169,7 @@ static struct kunit_case damon_test_cases[] = {
|
||||||
KUNIT_CASE(damos_test_commit_quota),
|
KUNIT_CASE(damos_test_commit_quota),
|
||||||
KUNIT_CASE(damos_test_commit_dests),
|
KUNIT_CASE(damos_test_commit_dests),
|
||||||
KUNIT_CASE(damos_test_commit_filter),
|
KUNIT_CASE(damos_test_commit_filter),
|
||||||
|
KUNIT_CASE(damos_test_commit),
|
||||||
KUNIT_CASE(damos_test_filter_out),
|
KUNIT_CASE(damos_test_filter_out),
|
||||||
KUNIT_CASE(damon_test_feed_loop_next_input),
|
KUNIT_CASE(damon_test_feed_loop_next_input),
|
||||||
KUNIT_CASE(damon_test_set_filters_default_reject),
|
KUNIT_CASE(damon_test_set_filters_default_reject),
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue