tests: limit AFP smoke log excerpt to recent lines
All checks were successful
Source release / source-package (push) Successful in 47s

This commit is contained in:
Mario Fetka
2026-05-30 19:06:37 +00:00
parent 9032848c9a
commit 2655f6e961

View File

@@ -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"