summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorKarel Zak2015-04-14 11:52:06 +0200
committerKarel Zak2015-04-14 11:52:06 +0200
commitf8c0152970221261c52f6604e9e7963b478ebd95 (patch)
tree512705140f6eebee384c0e008645d0b8b3ab5092
parentunshare: allow persisting mount namespaces (diff)
parenttravis: install socat >= 1.7.2 (diff)
downloadkernel-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
-rwxr-xr-x.travis-functions.sh7
-rw-r--r--misc-utils/logger.c5
-rw-r--r--tests/expected/logger/errors-check_socket21
-rw-r--r--tests/expected/logger/errors-invalid_socket2
-rw-r--r--tests/expected/logger/formats-check_socket1
-rw-r--r--tests/expected/logger/options-check_socket1
-rw-r--r--tests/functions.sh29
-rwxr-xr-xtests/ts/logger/errors52
-rwxr-xr-xtests/ts/logger/formats39
-rwxr-xr-xtests/ts/logger/journald2
-rwxr-xr-xtests/ts/logger/options21
11 files changed, 144 insertions, 36 deletions
diff --git a/.travis-functions.sh b/.travis-functions.sh
index 86146b0cd..e35d8708c 100755
--- a/.travis-functions.sh
+++ b/.travis-functions.sh
@@ -86,6 +86,13 @@ function travis_install_script
gtk-doc-tools \
ntp \
|| return
+
+ # install/upgrade custom stuff from non-official sources
+ sudo add-apt-repository -y ppa:malcscott/socat || return
+ sudo apt-get -qq update || return
+ sudo apt-get install -qq >/dev/null \
+ socat \
+ || return
}
function travis_before_script
diff --git a/misc-utils/logger.c b/misc-utils/logger.c
index 6316a76fc..8908dfcc1 100644
--- a/misc-utils/logger.c
+++ b/misc-utils/logger.c
@@ -914,10 +914,9 @@ int main(int argc, char **argv)
ctl.unix_socket_errors = 1;
break;
case AF_UNIX_ERRORS_AUTO:
+ ctl.unix_socket_errors = ctl.noact || ctl.stderr_printout;
#ifdef HAVE_LIBSYSTEMD
- ctl.unix_socket_errors = sd_booted();
-#else
- ctl.unix_socket_errors = 0;
+ ctl.unix_socket_errors |= !!sd_booted();
#endif
break;
default:
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