1 /* SPDX-License-Identifier: GPL-2.0 */
3 * Data Access Monitor Unit Tests
5 * Author: SeongJae Park <sj@kernel.org>
8 #ifdef CONFIG_DAMON_SYSFS_KUNIT_TEST
10 #ifndef _DAMON_SYSFS_TEST_H
11 #define _DAMON_SYSFS_TEST_H
13 #include <kunit/test.h>
15 static unsigned int nr_damon_targets(struct damon_ctx
*ctx
)
17 struct damon_target
*t
;
18 unsigned int nr_targets
= 0;
20 damon_for_each_target(t
, ctx
)
26 static int __damon_sysfs_test_get_any_pid(int min
, int max
)
31 for (i
= min
; i
<= max
; i
++) {
32 pid
= find_get_pid(i
);
41 static void damon_sysfs_test_add_targets(struct kunit
*test
)
43 struct damon_sysfs_targets
*sysfs_targets
;
44 struct damon_sysfs_target
*sysfs_target
;
45 struct damon_ctx
*ctx
;
47 sysfs_targets
= damon_sysfs_targets_alloc();
48 sysfs_targets
->nr
= 1;
49 sysfs_targets
->targets_arr
= kmalloc_array(1,
50 sizeof(*sysfs_targets
->targets_arr
), GFP_KERNEL
);
52 sysfs_target
= damon_sysfs_target_alloc();
53 sysfs_target
->pid
= __damon_sysfs_test_get_any_pid(12, 100);
54 sysfs_target
->regions
= damon_sysfs_regions_alloc();
55 sysfs_targets
->targets_arr
[0] = sysfs_target
;
57 ctx
= damon_new_ctx();
59 damon_sysfs_add_targets(ctx
, sysfs_targets
);
60 KUNIT_EXPECT_EQ(test
, 1u, nr_damon_targets(ctx
));
62 sysfs_target
->pid
= __damon_sysfs_test_get_any_pid(
63 sysfs_target
->pid
+ 1, 200);
64 damon_sysfs_add_targets(ctx
, sysfs_targets
);
65 KUNIT_EXPECT_EQ(test
, 2u, nr_damon_targets(ctx
));
67 damon_destroy_ctx(ctx
);
68 kfree(sysfs_targets
->targets_arr
);
70 kfree(sysfs_target
->regions
);
74 static struct kunit_case damon_sysfs_test_cases
[] = {
75 KUNIT_CASE(damon_sysfs_test_add_targets
),
79 static struct kunit_suite damon_sysfs_test_suite
= {
80 .name
= "damon-sysfs",
81 .test_cases
= damon_sysfs_test_cases
,
83 kunit_test_suite(damon_sysfs_test_suite
);
85 #endif /* _DAMON_SYSFS_TEST_H */
87 #endif /* CONFIG_DAMON_SYSFS_KUNIT_TEST */