Commit 3f9319c6 authored by Chen Ridong's avatar Chen Ridong Committed by Tejun Heo
Browse files

cgroup/cpuset: add sefltest for cpuset v1



There is only hotplug test for cpuset v1, just add base read/write test
for cpuset v1.

Signed-off-by: default avatarChen Ridong <chenridong@huawei.com>
Acked-by: default avatarWaiman Long <longman@redhat.com>
Signed-off-by: default avatarTejun Heo <tj@kernel.org>
parent 1abab1ba
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -5703,6 +5703,7 @@ F: kernel/cgroup/cpuset-v1.c
F:	kernel/cgroup/cpuset.c
F:	tools/testing/selftests/cgroup/test_cpuset.c
F:	tools/testing/selftests/cgroup/test_cpuset_prs.sh
F:	tools/testing/selftests/cgroup/test_cpuset_v1_base.sh
CONTROL GROUP - MEMORY RESOURCE CONTROLLER (MEMCG)
M:	Johannes Weiner <hannes@cmpxchg.org>
+77 −0
Original line number Diff line number Diff line
#!/bin/bash
# SPDX-License-Identifier: GPL-2.0
#
# Basc test for cpuset v1 interfaces write/read
#

skip_test() {
	echo "$1"
	echo "Test SKIPPED"
	exit 4 # ksft_skip
}

write_test() {
	dir=$1
	interface=$2
	value=$3
	original=$(cat $dir/$interface)
	echo "testing $interface $value"
	echo $value > $dir/$interface
	new=$(cat $dir/$interface)
	[[ $value -ne $(cat $dir/$interface) ]] && {
		echo "$interface write $value failed: new:$new"
		exit 1
	}
}

[[ $(id -u) -eq 0 ]] || skip_test "Test must be run as root!"

# Find cpuset v1 mount point
CPUSET=$(mount -t cgroup | grep cpuset | head -1 | awk '{print $3}')
[[ -n "$CPUSET" ]] || skip_test "cpuset v1 mount point not found!"

#
# Create a test cpuset, read write test
#
TDIR=test$$
[[ -d $CPUSET/$TDIR ]] || mkdir $CPUSET/$TDIR

ITF_MATRIX=(
	#interface			value		expect 	root_only
	'cpuset.cpus			0-1		0-1	0'
	'cpuset.mem_exclusive		1		1	0'
	'cpuset.mem_exclusive		0		0	0'
	'cpuset.mem_hardwall		1		1	0'
	'cpuset.mem_hardwall		0		0	0'
	'cpuset.memory_migrate		1		1	0'
	'cpuset.memory_migrate		0		0	0'
	'cpuset.memory_spread_page	1		1	0'
	'cpuset.memory_spread_page	0		0	0'
	'cpuset.memory_spread_slab	1		1	0'
	'cpuset.memory_spread_slab	0		0	0'
	'cpuset.mems			0		0	0'
	'cpuset.sched_load_balance	1		1	0'
	'cpuset.sched_load_balance	0		0	0'
	'cpuset.sched_relax_domain_level	2	2	0'
	'cpuset.memory_pressure_enabled	1		1	1'
	'cpuset.memory_pressure_enabled	0		0	1'
)

run_test()
{
	cnt="${ITF_MATRIX[@]}"
	for i in "${ITF_MATRIX[@]}" ; do
		args=($i)
		root_only=${args[3]}
		[[ $root_only -eq 1 ]] && {
			write_test "$CPUSET" "${args[0]}" "${args[1]}" "${args[2]}"
			continue
		}
		write_test "$CPUSET/$TDIR" "${args[0]}" "${args[1]}" "${args[2]}"
	done
}

run_test
rmdir $CPUSET/$TDIR
echo "Test PASSED"
exit 0