brintos

brintos / linux-shallow public Read only

0
0
Text · 1.9 KiB · 7b5c7b3 Raw
88 lines · c
1/* SPDX-License-Identifier: GPL-2.0 */2/*3 * Data Access Monitor Unit Tests4 *5 * Author: SeongJae Park <sj@kernel.org>6 */7 8#ifdef CONFIG_DAMON_SYSFS_KUNIT_TEST9 10#ifndef _DAMON_SYSFS_TEST_H11#define _DAMON_SYSFS_TEST_H12 13#include <kunit/test.h>14 15static unsigned int nr_damon_targets(struct damon_ctx *ctx)16{17	struct damon_target *t;18	unsigned int nr_targets = 0;19 20	damon_for_each_target(t, ctx)21		nr_targets++;22 23	return nr_targets;24}25 26static int __damon_sysfs_test_get_any_pid(int min, int max)27{28	struct pid *pid;29	int i;30 31	for (i = min; i <= max; i++) {32		pid = find_get_pid(i);33		if (pid) {34			put_pid(pid);35			return i;36		}37	}38	return -1;39}40 41static void damon_sysfs_test_add_targets(struct kunit *test)42{43	struct damon_sysfs_targets *sysfs_targets;44	struct damon_sysfs_target *sysfs_target;45	struct damon_ctx *ctx;46 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);51 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;56 57	ctx = damon_new_ctx();58 59	damon_sysfs_add_targets(ctx, sysfs_targets);60	KUNIT_EXPECT_EQ(test, 1u, nr_damon_targets(ctx));61 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));66 67	damon_destroy_ctx(ctx);68	kfree(sysfs_targets->targets_arr);69	kfree(sysfs_targets);70	kfree(sysfs_target->regions);71	kfree(sysfs_target);72}73 74static struct kunit_case damon_sysfs_test_cases[] = {75	KUNIT_CASE(damon_sysfs_test_add_targets),76	{},77};78 79static struct kunit_suite damon_sysfs_test_suite = {80	.name = "damon-sysfs",81	.test_cases = damon_sysfs_test_cases,82};83kunit_test_suite(damon_sysfs_test_suite);84 85#endif /* _DAMON_SYSFS_TEST_H */86 87#endif /* CONFIG_DAMON_SYSFS_KUNIT_TEST */88