Linux Audio

Check our new training course

Loading...
Note: File does not exist in v3.5.6.
  1#!/bin/sh
  2
  3TEST_FILE=$(mktemp)
  4
  5echo "== Testing sysctl behavior against ${TARGET} =="
  6
  7set_orig()
  8{
  9	echo "${ORIG}" > "${TARGET}"
 10}
 11
 12set_test()
 13{
 14	echo "${TEST_STR}" > "${TARGET}"
 15}
 16
 17verify()
 18{
 19	local seen
 20	seen=$(cat "$1")
 21	if [ "${seen}" != "${TEST_STR}" ]; then
 22		return 1
 23	fi
 24	return 0
 25}
 26
 27trap 'set_orig; rm -f "${TEST_FILE}"' EXIT
 28
 29rc=0
 30
 31echo -n "Writing test file ... "
 32echo "${TEST_STR}" > "${TEST_FILE}"
 33if ! verify "${TEST_FILE}"; then
 34	echo "FAIL" >&2
 35	exit 1
 36else
 37	echo "ok"
 38fi
 39
 40echo -n "Checking sysctl is not set to test value ... "
 41if verify "${TARGET}"; then
 42	echo "FAIL" >&2
 43	exit 1
 44else
 45	echo "ok"
 46fi
 47
 48echo -n "Writing sysctl from shell ... "
 49set_test
 50if ! verify "${TARGET}"; then
 51	echo "FAIL" >&2
 52	exit 1
 53else
 54	echo "ok"
 55fi
 56
 57echo -n "Resetting sysctl to original value ... "
 58set_orig
 59if verify "${TARGET}"; then
 60	echo "FAIL" >&2
 61	exit 1
 62else
 63	echo "ok"
 64fi
 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
 70echo -n "Writing entire sysctl in single write ... "
 71set_orig
 72dd if="${TEST_FILE}" of="${TARGET}" bs=4096 2>/dev/null
 73if ! verify "${TARGET}"; then
 74	echo "FAIL" >&2
 75	rc=1
 76else
 77	echo "ok"
 78fi
 79
 80echo -n "Writing middle of sysctl after synchronized seek ... "
 81set_test
 82dd if="${TEST_FILE}" of="${TARGET}" bs=1 seek=1 skip=1 2>/dev/null
 83if ! verify "${TARGET}"; then
 84	echo "FAIL" >&2
 85	rc=1
 86else
 87	echo "ok"
 88fi
 89
 90echo -n "Writing beyond end of sysctl ... "
 91set_orig
 92dd if="${TEST_FILE}" of="${TARGET}" bs=20 seek=2 2>/dev/null
 93if verify "${TARGET}"; then
 94        echo "FAIL" >&2
 95        rc=1
 96else
 97        echo "ok"
 98fi
 99
100echo -n "Writing sysctl with multiple long writes ... "
101set_orig
102(perl -e 'print "A" x 50;'; echo "${TEST_STR}") | \
103	dd of="${TARGET}" bs=50 2>/dev/null
104if verify "${TARGET}"; then
105	echo "FAIL" >&2
106	rc=1
107else
108	echo "ok"
109fi