monitoring: global #NNN, progress bar, secrets.env, yellow WARN

This commit is contained in:
Hernâni Marques 2026-07-17 18:19:30 +02:00
parent db90ddcce5
commit 57b4014ccc
No known key found for this signature in database
GPG key ID: CB5738652768F7E9
6 changed files with 144 additions and 25 deletions

3
.gitignore vendored
View file

@ -6,3 +6,6 @@ __pycache__/
*~ *~
.tmp/ .tmp/
scripts/taler-monitoring/settings.conf scripts/taler-monitoring/settings.conf
# Local e2e/overrides — never commit (use secrets.env.example as template)
scripts/taler-monitoring/secrets.env
scripts/taler-monitoring/secrets.env.local

View file

@ -24,25 +24,45 @@ End of each phase: totals + list of **BLOCKERS** and **ERRORS** (ids included).
## Secrets (local GOA e2e) ## Secrets (local GOA e2e)
`check_e2e.sh` loads bank/merchant passwords from **koopa-admin-secrets** **Do not commit passwords.** Canonical trees: `~/src/koopa/koopa-admin-log` +
(not this repo). Search order: sibling `~/src/koopa/koopa-admin-secrets`.
1. `SECRETS_ROOT``…/taler-bank/bank-admin-password.txt` ### Local file (recommended on laptop)
2. `KOOPA_ADMIN_SECRETS``$KOOPA_ADMIN_SECRETS/koopa/host-root/…`
3. Sibling of this checkout: `../koopa-admin-secrets/koopa/host-root`
4. `$HOME/taler/src/koopa-admin-secrets/koopa/host-root` (common laptop layout)
5. `$HOME/.config/taler-landing/bank-admin-password.txt`
6. SSH koopa: `/root/bank-admin-password.txt` or podman bank container
If you keep admin-log at `~/koopa-admin-log` but secrets under `~/taler/src/…`:
```bash ```bash
export SECRETS_ROOT="$HOME/taler/src/koopa-admin-secrets/koopa/host-root" cd ~/src/koopa/koopa-admin-log/scripts/taler-monitoring
# or: export KOOPA_ADMIN_SECRETS="$HOME/taler/src/koopa-admin-secrets" cp secrets.env.example secrets.env # gitignored
$EDITOR secrets.env
./taler-monitoring.sh e2e ./taler-monitoring.sh e2e
``` ```
Or one-shot: `E2E_BANK_ADMIN_PASS=… E2E_MERCHANT_TOKEN=… ./taler-monitoring.sh e2e` See **[secrets.env.example](./secrets.env.example)** for every variable that
may appear (admin pass, merchant token, SECRETS_ROOT, progress knobs).
### Search order
1. Already-exported env (`E2E_BANK_ADMIN_PASS`, …)
2. `secrets.env` next to this suite (`MONITORING_SECRETS_ENV=` override)
3. `SECRETS_ROOT` / `KOOPA_ADMIN_SECRETS` file tree
4. Sibling `../koopa-admin-secrets/koopa/host-root`
5. `$HOME/src/koopa/koopa-admin-secrets/koopa/host-root`
6. `$HOME/.config/taler-landing/bank-admin-password.txt`
7. SSH koopa `/root/…` or bank container
### Line IDs + progress
Each check prints **global** and **grouped** ids:
```text
┌ OK ┐ #014 www.exchange-03 exchange /config · HTTP 200
┌ WARN ┐ #015 www.stats-02 stats age soft · yellow badge (not red)
┌ PROG ┐ ████████░░░░ 42% 14/55
```
- `#014` — run-wide counter (whole `./taler-monitoring.sh` invocation)
- `www.exchange-03` — area.group-NN
- **WARN** badge = **yellow**; **ERROR** = **red** only
- Progress: auto estimate per phase, or `PROGRESS_TOTAL=N` / `PROGRESS_OFF=1`
## Commands ## Commands

View file

@ -1,13 +1,18 @@
# taler-monitoring — grouped test IDs # taler-monitoring — grouped test IDs
Every check line is numbered **`area.group-NN`** (two-digit group counter): Every check line has a **global** run number and a **grouped** id:
```text ```text
┌ OK ┐ www.exchange-01 exchange /config · HTTP 200 ┌ OK ┐ #001 www.exchange-01 exchange /config · HTTP 200
┌ ERROR ┐ e2e.pay-03 order create failed · HTTP 502 ┌ WARN ┐ #002 www.stats-02 soft age · yellow (never red)
┌ BLOCKER┐ e2e.prereq-02 merchant secret missing ┌ ERROR ┐ #003 e2e.pay-03 order create failed · HTTP 502
┌ BLOCKER┐ #004 e2e.prereq-02 merchant secret missing
┌ PROG ┐ ████░░░░ 25% 4/16
``` ```
- `#NNN` — monotonic for the whole monitoring run
- `area.group-NN` — logical block (resets per group, continues if re-entered)
| Area | Phase script | Groups (examples) | | Area | Phase script | Groups (examples) |
|------|--------------|-------------------| |------|--------------|-------------------|
| **www** | `check_urls.sh` | `exchange` `perf` `stats` `bank` `merchant` `paivana` `landing` | | **www** | `check_urls.sh` | `exchange` `perf` `stats` `bank` `merchant` `paivana` `landing` |

