78 lines
		
	
	
		
			1.7 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			78 lines
		
	
	
		
			1.7 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
	
	
	
| #!/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
 |