From 66815f81c249eb200eb50f6aa3adfea1244b2ede Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Hern=C3=A2ni=20Marques?= Date: Thu, 16 Jul 2026 19:40:45 +0200 Subject: [PATCH] fix(monitoring): drop unbound LADDER_RANGES in GOA ladder --- scripts/taler-monitoring/TESTS.md | 19 ++++++++----------- scripts/taler-monitoring/check_goa_ladder.sh | 11 ++++++++++- scripts/taler-monitoring/taler-monitoring.sh | 18 ++++++++++++++++-- 3 files changed, 34 insertions(+), 14 deletions(-) diff --git a/scripts/taler-monitoring/TESTS.md b/scripts/taler-monitoring/TESTS.md index eeb05c1..28af8cc 100644 --- a/scripts/taler-monitoring/TESTS.md +++ b/scripts/taler-monitoring/TESTS.md @@ -164,29 +164,26 @@ Blockers keep the same ID prefix: `[BLOCKER] e2e-0NN step: message`. | ladder-… | Settle coins; **stop on first hard failure** | | report | TSV + JSON with **ms_mint / ms_accept / ms_confirm / ms_settle / ms_total** | -Default path: +Default path (`build_ladder`, strictly increasing): ```text [fixed] GOA:0 -[low] random pick in each LADDER_RANGES band (atomic … ~2e6) -[high] LADDER_HIGH_RUNGS random *ranges* log-uniform in [HIGH_FROM, max) - (range bounds drawn randomly each run — not fixed 1e7/1e8/…) +[random] (LADDER_STEPS − 2) log-uniform amounts in (ε, max) [fixed] GOA:4503599627370496 (LADDER_MAX_AMOUNT) ``` +TSV column `range`: `pin:0` | `random` | `pin:max` (no legacy `LADDER_RANGES`). + | Env | Default | Meaning | |-----|---------|---------| -| `LADDER_INCLUDE_ZERO` | `1` | first rung **0** (fixed) | -| `LADDER_INCLUDE_MAX` | `1` | last rung **max** (fixed) | -| `LADDER_MAX_AMOUNT` | `4503599627370496` | absolute pin | -| `LADDER_HIGH_FROM` | `1000000` | high random zone starts | -| `LADDER_HIGH_RUNGS` | `12` | # random high ranges | +| `LADDER_STEPS` | `23` | total rungs (0 + mids + max) | +| `LADDER_MAX_AMOUNT` | `4503599627370496` | absolute last pin | | `LADDER_TIMEOUT_S` | `3600` | large rungs need time | +| `LADDER_MAX_RUNGS` | `99` | cap list length after build | ```bash ./taler-monitoring.sh ladder -LADDER_HIGH_RUNGS=20 ./taler-monitoring.sh ladder -LADDER_INCLUDE_ZERO=0 LADDER_INCLUDE_MAX=0 ./taler-monitoring.sh ladder +LADDER_STEPS=10 ./taler-monitoring.sh ladder LADDER_REPORT_DIR=/tmp/my-ladder ./taler-monitoring.sh ladder ``` diff --git a/scripts/taler-monitoring/check_goa_ladder.sh b/scripts/taler-monitoring/check_goa_ladder.sh index 59fe37a..e92aab9 100755 --- a/scripts/taler-monitoring/check_goa_ladder.sh +++ b/scripts/taler-monitoring/check_goa_ladder.sh @@ -207,8 +207,10 @@ LADDER_LIST=$(build_ladder) # shellcheck disable=SC2086 set -- $LADDER_LIST if [ "$#" -gt "$LADDER_MAX_RUNGS" ]; then + # shellcheck disable=SC2046 set -- $(printf '%s\n' "$@" | head -n "$LADDER_MAX_RUNGS") fi +LADDER_N=$# info "ladder plan" "$*" printf '%s\n' "$@" >"$SCRATCH/ladder-plan.txt" @@ -229,7 +231,14 @@ for AMT in "$@"; do section "ladder · rung $rung $AMT" tag=$(printf '%s' "$AMT" | tr '.:' '__') - range_note=$(printf '%s' "$LADDER_RANGES" | awk -v n="$rung" '{print $n}') + # TSV "range" column: fixed pins at ends, random mids (no legacy LADDER_RANGES) + if [ "$rung" -eq 1 ]; then + range_note="pin:0" + elif [ "$rung" -eq "$LADDER_N" ]; then + range_note="pin:max" + else + range_note="random" + fi t_rung=$(now_ms) ms_mint=0 ms_accept=0 ms_confirm=0 ms_settle=0 note="" diff --git a/scripts/taler-monitoring/taler-monitoring.sh b/scripts/taler-monitoring/taler-monitoring.sh index 30b8c30..063afc1 100755 --- a/scripts/taler-monitoring/taler-monitoring.sh +++ b/scripts/taler-monitoring/taler-monitoring.sh @@ -134,10 +134,24 @@ export EXPECT_CURRENCY SKIP_SSH LOCAL_STACK TALER_DOMAIN_PROBE export WITHDRAW_AMT PAY_AMT CREDIT_AMT MERCHANT_INSTANCE export E2E_FAKE_INCOMING E2E_REMOTE E2E_VARIABLE E2E_ATM_MAX export E2E_WITHDRAW_VALUES E2E_PAY_VALUES -export LADDER_RANGES LADDER_MAX_RUNGS LADDER_TIMEOUT_S LADDER_REPORT_DIR +# Ladder: 0 + random mids + max (see check_goa_ladder.sh build_ladder). No LADDER_RANGES. +# Defaults so set -u export is safe when vars were never set by caller. +: "${LADDER_STEPS:=23}" +: "${LADDER_MAX_RUNGS:=99}" +: "${LADDER_TIMEOUT_S:=3600}" +: "${LADDER_REPORT_DIR:=}" +: "${LADDER_SETTLE_ROUNDS:=18}" +: "${LADDER_SETTLE_SLEEP:=2}" +: "${LADDER_MAX_AMOUNT:=4503599627370496}" +: "${LADDER_INCLUDE_ZERO:=1}" +: "${LADDER_INCLUDE_MAX:=1}" +: "${LADDER_HIGH_FROM:=1000000}" +: "${LADDER_HIGH_RUNGS:=12}" +: "${LADDER_LOAD:=1}" +export LADDER_STEPS LADDER_MAX_RUNGS LADDER_TIMEOUT_S LADDER_REPORT_DIR export LADDER_SETTLE_ROUNDS LADDER_SETTLE_SLEEP EXP_PW_FILE EXP_USER export LADDER_MAX_AMOUNT LADDER_INCLUDE_ZERO LADDER_INCLUDE_MAX -export LADDER_HIGH_FROM LADDER_HIGH_RUNGS +export LADDER_HIGH_FROM LADDER_HIGH_RUNGS LADDER_LOAD export TALER_DOMAIN_APPLIED=1 # Default phases