Add the rt linux 4.1.3-rt3 as base
[kvmfornfv.git] / kernel / tools / testing / selftests / sysctl / common_tests
1 #!/bin/sh
2
3 TEST_FILE=$(mktemp)
4
5 echo "== Testing sysctl behavior against ${TARGET} =="
6
7 set_orig()
8 {
9         echo "${ORIG}" > "${TARGET}"
10 }
11
12 set_test()
13 {
14         echo "${TEST_STR}" > "${TARGET}"
15 }
16
17 verify()
18 {
19         local seen
20         seen=$(cat "$1")
21         if [ "${seen}" != "${TEST_STR}" ]; then
22                 return 1
23         fi
24         return 0
25 }
26
27 trap 'set_orig; rm -f "${TEST_FILE}"' EXIT
28
29 rc=0
30
31 echo -n "Writing test file ... "
32 echo "${TEST_STR}" > "${TEST_FILE}"
33 if ! verify "${TEST_FILE}"; then
34         echo "FAIL" >&2
35         exit 1
36 else
37         echo "ok"
38 fi
39
40 echo -n "Checking sysctl is not set to test value ... "
41 if verify "${TARGET}"; then
42         echo "FAIL" >&2
43         exit 1
44 else
45         echo "ok"
46 fi
47
48 echo -n "Writing sysctl from shell ... "
49 set_test
50 if ! verify "${TARGET}"; then
51         echo "FAIL" >&2
52         exit 1
53 else
54         echo "ok"
55 fi
56
57 echo -n "Resetting sysctl to original value ... "
58 set_orig
59 if verify "${TARGET}"; then
60         echo "FAIL" >&2
61         exit 1
62 else
63         echo "ok"
64 fi
65
66 # Now that we've validated the sanity of "set_test" and "set_orig",
67 # we can use those functions to set starting states before running
68 # specific behavioral tests.
69
70 echo -n "Writing entire sysctl in single write ... "
71 set_orig
72 dd if="${TEST_FILE}" of="${TARGET}" bs=4096 2>/dev/null
73 if ! verify "${TARGET}"; then
74         echo "FAIL" >&2
75         rc=1
76 else
77         echo "ok"
78 fi
79
80 echo -n "Writing middle of sysctl after synchronized seek ... "
81 set_test
82 dd if="${TEST_FILE}" of="${TARGET}" bs=1 seek=1 skip=1 2>/dev/null
83 if ! verify "${TARGET}"; then
84         echo "FAIL" >&2
85         rc=1
86 else
87         echo "ok"
88 fi
89
90 echo -n "Writing beyond end of sysctl ... "
91 set_orig
92 dd if="${TEST_FILE}" of="${TARGET}" bs=20 seek=2 2>/dev/null
93 if verify "${TARGET}"; then
94         echo "FAIL" >&2
95         rc=1
96 else
97         echo "ok"
98 fi
99
100 echo -n "Writing sysctl with multiple long writes ... "
101 set_orig
102 (perl -e 'print "A" x 50;'; echo "${TEST_STR}") | \
103         dd of="${TARGET}" bs=50 2>/dev/null
104 if verify "${TARGET}"; then
105         echo "FAIL" >&2
106         rc=1
107 else
108         echo "ok"
109 fi