mirror of https://github.com/torvalds/linux.git
mm/damon/tests/core-kunit: add damos_commit_quota_goals() test
Add a new unit test for damos_commit_quota_goals(). Link: https://lkml.kernel.org/r/20251111184415.141757-7-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>
This commit is contained in:
parent
99f89debaf
commit
d9adfb8a28
|
|
@ -580,6 +580,86 @@ static void damos_test_commit_quota_goal(struct kunit *test)
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void damos_test_commit_quota_goals_for(struct kunit *test,
|
||||||
|
struct damos_quota_goal *dst_goals, int nr_dst_goals,
|
||||||
|
struct damos_quota_goal *src_goals, int nr_src_goals)
|
||||||
|
{
|
||||||
|
struct damos_quota dst, src;
|
||||||
|
struct damos_quota_goal *goal, *next;
|
||||||
|
bool skip = true;
|
||||||
|
int i;
|
||||||
|
|
||||||
|
INIT_LIST_HEAD(&dst.goals);
|
||||||
|
INIT_LIST_HEAD(&src.goals);
|
||||||
|
|
||||||
|
for (i = 0; i < nr_dst_goals; i++) {
|
||||||
|
/*
|
||||||
|
* When nr_src_goals is smaller than dst_goals,
|
||||||
|
* damos_commit_quota_goals() will kfree() the dst goals.
|
||||||
|
* Make it kfree()-able.
|
||||||
|
*/
|
||||||
|
goal = damos_new_quota_goal(dst_goals[i].metric,
|
||||||
|
dst_goals[i].target_value);
|
||||||
|
if (!goal)
|
||||||
|
goto out;
|
||||||
|
damos_add_quota_goal(&dst, goal);
|
||||||
|
}
|
||||||
|
skip = false;
|
||||||
|
for (i = 0; i < nr_src_goals; i++)
|
||||||
|
damos_add_quota_goal(&src, &src_goals[i]);
|
||||||
|
|
||||||
|
damos_commit_quota_goals(&dst, &src);
|
||||||
|
|
||||||
|
i = 0;
|
||||||
|
damos_for_each_quota_goal(goal, (&dst)) {
|
||||||
|
KUNIT_EXPECT_EQ(test, goal->metric, src_goals[i].metric);
|
||||||
|
KUNIT_EXPECT_EQ(test, goal->target_value,
|
||||||
|
src_goals[i++].target_value);
|
||||||
|
}
|
||||||
|
KUNIT_EXPECT_EQ(test, i, nr_src_goals);
|
||||||
|
|
||||||
|
out:
|
||||||
|
damos_for_each_quota_goal_safe(goal, next, (&dst))
|
||||||
|
damos_destroy_quota_goal(goal);
|
||||||
|
if (skip)
|
||||||
|
kunit_skip(test, "goal alloc fail");
|
||||||
|
}
|
||||||
|
|
||||||
|
static void damos_test_commit_quota_goals(struct kunit *test)
|
||||||
|
{
|
||||||
|
damos_test_commit_quota_goals_for(test,
|
||||||
|
(struct damos_quota_goal[]){}, 0,
|
||||||
|
(struct damos_quota_goal[]){
|
||||||
|
{
|
||||||
|
.metric = DAMOS_QUOTA_USER_INPUT,
|
||||||
|
.target_value = 123,
|
||||||
|
},
|
||||||
|
}, 1);
|
||||||
|
damos_test_commit_quota_goals_for(test,
|
||||||
|
(struct damos_quota_goal[]){
|
||||||
|
{
|
||||||
|
.metric = DAMOS_QUOTA_USER_INPUT,
|
||||||
|
.target_value = 234,
|
||||||
|
},
|
||||||
|
|
||||||
|
}, 1,
|
||||||
|
(struct damos_quota_goal[]){
|
||||||
|
{
|
||||||
|
.metric = DAMOS_QUOTA_USER_INPUT,
|
||||||
|
.target_value = 345,
|
||||||
|
},
|
||||||
|
}, 1);
|
||||||
|
damos_test_commit_quota_goals_for(test,
|
||||||
|
(struct damos_quota_goal[]){
|
||||||
|
{
|
||||||
|
.metric = DAMOS_QUOTA_USER_INPUT,
|
||||||
|
.target_value = 456,
|
||||||
|
},
|
||||||
|
|
||||||
|
}, 1,
|
||||||
|
(struct damos_quota_goal[]){}, 0);
|
||||||
|
}
|
||||||
|
|
||||||
static void damos_test_commit_filter_for(struct kunit *test,
|
static void damos_test_commit_filter_for(struct kunit *test,
|
||||||
struct damos_filter *dst, struct damos_filter *src)
|
struct damos_filter *dst, struct damos_filter *src)
|
||||||
{
|
{
|
||||||
|
|
@ -866,6 +946,7 @@ static struct kunit_case damon_test_cases[] = {
|
||||||
KUNIT_CASE(damon_test_moving_sum),
|
KUNIT_CASE(damon_test_moving_sum),
|
||||||
KUNIT_CASE(damos_test_new_filter),
|
KUNIT_CASE(damos_test_new_filter),
|
||||||
KUNIT_CASE(damos_test_commit_quota_goal),
|
KUNIT_CASE(damos_test_commit_quota_goal),
|
||||||
|
KUNIT_CASE(damos_test_commit_quota_goals),
|
||||||
KUNIT_CASE(damos_test_commit_filter),
|
KUNIT_CASE(damos_test_commit_filter),
|
||||||
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),
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue