| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687 |
- /* SPDX-License-Identifier: GPL-2.0 */
- /*
- * Data Access Monitor Unit Tests
- *
- * Author: SeongJae Park <sj@kernel.org>
- */
- #ifdef CONFIG_DAMON_SYSFS_KUNIT_TEST
- #ifndef _DAMON_SYSFS_TEST_H
- #define _DAMON_SYSFS_TEST_H
- #include <kunit/test.h>
- static unsigned int nr_damon_targets(struct damon_ctx *ctx)
- {
- struct damon_target *t;
- unsigned int nr_targets = 0;
- damon_for_each_target(t, ctx)
- nr_targets++;
- return nr_targets;
- }
- static int __damon_sysfs_test_get_any_pid(int min, int max)
- {
- struct pid *pid;
- int i;
- for (i = min; i <= max; i++) {
- pid = find_get_pid(i);
- if (pid) {
- put_pid(pid);
- return i;
- }
- }
- return -1;
- }
- static void damon_sysfs_test_add_targets(struct kunit *test)
- {
- struct damon_sysfs_targets *sysfs_targets;
- struct damon_sysfs_target *sysfs_target;
- struct damon_ctx *ctx;
- sysfs_targets = damon_sysfs_targets_alloc();
- sysfs_targets->nr = 1;
- sysfs_targets->targets_arr = kmalloc_array(1,
- sizeof(*sysfs_targets->targets_arr), GFP_KERNEL);
- sysfs_target = damon_sysfs_target_alloc();
- sysfs_target->pid = __damon_sysfs_test_get_any_pid(12, 100);
- sysfs_target->regions = damon_sysfs_regions_alloc();
- sysfs_targets->targets_arr[0] = sysfs_target;
- ctx = damon_new_ctx();
- damon_sysfs_add_targets(ctx, sysfs_targets);
- KUNIT_EXPECT_EQ(test, 1u, nr_damon_targets(ctx));
- sysfs_target->pid = __damon_sysfs_test_get_any_pid(
- sysfs_target->pid + 1, 200);
- damon_sysfs_add_targets(ctx, sysfs_targets);
- KUNIT_EXPECT_EQ(test, 2u, nr_damon_targets(ctx));
- damon_destroy_ctx(ctx);
- kfree(sysfs_targets->targets_arr);
- kfree(sysfs_targets);
- kfree(sysfs_target->regions);
- kfree(sysfs_target);
- }
- static struct kunit_case damon_sysfs_test_cases[] = {
- KUNIT_CASE(damon_sysfs_test_add_targets),
- {},
- };
- static struct kunit_suite damon_sysfs_test_suite = {
- .name = "damon-sysfs",
- .test_cases = damon_sysfs_test_cases,
- };
- kunit_test_suite(damon_sysfs_test_suite);
- #endif /* _DAMON_SYSFS_TEST_H */
- #endif /* CONFIG_DAMON_SYSFS_KUNIT_TEST */
|