tests: limit AFP smoke log excerpt to recent lines
All checks were successful
Source release / source-package (push) Successful in 47s
All checks were successful
Source release / source-package (push) Successful in 47s
This commit is contained in:
@@ -26,6 +26,7 @@ PREPARE_READONLY_RIGHTS=0
|
||||
READONLY_RIGHTS="[RF]"
|
||||
KEEP_GOING=1
|
||||
CAPTURE_LOG=1
|
||||
LOG_WINDOW_SECONDS=120
|
||||
|
||||
usage() {
|
||||
cat <<USAGE
|
||||
@@ -45,6 +46,7 @@ Options:
|
||||
--readonly-no-password Use ncpfs -n for --readonly-user
|
||||
--prepare-readonly-rights Prepare/revoke explicit rights around the negative test
|
||||
--readonly-rights RIGHTS Rights granted by --prepare-readonly-rights (default: $READONLY_RIGHTS)
|
||||
--log-window-seconds N Include only recent AFP log lines from the last N seconds (default: $LOG_WINDOW_SECONDS)
|
||||
--no-log Do not tail/grep the server log
|
||||
--stop-on-failure Stop after the first failing smoke command
|
||||
-h, --help Show this help
|
||||
@@ -89,6 +91,8 @@ while [ $# -gt 0 ]; do
|
||||
PREPARE_READONLY_RIGHTS=1; shift ;;
|
||||
--readonly-rights)
|
||||
READONLY_RIGHTS=$2; shift 2 ;;
|
||||
--log-window-seconds)
|
||||
LOG_WINDOW_SECONDS=$2; shift 2 ;;
|
||||
--no-log)
|
||||
CAPTURE_LOG=0; shift ;;
|
||||
--stop-on-failure)
|
||||
@@ -119,6 +123,13 @@ esac
|
||||
case "$CREATE_DIR_NAME" in
|
||||
""|*/*|*\\*|*:*) echo "--create-dir-name must be a single path component" >&2; exit 2 ;;
|
||||
esac
|
||||
case "$LOG_WINDOW_SECONDS" in
|
||||
''|*[!0-9]*) echo "--log-window-seconds must be a positive integer" >&2; exit 2 ;;
|
||||
esac
|
||||
if [ "$LOG_WINDOW_SECONDS" -le 0 ]; then
|
||||
echo "--log-window-seconds must be greater than zero" >&2
|
||||
exit 2
|
||||
fi
|
||||
|
||||
DIR_PATH=$NETWARE_PATH
|
||||
case "$NETWARE_PATH" in
|
||||
@@ -136,6 +147,7 @@ UNIX_DIR20_PATH_DOS=$UNIX_PARENT_PATH/$CREATE_DIR20_NAME_DOS
|
||||
|
||||
REPORT_TMP=$(mktemp "${TMPDIR:-/tmp}/mars-afp-smoke.XXXXXX")
|
||||
LOG_TMP=$(mktemp "${TMPDIR:-/tmp}/mars-afp-log.XXXXXX")
|
||||
LOG_RECENT_TMP=$(mktemp "${TMPDIR:-/tmp}/mars-afp-log-recent.XXXXXX")
|
||||
LOG_PID=""
|
||||
FAILURES=0
|
||||
RIGHTS_PREPARED=0
|
||||
@@ -150,7 +162,7 @@ cleanup() {
|
||||
kill "$LOG_PID" 2>/dev/null || true
|
||||
wait "$LOG_PID" 2>/dev/null || true
|
||||
fi
|
||||
rm -f "$LOG_TMP"
|
||||
rm -f "$LOG_TMP" "$LOG_RECENT_TMP"
|
||||
}
|
||||
trap cleanup EXIT INT TERM
|
||||
|
||||
@@ -217,6 +229,24 @@ readonly_print_auth() {
|
||||
fi
|
||||
}
|
||||
|
||||
|
||||
capture_recent_afp_log() {
|
||||
local cutoff
|
||||
|
||||
: >"$LOG_RECENT_TMP"
|
||||
if [ ! -r "$LOG_FILE" ]; then
|
||||
return 1
|
||||
fi
|
||||
|
||||
cutoff=$(date -d "@$(( $(date +%s) - LOG_WINDOW_SECONDS ))" '+%m.%d,%H:%M:%S' 2>/dev/null) || return 1
|
||||
awk -v cutoff="$cutoff" '
|
||||
/AFP/ {
|
||||
ts = substr($0, 1, 14)
|
||||
if (ts >= cutoff) print
|
||||
}
|
||||
' "$LOG_FILE" >"$LOG_RECENT_TMP"
|
||||
}
|
||||
|
||||
finish_report() {
|
||||
if [ "$CAPTURE_LOG" -eq 1 ]; then
|
||||
sleep 1
|
||||
@@ -226,7 +256,10 @@ finish_report() {
|
||||
LOG_PID=""
|
||||
fi
|
||||
section "AFP server log excerpt"
|
||||
if [ -s "$LOG_TMP" ]; then
|
||||
emit "recent_window_seconds=$LOG_WINDOW_SECONDS"
|
||||
if capture_recent_afp_log && [ -s "$LOG_RECENT_TMP" ]; then
|
||||
cat "$LOG_RECENT_TMP" | tee -a "$REPORT_TMP"
|
||||
elif [ -s "$LOG_TMP" ]; then
|
||||
cat "$LOG_TMP" | tee -a "$REPORT_TMP"
|
||||
else
|
||||
emit "No AFP lines captured from $LOG_FILE."
|
||||
@@ -249,6 +282,7 @@ emit "path=$NETWARE_PATH"
|
||||
emit "dir_path=$DIR_PATH"
|
||||
emit "unix_path=$UNIX_PATH"
|
||||
emit "log=$LOG_FILE"
|
||||
emit "log_window_seconds=$LOG_WINDOW_SECONDS"
|
||||
emit "finder_type=$FINDER_TYPE"
|
||||
emit "finder_creator=$FINDER_CREATOR"
|
||||
emit "mtime_epoch=$TIMESTAMP_EPOCH"
|
||||
|
||||
Reference in New Issue
Block a user