View file

@ -404,13 +404,28 @@ TEST_AREA=""
TEST_GROUP="" TEST_GROUP=""
TEST_N=0 TEST_N=0
LAST_TID="" LAST_TID=""
GLOBAL_N=0 # Global / progress: may continue across check_*.sh processes via TALER_MON_STATE
GLOBAL_N="${GLOBAL_N:-0}"
LAST_GLOBAL="" LAST_GLOBAL=""
# Progress: set_progress_total N (0 = unknown → bar shows done only) PROGRESS_DONE="${PROGRESS_DONE:-0}"
PROGRESS_DONE=0
PROGRESS_TOTAL="${PROGRESS_TOTAL:-0}" PROGRESS_TOTAL="${PROGRESS_TOTAL:-0}"
PROGRESS_SHOW_EVERY="${PROGRESS_SHOW_EVERY:-8}" PROGRESS_SHOW_EVERY="${PROGRESS_SHOW_EVERY:-8}"
PROGRESS_LAST_SHOWN=0 PROGRESS_LAST_SHOWN="${PROGRESS_LAST_SHOWN:-0}"
_mon_state_load() {
[ -n "${TALER_MON_STATE:-}" ] && [ -f "${TALER_MON_STATE}" ] || return 0
# shellcheck disable=SC1090
. "${TALER_MON_STATE}"
}
_mon_state_save() {
[ -n "${TALER_MON_STATE:-}" ] || return 0
{
printf 'GLOBAL_N=%s\n' "$GLOBAL_N"
printf 'PROGRESS_DONE=%s\n' "$PROGRESS_DONE"
printf 'PROGRESS_TOTAL=%s\n' "$PROGRESS_TOTAL"
printf 'PROGRESS_LAST_SHOWN=%s\n' "$PROGRESS_LAST_SHOWN"
} >"${TALER_MON_STATE}"
}
_mon_state_load
# Per-group counters so re-entering www.exchange after perf continues NN # Per-group counters so re-entering www.exchange after perf continues NN
# (shell vars TEST_CNT_<area>_<group>). # (shell vars TEST_CNT_<area>_<group>).
_tid_key() { _tid_key() {
@ -467,15 +482,20 @@ set_group() {
_progress_maybe_show 1 _progress_maybe_show 1
} }
set_progress_total() { set_progress_total() {
# Optional: expected number of numbered checks in this run (or remaining phase). # Optional: expected number of numbered checks in this run.
# PROGRESS_TOTAL=0 → no percent, only "done=N". # PROGRESS_TOTAL=0 → no percent, only "done=N".
PROGRESS_TOTAL="${1:-0}" # Does not reset GLOBAL_N / PROGRESS_DONE if already mid-run (state file).
PROGRESS_DONE=0 local n="${1:-0}"
PROGRESS_LAST_SHOWN=0 PROGRESS_TOTAL="$n"
if [ "${PROGRESS_DONE:-0}" -eq 0 ]; then
PROGRESS_LAST_SHOWN=0
fi
_mon_state_save
} }
add_progress_total() { add_progress_total() {
local n="${1:-0}" local n="${1:-0}"
PROGRESS_TOTAL=$((PROGRESS_TOTAL + n)) PROGRESS_TOTAL=$((PROGRESS_TOTAL + n))
_mon_state_save
} }
_progress_bar_line() { _progress_bar_line() {
local done="$1" total="$2" width=24 pct=0 filled empty i bar local done="$1" total="$2" width=24 pct=0 filled empty i bar
@ -534,6 +554,7 @@ _take_tid() {
LAST_TID=$(printf '%s-%02d' "$TEST_AREA" "$TEST_N") LAST_TID=$(printf '%s-%02d' "$TEST_AREA" "$TEST_N")
fi fi
PROGRESS_DONE=$((PROGRESS_DONE + 1)) PROGRESS_DONE=$((PROGRESS_DONE + 1))
_mon_state_save
_progress_maybe_show 0 _progress_maybe_show 0
} }
# Dim ids: "#003 www.exchange-01 " or empty # Dim ids: "#003 www.exchange-01 " or empty

View file

@ -0,0 +1,44 @@
# taler-monitoring — local secrets template
#
# Copy to secrets.env (gitignored) and fill values, OR export the same vars:
# cp secrets.env.example secrets.env
# $EDITOR secrets.env
#
# Never commit secrets.env. Prefer file paths under koopa-admin-secrets
# for long-term storage; this file is for laptop one-shots / overrides.
#
# Load order: env already set > secrets.env > SECRETS_ROOT files > SSH koopa
# --- Preferred: point at secrets tree (no passwords in this file) ---
# Sibling of admin-log on this machine:
# KOOPA_ADMIN_SECRETS=$HOME/src/koopa/koopa-admin-secrets
# Or host-root only:
# SECRETS_ROOT=$HOME/src/koopa/koopa-admin-secrets/koopa/host-root
# --- Or paste passwords / tokens (local GOA e2e) ---
# Bank admin (libeufin-bank admin) — funds / creates accounts in e2e
# E2E_BANK_ADMIN_PASS=
# BANK_ADMIN_PASS= # alias, same meaning
# Merchant instance token for private orders (goa-demo-cp4zqk on hacktivism)
# Full "secret-token:…" or raw secret (Bearer prefix added by e2e)
# E2E_MERCHANT_TOKEN=
# MERCHANT_TOKEN=
# MERCHANT_INSTANCE_PASSWORD=
# Optional overrides
# MERCHANT_INSTANCE=goa-demo-cp4zqk
# EXPECT_CURRENCY=GOA
# E2E_TIMEOUT=340
# PROGRESS_TOTAL=120
# PROGRESS_SHOW_EVERY=8
# PROGRESS_OFF=1
# Values that typically appear on a full stack (for orientation only):
# bank-admin-password.txt
# bank-explorer-password.txt
# bank-exchange-password.txt
# bank-goa-demo-cp4zqk-password.txt
# merchant-goa-demo-cp4zqk-password.txt
# exchange-attribute-encryption.secret.conf
# (see ../SECRETS.md and koopa-admin-secrets/MAP.md)

View file

@ -66,6 +66,13 @@ EOF
# shellcheck source=lib.sh # shellcheck source=lib.sh
source "$ROOT/lib.sh" source "$ROOT/lib.sh"
# Optional gitignored secrets.env next to this suite (or MONITORING_SECRETS_ENV=)
load_monitoring_secrets_env 2>/dev/null || true
# Persist #NNN + progress across check_*.sh child processes
TALER_MON_STATE=$(mktemp "${TMPDIR:-/tmp}/taler-mon-state.XXXXXX")
export TALER_MON_STATE
trap 'rm -f "${TALER_MON_STATE:-}"' EXIT
PHASES=() PHASES=()
DOMAIN_SET=0 DOMAIN_SET=0
@ -212,11 +219,30 @@ if [ "${#PHASES[@]}" -eq 0 ]; then
PHASES=(urls) PHASES=(urls)
fi fi
# Rough expected check counts for progress % (override: PROGRESS_TOTAL=N)
if [ "${PROGRESS_TOTAL:-0}" = "0" ] || [ -z "${PROGRESS_TOTAL:-}" ]; then
_pt=0
for p in "${PHASES[@]}"; do
case "$p" in
urls) _pt=$((_pt + 55)) ;;
inside) _pt=$((_pt + 25)) ;;
versions) _pt=$((_pt + 20)) ;;
sanity) _pt=$((_pt + 30)) ;;
server) _pt=$((_pt + 15)) ;;
e2e) _pt=$((_pt + 90)) ;;
ladder|goa-ladder) _pt=$((_pt + 80)) ;;
esac
done
set_progress_total "$_pt"
unset _pt
fi
printf 'target domain=%s\n' "${TALER_DOMAIN}" printf 'target domain=%s\n' "${TALER_DOMAIN}"
printf ' bank %s\n' "$BANK_PUBLIC" printf ' bank %s\n' "$BANK_PUBLIC"
printf ' exchange %s\n' "$EXCHANGE_PUBLIC" printf ' exchange %s\n' "$EXCHANGE_PUBLIC"
printf ' merchant %s\n' "$MERCHANT_PUBLIC" printf ' merchant %s\n' "$MERCHANT_PUBLIC"
printf ' currency expect=%s skip_ssh=%s\n' "${EXPECT_CURRENCY:-any}" "$SKIP_SSH" printf ' currency expect=%s skip_ssh=%s\n' "${EXPECT_CURRENCY:-any}" "$SKIP_SSH"
printf ' progress total≈%s (set PROGRESS_TOTAL= to override; PROGRESS_OFF=1 to hide)\n' "${PROGRESS_TOTAL:-0}"
chmod +x "$ROOT"/check_*.sh 2>/dev/null || true chmod +x "$ROOT"/check_*.sh 2>/dev/null || true