Merge tag 'trace-printf-v6.13' of git://git.kernel.org/pub/scm/linux/kernel/git/trace...
[drm/drm-misc.git] / mm / damon / tests / sysfs-kunit.h
blob7b5c7b307da99c453d343473cb585ec1a8077324
1 /* SPDX-License-Identifier: GPL-2.0 */
2 /*
3 * Data Access Monitor Unit Tests
5 * Author: SeongJae Park <sj@kernel.org>
6 */
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)
21 nr_targets++;
23 return nr_targets;
26 static int __damon_sysfs_test_get_any_pid(int min, int max)
28 struct pid *pid;
29 int i;
31 for (i = min; i <= max; i++) {
32 pid = find_get_pid(i);
33 if (pid) {
34 put_pid(pid);
35 return i;
38 return -1;
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);
69 kfree(sysfs_targets);
70 kfree(sysfs_target->regions);
71 kfree(sysfs_target);
74 static struct kunit_case damon_sysfs_test_cases[] = {
75 KUNIT_CASE(damon_sysfs_test_add_targets),
76 {},
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 */