Skip to content

Commit 094fb14

Browse files
sjp38akpm00
authored andcommitted
mm/damon/tests/core-kunit: add a test for damos_set_filters_default_reject()
DAMOS filters' default reject behavior is not very simple. Actually there was a mistake[1] during the development. Add a kunit test for validating the behavior. Link: https://lkml.kernel.org/r/[email protected] Link: https://lore.kernel.org/[email protected] [1] Signed-off-by: SeongJae Park <[email protected]> Cc: Brendan Higgins <[email protected]> Cc: David Gow <[email protected]> Cc: Jonathan Corbet <[email protected]> Cc: Shuah Khan <[email protected]> Signed-off-by: Andrew Morton <[email protected]>
1 parent a82cf30 commit 094fb14

File tree

1 file changed

+70
-0
lines changed

1 file changed

+70
-0
lines changed

mm/damon/tests/core-kunit.h

Lines changed: 70 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -510,6 +510,75 @@ static void damon_test_feed_loop_next_input(struct kunit *test)
510510
damon_feed_loop_next_input(last_input, 2000));
511511
}
512512

513+
static void damon_test_set_filters_default_reject(struct kunit *test)
514+
{
515+
struct damos scheme;
516+
struct damos_filter *target_filter, *anon_filter;
517+
518+
INIT_LIST_HEAD(&scheme.filters);
519+
INIT_LIST_HEAD(&scheme.ops_filters);
520+
521+
damos_set_filters_default_reject(&scheme);
522+
/*
523+
* No filter is installed. Allow by default on both core and ops layer
524+
* filtering stages, since there are no filters at all.
525+
*/
526+
KUNIT_EXPECT_EQ(test, scheme.core_filters_default_reject, false);
527+
KUNIT_EXPECT_EQ(test, scheme.ops_filters_default_reject, false);
528+
529+
target_filter = damos_new_filter(DAMOS_FILTER_TYPE_TARGET, true, true);
530+
damos_add_filter(&scheme, target_filter);
531+
damos_set_filters_default_reject(&scheme);
532+
/*
533+
* A core-handled allow-filter is installed.
534+
* Rejct by default on core layer filtering stage due to the last
535+
* core-layer-filter's behavior.
536+
* Allow by default on ops layer filtering stage due to the absence of
537+
* ops layer filters.
538+
*/
539+
KUNIT_EXPECT_EQ(test, scheme.core_filters_default_reject, true);
540+
KUNIT_EXPECT_EQ(test, scheme.ops_filters_default_reject, false);
541+
542+
target_filter->allow = false;
543+
damos_set_filters_default_reject(&scheme);
544+
/*
545+
* A core-handled reject-filter is installed.
546+
* Allow by default on core layer filtering stage due to the last
547+
* core-layer-filter's behavior.
548+
* Allow by default on ops layer filtering stage due to the absence of
549+
* ops layer filters.
550+
*/
551+
KUNIT_EXPECT_EQ(test, scheme.core_filters_default_reject, false);
552+
KUNIT_EXPECT_EQ(test, scheme.ops_filters_default_reject, false);
553+
554+
anon_filter = damos_new_filter(DAMOS_FILTER_TYPE_ANON, true, true);
555+
damos_add_filter(&scheme, anon_filter);
556+
557+
damos_set_filters_default_reject(&scheme);
558+
/*
559+
* A core-handled reject-filter and ops-handled allow-filter are installed.
560+
* Allow by default on core layer filtering stage due to the existence
561+
* of the ops-handled filter.
562+
* Reject by default on ops layer filtering stage due to the last
563+
* ops-layer-filter's behavior.
564+
*/
565+
KUNIT_EXPECT_EQ(test, scheme.core_filters_default_reject, false);
566+
KUNIT_EXPECT_EQ(test, scheme.ops_filters_default_reject, true);
567+
568+
target_filter->allow = true;
569+
damos_set_filters_default_reject(&scheme);
570+
/*
571+
* A core-handled allow-filter and ops-handled allow-filter are
572+
* installed.
573+
* Allow by default on core layer filtering stage due to the existence
574+
* of the ops-handled filter.
575+
* Reject by default on ops layer filtering stage due to the last
576+
* ops-layer-filter's behavior.
577+
*/
578+
KUNIT_EXPECT_EQ(test, scheme.core_filters_default_reject, false);
579+
KUNIT_EXPECT_EQ(test, scheme.ops_filters_default_reject, true);
580+
}
581+
513582
static struct kunit_case damon_test_cases[] = {
514583
KUNIT_CASE(damon_test_target),
515584
KUNIT_CASE(damon_test_regions),
@@ -527,6 +596,7 @@ static struct kunit_case damon_test_cases[] = {
527596
KUNIT_CASE(damos_test_new_filter),
528597
KUNIT_CASE(damos_test_filter_out),
529598
KUNIT_CASE(damon_test_feed_loop_next_input),
599+
KUNIT_CASE(damon_test_set_filters_default_reject),
530600
{},
531601
};
532602

0 commit comments

Comments
 (0)