monitoring: global #NNN, progress bar, secrets.env, yellow WARN
This commit is contained in:
parent
db90ddcce5
commit
57b4014ccc
6 changed files with 144 additions and 25 deletions
3
.gitignore
vendored
3
.gitignore
vendored
|
|
@ -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
|
||||||
|
|
|
||||||
|
|
@ -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
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -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` |
|
||||||
|
|
|
||||||
|
|
@ -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
|
||||||
|
|
|
||||||
44
scripts/taler-monitoring/secrets.env.example
Normal file
44
scripts/taler-monitoring/secrets.env.example
Normal 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)
|
||||||
|
|
@ -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
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue