78 lines
2.1 KiB
Bash
Executable File
78 lines
2.1 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
set -euo pipefail
|
|
|
|
if [[ $# -ne 1 ]]; then
|
|
echo "usage: $0 /tmp/typhon-aci.env" >&2
|
|
exit 1
|
|
fi
|
|
|
|
ENV_FILE="$1"
|
|
if [[ ! -f "$ENV_FILE" ]]; then
|
|
echo "missing env file: $ENV_FILE" >&2
|
|
exit 1
|
|
fi
|
|
|
|
set -a
|
|
# shellcheck source=/dev/null
|
|
source "$ENV_FILE"
|
|
set +a
|
|
|
|
: "${ACI_EMAIL:?ACI_EMAIL is required}"
|
|
: "${ACI_PASSWORD:?ACI_PASSWORD is required}"
|
|
|
|
export POLL_INTERVAL_SECONDS="${POLL_INTERVAL_SECONDS:-10}"
|
|
export REQUEST_TIMEOUT_MS="${REQUEST_TIMEOUT_MS:-10000}"
|
|
export LISTEN_PORT="${LISTEN_PORT:-9108}"
|
|
export LOG_LEVEL="${LOG_LEVEL:-info}"
|
|
|
|
LOG_FILE="/tmp/typhon-manual-smoke.log"
|
|
METRICS_FILE="/tmp/typhon-manual-smoke.metrics"
|
|
|
|
cleanup() {
|
|
if [[ -n "${APP_PID:-}" ]]; then
|
|
kill "$APP_PID" 2>/dev/null || true
|
|
wait "$APP_PID" 2>/dev/null || true
|
|
fi
|
|
}
|
|
trap cleanup EXIT
|
|
|
|
npm run dev >"$LOG_FILE" 2>&1 &
|
|
APP_PID=$!
|
|
|
|
for _ in {1..60}; do
|
|
if curl -fsS "http://127.0.0.1:${LISTEN_PORT}/healthz" >/dev/null 2>&1; then
|
|
curl -fsS "http://127.0.0.1:${LISTEN_PORT}/metrics" >"$METRICS_FILE"
|
|
if rg -q '^typhon_up 1$' "$METRICS_FILE"; then
|
|
break
|
|
fi
|
|
fi
|
|
sleep 1
|
|
done
|
|
|
|
curl -fsS "http://127.0.0.1:${LISTEN_PORT}/metrics" >"$METRICS_FILE"
|
|
|
|
echo "=== Required metrics ==="
|
|
rg -n "^typhon_up|^typhon_build_info|^typhon_poll_errors_total|^typhon_temperature_celsius|^typhon_relative_humidity_percent|^typhon_vpd_kpa|^typhon_fan_speed_level" "$METRICS_FILE" -S || true
|
|
|
|
echo
|
|
if rg -q '^typhon_up 1$' "$METRICS_FILE"; then
|
|
TEMP_LINE="$(rg '^typhon_temperature_celsius' "$METRICS_FILE" -n -S | head -n 1 || true)"
|
|
HUMID_LINE="$(rg '^typhon_relative_humidity_percent' "$METRICS_FILE" -n -S | head -n 1 || true)"
|
|
VPD_LINE="$(rg '^typhon_vpd_kpa' "$METRICS_FILE" -n -S | head -n 1 || true)"
|
|
echo "=== Current climate ==="
|
|
[[ -n "$TEMP_LINE" ]] && echo "$TEMP_LINE"
|
|
[[ -n "$HUMID_LINE" ]] && echo "$HUMID_LINE"
|
|
[[ -n "$VPD_LINE" ]] && echo "$VPD_LINE"
|
|
else
|
|
echo "warning: typhon_up did not reach 1 during smoke window"
|
|
fi
|
|
|
|
echo
|
|
echo "=== Recent app log lines ==="
|
|
tail -n 60 "$LOG_FILE"
|
|
|
|
echo
|
|
echo "manual smoke complete"
|
|
echo "metrics: $METRICS_FILE"
|
|
echo "logs: $LOG_FILE"
|