xref: /OK3568_Linux_fs/kernel/tools/testing/selftests/damon/debugfs_attrs.sh (revision 4882a59341e53eb6f0b4789bf948001014eff981)
1*4882a593Smuzhiyun#!/bin/bash
2*4882a593Smuzhiyun# SPDX-License-Identifier: GPL-2.0
3*4882a593Smuzhiyun
4*4882a593Smuzhiyuntest_write_result() {
5*4882a593Smuzhiyun	file=$1
6*4882a593Smuzhiyun	content=$2
7*4882a593Smuzhiyun	orig_content=$3
8*4882a593Smuzhiyun	expect_reason=$4
9*4882a593Smuzhiyun	expected=$5
10*4882a593Smuzhiyun
11*4882a593Smuzhiyun	echo "$content" > "$file"
12*4882a593Smuzhiyun	if [ $? -ne "$expected" ]
13*4882a593Smuzhiyun	then
14*4882a593Smuzhiyun		echo "writing $content to $file doesn't return $expected"
15*4882a593Smuzhiyun		echo "expected because: $expect_reason"
16*4882a593Smuzhiyun		echo "$orig_content" > "$file"
17*4882a593Smuzhiyun		exit 1
18*4882a593Smuzhiyun	fi
19*4882a593Smuzhiyun}
20*4882a593Smuzhiyun
21*4882a593Smuzhiyuntest_write_succ() {
22*4882a593Smuzhiyun	test_write_result "$1" "$2" "$3" "$4" 0
23*4882a593Smuzhiyun}
24*4882a593Smuzhiyun
25*4882a593Smuzhiyuntest_write_fail() {
26*4882a593Smuzhiyun	test_write_result "$1" "$2" "$3" "$4" 1
27*4882a593Smuzhiyun}
28*4882a593Smuzhiyun
29*4882a593Smuzhiyuntest_content() {
30*4882a593Smuzhiyun	file=$1
31*4882a593Smuzhiyun	orig_content=$2
32*4882a593Smuzhiyun	expected=$3
33*4882a593Smuzhiyun	expect_reason=$4
34*4882a593Smuzhiyun
35*4882a593Smuzhiyun	content=$(cat "$file")
36*4882a593Smuzhiyun	if [ "$content" != "$expected" ]
37*4882a593Smuzhiyun	then
38*4882a593Smuzhiyun		echo "reading $file expected $expected but $content"
39*4882a593Smuzhiyun		echo "expected because: $expect_reason"
40*4882a593Smuzhiyun		echo "$orig_content" > "$file"
41*4882a593Smuzhiyun		exit 1
42*4882a593Smuzhiyun	fi
43*4882a593Smuzhiyun}
44*4882a593Smuzhiyun
45*4882a593Smuzhiyunsource ./_chk_dependency.sh
46*4882a593Smuzhiyun
47*4882a593Smuzhiyun# Test attrs file
48*4882a593Smuzhiyun# ===============
49*4882a593Smuzhiyun
50*4882a593Smuzhiyunfile="$DBGFS/attrs"
51*4882a593Smuzhiyunorig_content=$(cat "$file")
52*4882a593Smuzhiyun
53*4882a593Smuzhiyuntest_write_succ "$file" "1 2 3 4 5" "$orig_content" "valid input"
54*4882a593Smuzhiyuntest_write_fail "$file" "1 2 3 4" "$orig_content" "no enough fields"
55*4882a593Smuzhiyuntest_write_fail "$file" "1 2 3 5 4" "$orig_content" \
56*4882a593Smuzhiyun	"min_nr_regions > max_nr_regions"
57*4882a593Smuzhiyuntest_content "$file" "$orig_content" "1 2 3 4 5" "successfully written"
58*4882a593Smuzhiyunecho "$orig_content" > "$file"
59*4882a593Smuzhiyun
60*4882a593Smuzhiyun# Test schemes file
61*4882a593Smuzhiyun# =================
62*4882a593Smuzhiyun
63*4882a593Smuzhiyunfile="$DBGFS/schemes"
64*4882a593Smuzhiyunorig_content=$(cat "$file")
65*4882a593Smuzhiyun
66*4882a593Smuzhiyuntest_write_succ "$file" "1 2 3 4 5 6 4 0 0 0 1 2 3 1 100 3 2 1" \
67*4882a593Smuzhiyun	"$orig_content" "valid input"
68*4882a593Smuzhiyuntest_write_fail "$file" "1 2
69*4882a593Smuzhiyun3 4 5 6 3 0 0 0 1 2 3 1 100 3 2 1" "$orig_content" "multi lines"
70*4882a593Smuzhiyuntest_write_succ "$file" "" "$orig_content" "disabling"
71*4882a593Smuzhiyunecho "$orig_content" > "$file"
72*4882a593Smuzhiyun
73*4882a593Smuzhiyun# Test target_ids file
74*4882a593Smuzhiyun# ====================
75*4882a593Smuzhiyun
76*4882a593Smuzhiyunfile="$DBGFS/target_ids"
77*4882a593Smuzhiyunorig_content=$(cat "$file")
78*4882a593Smuzhiyun
79*4882a593Smuzhiyuntest_write_succ "$file" "1 2 3 4" "$orig_content" "valid input"
80*4882a593Smuzhiyuntest_write_succ "$file" "1 2 abc 4" "$orig_content" "still valid input"
81*4882a593Smuzhiyuntest_content "$file" "$orig_content" "1 2" "non-integer was there"
82*4882a593Smuzhiyuntest_write_succ "$file" "abc 2 3" "$orig_content" "the file allows wrong input"
83*4882a593Smuzhiyuntest_content "$file" "$orig_content" "" "wrong input written"
84*4882a593Smuzhiyuntest_write_succ "$file" "" "$orig_content" "empty input"
85*4882a593Smuzhiyuntest_content "$file" "$orig_content" "" "empty input written"
86*4882a593Smuzhiyunecho "$orig_content" > "$file"
87*4882a593Smuzhiyun
88*4882a593Smuzhiyunecho "PASS"
89