diff options
author | Karel Zak | 2015-04-14 11:52:06 +0200 |
---|---|---|
committer | Karel Zak | 2015-04-14 11:52:06 +0200 |
commit | f8c0152970221261c52f6604e9e7963b478ebd95 (patch) | |
tree | 512705140f6eebee384c0e008645d0b8b3ab5092 /tests | |
parent | unshare: allow persisting mount namespaces (diff) | |
parent | travis: install socat >= 1.7.2 (diff) | |
download | kernel-qcow2-util-linux-f8c0152970221261c52f6604e9e7963b478ebd95.tar.gz kernel-qcow2-util-linux-f8c0152970221261c52f6604e9e7963b478ebd95.tar.xz kernel-qcow2-util-linux-f8c0152970221261c52f6604e9e7963b478ebd95.zip |
Merge branch 'tests-logger' of https://github.com/rudimeier/util-linux
* 'tests-logger' of https://github.com/rudimeier/util-linux:
travis: install socat >= 1.7.2
tests: add subtests for invalid logger devive
tests: logger/errors does not use --no-act
tests: logger, validate written socket data
tests: logger with socat device
tests: simplify common logger options
logger: --stderr and --no-act turn "auto-errors" on
Diffstat (limited to 'tests')
-rw-r--r-- | tests/expected/logger/errors-check_socket | 21 | ||||
-rw-r--r-- | tests/expected/logger/errors-invalid_socket | 2 | ||||
-rw-r--r-- | tests/expected/logger/formats-check_socket | 1 | ||||
-rw-r--r-- | tests/expected/logger/options-check_socket | 1 | ||||
-rw-r--r-- | tests/functions.sh | 29 | ||||
-rwxr-xr-x | tests/ts/logger/errors | 52 | ||||
-rwxr-xr-x | tests/ts/logger/formats | 39 | ||||
-rwxr-xr-x | tests/ts/logger/journald | 2 | ||||
-rwxr-xr-x | tests/ts/logger/options | 21 |
9 files changed, 135 insertions, 33 deletions
diff --git a/tests/expected/logger/errors-check_socket b/tests/expected/logger/errors-check_socket new file mode 100644 index 000000000..7367dc069 --- /dev/null +++ b/tests/expected/logger/errors-check_socket @@ -0,0 +1,21 @@ +Check written socket data of all subtests. +socket data, kern_priority: +<8>Feb 13 23:31:30 prio: message +socket data, kern_priority_numeric: +<8>Feb 13 23:31:30 prio: message +socket data, invalid_prio: + +socket data, rfc5424_exceed_size: +<13>1 2009-02-13T23:31:30.123456+00:00 test-hostname rfc5424_exceed_size - - [timeQuality tzKnown="1" isSynced="0"] abc +socket data, id_with_space: + +socket data, id_with_space: + +socket data, tag_with_space: +<13>Feb 13 23:31:30 A B: tag_with_space +socket data, tag_with_space: +<13>1 2009-02-13T23:31:30.123456+00:00 test-hostname A B - - [timeQuality tzKnown="1" isSynced="0"] tag_with_space_rfc5424 +socket data, rfc5424_msgid_with_space: + +socket data, invalid_socket: + diff --git a/tests/expected/logger/errors-invalid_socket b/tests/expected/logger/errors-invalid_socket new file mode 100644 index 000000000..5720afac6 --- /dev/null +++ b/tests/expected/logger/errors-invalid_socket @@ -0,0 +1,2 @@ +test_logger: socket /bad/boy: No such file or directory +ret: 1 diff --git a/tests/expected/logger/formats-check_socket b/tests/expected/logger/formats-check_socket new file mode 100644 index 000000000..fa36c4e5b --- /dev/null +++ b/tests/expected/logger/formats-check_socket @@ -0,0 +1 @@ +Check written socket data of all subtests. diff --git a/tests/expected/logger/options-check_socket b/tests/expected/logger/options-check_socket new file mode 100644 index 000000000..fa36c4e5b --- /dev/null +++ b/tests/expected/logger/options-check_socket @@ -0,0 +1 @@ +Check written socket data of all subtests. diff --git a/tests/functions.sh b/tests/functions.sh index e74a11cb5..6f786e797 100644 --- a/tests/functions.sh +++ b/tests/functions.sh @@ -652,3 +652,32 @@ function ts_resolve_host { test -n "$tmp" || return 1 echo "$tmp" | sort -R | head -n 1 } + +# listen to unix socket (background socat) +function ts_init_socket_to_file { + local socket=$1 + local outfile=$2 + local pid="0" + + ts_check_prog "socat" + rm -f "$socket" "$outfile" + + socat -u UNIX-LISTEN:$socket,fork,max-children=1,backlog=128 \ + STDOUT > "$outfile" & + pid=$! + + # check for running background process + if [ "$pid" -le "0" ] || ! kill -s 0 "$pid"; then + ts_skip "unable to run socat" + fi + # wait for the socket listener + if ! socat -u /dev/null UNIX-CONNECT:$socket,retry=30,interval=0.1; then + kill -9 "$pid" + ts_skip "timeout waiting for socket" + fi + # check socket again + if ! socat -u /dev/null UNIX-CONNECT:$socket; then + kill -9 "$pid" + ts_skip "socket stopped listening" + fi +} diff --git a/tests/ts/logger/errors b/tests/ts/logger/errors index c50b3e56a..0b232ecd1 100755 --- a/tests/ts/logger/errors +++ b/tests/ts/logger/errors @@ -30,45 +30,61 @@ export LOGGER_TEST_TIMEOFDAY="1234567890.123456" export LOGGER_TEST_HOSTNAME="test-hostname" export LOGGER_TEST_GETPID="98765" +DEVLOG="${TS_OUTDIR}/${TS_TESTNAME}_devlog" +SOCKIN="${TS_OUTDIR}/${TS_TESTNAME}_socketin" +ts_init_socket_to_file $DEVLOG $SOCKIN +SOCAT_PID="$!" + +function logger_fun { + # logger without --no-act to write all data to the socket + echo "socket data, ${TS_SUBNAME}:" |socat -u - UNIX-CONNECT:$DEVLOG + $TS_HELPER_LOGGER -u $DEVLOG --stderr "$@" >> "$TS_OUTPUT" 2>&1 + echo "ret: $?" >> "$TS_OUTPUT" + echo |socat -u - UNIX-CONNECT:$DEVLOG +} + ts_init_subtest "kern_priority" -$TS_HELPER_LOGGER --no-act -s -t "prio" -p kern.emerg "message" > "$TS_OUTPUT" 2>&1 -echo "ret: $?" >> "$TS_OUTPUT" +logger_fun -t "prio" -p kern.emerg "message" ts_finalize_subtest ts_init_subtest "kern_priority_numeric" -$TS_HELPER_LOGGER --no-act -s -t "prio" -p 0 "message" > "$TS_OUTPUT" 2>&1 -echo "ret: $?" >> "$TS_OUTPUT" +logger_fun -t "prio" -p 0 "message" ts_finalize_subtest ts_init_subtest "invalid_prio" -$TS_HELPER_LOGGER --no-act -s -t "prio" -p 8 "message" > "$TS_OUTPUT" 2>&1 -echo "ret: $?" >> "$TS_OUTPUT" +logger_fun -t "prio" -p 8 "message" ts_finalize_subtest # should truncate ts_init_subtest "rfc5424_exceed_size" -$TS_HELPER_LOGGER --no-act -s -t "rfc5424_exceed_size" --rfc5424 --size 3 "abcd" > "$TS_OUTPUT" 2>&1 -echo "ret: $?" >> "$TS_OUTPUT" +logger_fun -t "rfc5424_exceed_size" --rfc5424 --size 3 "abcd" ts_finalize_subtest ts_init_subtest "id_with_space" -$TS_HELPER_LOGGER --no-act -s -t "id_with_space" --id="A B" "message" > "$TS_OUTPUT" 2>&1 -echo "ret: $?" >> "$TS_OUTPUT" -$TS_HELPER_LOGGER --no-act -s -t "rfc5424_id_with_space" --rfc5424 --id="A B" "message" >> "$TS_OUTPUT" 2>&1 -echo "ret: $?" >> "$TS_OUTPUT" +logger_fun -t "id_with_space" --id="A B" "message" +logger_fun -t "rfc5424_id_with_space" --rfc5424 --id="A B" "message" ts_finalize_subtest # should not fail ts_init_subtest "tag_with_space" -$TS_HELPER_LOGGER --no-act -s -t "A B" "tag_with_space" > "$TS_OUTPUT" 2>&1 -echo "ret: $?" >> "$TS_OUTPUT" -$TS_HELPER_LOGGER --no-act -s -t "A B" --rfc5424 "tag_with_space_rfc5424" >> "$TS_OUTPUT" 2>&1 -echo "ret: $?" >> "$TS_OUTPUT" +logger_fun -t "A B" "tag_with_space" +logger_fun -t "A B" --rfc5424 "tag_with_space_rfc5424" ts_finalize_subtest ts_init_subtest "rfc5424_msgid_with_space" -$TS_HELPER_LOGGER --no-act -s -t "rfc5424_msgid_with_space" --rfc5424 --msgid="A B" "message" > "$TS_OUTPUT" 2>&1 -echo "ret: $?" >> "$TS_OUTPUT" +logger_fun -t "rfc5424_msgid_with_space" --rfc5424 --msgid="A B" "message" +ts_finalize_subtest + +ts_init_subtest "invalid_socket" +logger_fun -u /bad/boy -t "invalid_socket" "message" +ts_finalize_subtest + +ts_init_subtest "check_socket" +ts_log "Check written socket data of all subtests." +sleep 1 +kill $SOCAT_PID +wait $SOCAT_PID &>/dev/null +cat "$SOCKIN" >> "$TS_OUTPUT" 2>&1 ts_finalize_subtest ts_finalize diff --git a/tests/ts/logger/formats b/tests/ts/logger/formats index a647b8159..5957feae2 100755 --- a/tests/ts/logger/formats +++ b/tests/ts/logger/formats @@ -30,35 +30,50 @@ export LOGGER_TEST_TIMEOFDAY="1234567890.123456" export LOGGER_TEST_HOSTNAME="test-hostname" export LOGGER_TEST_GETPID="98765" +DEVLOG="${TS_OUTDIR}/${TS_TESTNAME}_devlog" +SOCKIN="${TS_OUTDIR}/${TS_TESTNAME}_socketin" +ts_init_socket_to_file $DEVLOG $SOCKIN +SOCAT_PID="$!" + +function logger_fun { + $TS_HELPER_LOGGER -u $DEVLOG -s --no-act "$@" >> "$TS_OUTPUT" 2>&1 + echo "ret: $?" >> "$TS_OUTPUT" +} + ts_init_subtest "rfc3164" -$TS_HELPER_LOGGER -s --no-act -t "rfc3164" --rfc3164 "message" > "$TS_OUTPUT" 2>&1 -echo "ret: $?" >> "$TS_OUTPUT" +logger_fun -t "rfc3164" --rfc3164 "message" ts_finalize_subtest ts_init_subtest "rfc5424_simple" -$TS_HELPER_LOGGER -s --no-act -t "rfc5424" --rfc5424 "message" > "$TS_OUTPUT" 2>&1 -echo "ret: $?" >> "$TS_OUTPUT" +logger_fun -t "rfc5424" --rfc5424 "message" ts_finalize_subtest + ts_init_subtest "rfc5424_notime" -$TS_HELPER_LOGGER -s --no-act -t "rfc5424" --rfc5424=notime "message" > "$TS_OUTPUT" 2>&1 -echo "ret: $?" >> "$TS_OUTPUT" +logger_fun -t "rfc5424" --rfc5424=notime "message" ts_finalize_subtest + ts_init_subtest "rfc5424_nohost" -$TS_HELPER_LOGGER -s --no-act -t "rfc5424" --rfc5424=nohost "message" > "$TS_OUTPUT" 2>&1 -echo "ret: $?" >> "$TS_OUTPUT" +logger_fun -t "rfc5424" --rfc5424=nohost "message" ts_finalize_subtest + ts_init_subtest "rfc5424_msgid" -$TS_HELPER_LOGGER -s --no-act -t "rfc5424" --rfc5424 --msgid "MSGID" "message" > "$TS_OUTPUT" 2>&1 -echo "ret: $?" >> "$TS_OUTPUT" +logger_fun -t "rfc5424" --rfc5424 --msgid "MSGID" "message" ts_finalize_subtest ts_init_subtest "priorities" for facility in auth authpriv cron daemon ftp lpr mail news syslog user uucp local{0..7}; do for level in emerg alert crit err warning notice info debug; do - $TS_HELPER_LOGGER -s --no-act -t "prio" -p "$facility.$level" "$facility.$level" >> "$TS_OUTPUT" 2>&1 - echo "ret: $?" >> "$TS_OUTPUT" + logger_fun -t "prio" -p "$facility.$level" "$facility.$level" done done ts_finalize_subtest +ts_init_subtest "check_socket" +ts_log "Check written socket data of all subtests." +sleep 1 +kill $SOCAT_PID +wait $SOCAT_PID &>/dev/null +cat "$SOCKIN" >> "$TS_OUTPUT" 2>&1 +ts_finalize_subtest + ts_finalize diff --git a/tests/ts/logger/journald b/tests/ts/logger/journald index 81296f78e..c10824c0e 100755 --- a/tests/ts/logger/journald +++ b/tests/ts/logger/journald @@ -30,6 +30,6 @@ if ! $TS_HELPER_LOGGER --help | grep -q journald; then fi printf "%s\n%s\n%s\n" MESSAGE_ID=b8f74e14bc714bfc8040a5106dc9376a MESSAGE="a b c 1 2 3" | -$TS_HELPER_LOGGER --no-act --journald --stderr > "$TS_OUTPUT" 2>&1 +$TS_HELPER_LOGGER -u /bad/boy --no-act --journald --stderr > "$TS_OUTPUT" 2>&1 echo "ret: $?" >> "$TS_OUTPUT" ts_finalize diff --git a/tests/ts/logger/options b/tests/ts/logger/options index 6bd323686..afcf5f859 100755 --- a/tests/ts/logger/options +++ b/tests/ts/logger/options @@ -50,14 +50,31 @@ export LOGGER_TEST_TIMEOFDAY="1234567890.123456" export LOGGER_TEST_HOSTNAME="test-hostname" export LOGGER_TEST_GETPID="98765" +DEVLOG="${TS_OUTDIR}/${TS_TESTNAME}_devlog" +SOCKIN="${TS_OUTDIR}/${TS_TESTNAME}_socketin" +ts_init_socket_to_file $DEVLOG $SOCKIN +SOCAT_PID="$!" + +function logger_fun { + $TS_HELPER_LOGGER -u $DEVLOG --stderr --no-act "$@" >> "$TS_OUTPUT" 2>&1 + echo "ret: $?" >> "$TS_OUTPUT" +} + for i in "${tests_array[@]}"; do name="${i%%:*}" options="${i##*:}" ts_init_subtest "$name" - $TS_HELPER_LOGGER --stderr --no-act -t "test_tag" $options > "$TS_OUTPUT" 2>&1 - echo "ret: $?" >> "$TS_OUTPUT" + logger_fun -t "test_tag" $options ts_finalize_subtest done +ts_init_subtest "check_socket" +ts_log "Check written socket data of all subtests." +sleep 1 +kill $SOCAT_PID +wait $SOCAT_PID &>/dev/null +cat "$SOCKIN" >> "$TS_OUTPUT" 2>&1 +ts_finalize_subtest + ts_finalize |