123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110 |
- #!/bin/sh
- TEST_FILE=$(mktemp)
- echo "== Testing sysctl behavior against ${TARGET} =="
- set_orig()
- {
- echo "${ORIG}" > "${TARGET}"
- }
- set_test()
- {
- echo "${TEST_STR}" > "${TARGET}"
- }
- verify()
- {
- local seen
- seen=$(cat "$1")
- if [ "${seen}" != "${TEST_STR}" ]; then
- return 1
- fi
- return 0
- }
- trap 'set_orig; rm -f "${TEST_FILE}"' EXIT
- rc=0
- echo -n "Writing test file ... "
- echo "${TEST_STR}" > "${TEST_FILE}"
- if ! verify "${TEST_FILE}"; then
- echo "FAIL" >&2
- exit 1
- else
- echo "ok"
- fi
- echo -n "Checking sysctl is not set to test value ... "
- if verify "${TARGET}"; then
- echo "FAIL" >&2
- exit 1
- else
- echo "ok"
- fi
- echo -n "Writing sysctl from shell ... "
- set_test
- if ! verify "${TARGET}"; then
- echo "FAIL" >&2
- exit 1
- else
- echo "ok"
- fi
- echo -n "Resetting sysctl to original value ... "
- set_orig
- if verify "${TARGET}"; then
- echo "FAIL" >&2
- exit 1
- else
- echo "ok"
- fi
- # Now that we've validated the sanity of "set_test" and "set_orig",
- # we can use those functions to set starting states before running
- # specific behavioral tests.
- echo -n "Writing entire sysctl in single write ... "
- set_orig
- dd if="${TEST_FILE}" of="${TARGET}" bs=4096 2>/dev/null
- if ! verify "${TARGET}"; then
- echo "FAIL" >&2
- rc=1
- else
- echo "ok"
- fi
- echo -n "Writing middle of sysctl after synchronized seek ... "
- set_test
- dd if="${TEST_FILE}" of="${TARGET}" bs=1 seek=1 skip=1 2>/dev/null
- if ! verify "${TARGET}"; then
- echo "FAIL" >&2
- rc=1
- else
- echo "ok"
- fi
- echo -n "Writing beyond end of sysctl ... "
- set_orig
- dd if="${TEST_FILE}" of="${TARGET}" bs=20 seek=2 2>/dev/null
- if verify "${TARGET}"; then
- echo "FAIL" >&2
- rc=1
- else
- echo "ok"
- fi
- echo -n "Writing sysctl with multiple long writes ... "
- set_orig
- (perl -e 'print "A" x 50;'; echo "${TEST_STR}") | \
- dd of="${TARGET}" bs=50 2>/dev/null
- if verify "${TARGET}"; then
- echo "FAIL" >&2
- rc=1
- else
- echo "ok"
- fi
|