Skip to content

Commit 0db11a3

Browse files
mreuvekampclaude
andcommitted
fix(demo): lever aan op /aanleveringen, en geef assert 3 een venster dat meet
Beide federatie-smokes leverden aan op `POST /api/v1/berichten`. Sinds #203 heeft aanleveren een eigen resource (`POST /api/v1/aanleveringen`) en bestaat op `/berichten` alleen nog `GET`, dus het magazijn antwoordde 405. De notificatie-smoke kon in deze samenstelling nooit groen zijn; `smoke-keten.sh` is daarmee al rood op main. Assert 3 van de notificatie-smoke wachtte `PUBLICATIE_INTERVAL` (5s) op een tweede aflevering, terwijl een retry alleen door de outbox-poller kan komen en die op 60s staat. De tweede aflevering viel per constructie buiten het venster: de assert was structureel groen, ook als het magazijn wél in de retry-lus zat. Het venster hangt nu aan een volle outbox-ronde. Verder: de gegenereerde test-BSN begint op 9 (RvIG-testbereik, dus nooit een uitgegeven nummer) en gaat via stdin de curl in in plaats van op de commandoregel, waar hij voor elke gebruiker op de machine in `ps` zichtbaar is. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
1 parent bd54385 commit 0db11a3

2 files changed

Lines changed: 27 additions & 14 deletions

File tree

demo/environment/federatie/smoke-keten.sh

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -82,10 +82,13 @@ command -v curl >/dev/null 2>&1 || { echo "FAIL: 'curl' is vereist." >&2; exit 1
8282
MERK="ketensmoke-$$-$(od -An -N4 -tu4 < /dev/urandom | tr -d ' ')"
8383

8484
aanleveren() { # <magazijn-basis-url> <onderwerp>
85-
curl -sS -o /dev/null -w '%{http_code}' --noproxy '*' --max-time 20 \
86-
-X POST "$1/berichten" -H 'Content-Type: application/json' \
87-
-d "{\"afzender\":\"${AFZENDER_OIN}\",\"ontvanger\":{\"type\":\"BSN\",\"waarde\":\"${BSN}\"},\"onderwerp\":\"$2\",\"inhoud\":\"$2\"}" \
88-
2>"$ERRLOG"
85+
# De BSN gaat via stdin de curl in en niet als argument: een commandoregel is voor elke gebruiker
86+
# op de machine zichtbaar in `ps`.
87+
printf '%s' \
88+
"{\"afzender\":\"${AFZENDER_OIN}\",\"ontvanger\":{\"type\":\"BSN\",\"waarde\":\"${BSN}\"},\"onderwerp\":\"$2\",\"inhoud\":\"$2\"}" \
89+
| curl -sS -o /dev/null -w '%{http_code}' --noproxy '*' --max-time 20 \
90+
-X POST "$1/aanleveringen" -H 'Content-Type: application/json' \
91+
--data @- 2>"$ERRLOG"
8992
}
9093

9194
# ophalen: vult de sessiecache van de uitvraag uit de magazijnen. Dit is de call die door de outway

demo/environment/federatie/smoke-notificatie.sh

Lines changed: 20 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,11 @@ NOTIFICATIE_UPSTREAM="${NOTIFICATIE_UPSTREAM:-http://127.0.0.1:8084}"
3838
# niemand draait. Vandaar een bovengrens in plaats van een vaste wachttijd.
3939
PUBLICATIE_TIMEOUT="${PUBLICATIE_TIMEOUT:-150}"
4040
PUBLICATIE_INTERVAL="${PUBLICATIE_INTERVAL:-5}"
41+
# Venster van assert 3. Een tweede aflevering kán alleen van de outbox-poller komen, dus dit moet
42+
# over een volle pollronde heen; met het meet-interval van 5s als venster is die assert structureel
43+
# groen, ook als het magazijn wél in de retry-lus zit. Verlagen maakt hem sneller én blind.
44+
OUTBOX_INTERVAL="${OUTBOX_INTERVAL:-60}"
45+
RETRY_VENSTER="${RETRY_VENSTER:-$((OUTBOX_INTERVAL + 10))}"
4146
PROBE_POGINGEN="${PROBE_POGINGEN:-5}"
4247
PROBE_WACHT="${PROBE_WACHT:-3}"
4348

@@ -61,9 +66,10 @@ nieuwe_bsn() {
6166
cijfers=""; som=0
6267

6368
for i in 9 8 7 6 5 4 3 2; do
64-
# Eerste cijfer nooit 0: een BSN met een voorloopnul is negen tekens lang maar wordt door
65-
# sommige parsers als achtcijferig gelezen.
66-
if [ "$i" -eq 9 ]; then c=$((RANDOM % 9 + 1)); else c=$((RANDOM % 10)); fi
69+
# Eerste cijfer vast op 9: RvIG reserveert 9xxxxxxxx voor testnummers, dus een gegenereerde
70+
# BSN kan nooit samenvallen met een uitgegeven nummer. Meteen ook geen voorloopnul, die een
71+
# negencijferige BSN door sommige parsers als achtcijferig laat lezen.
72+
if [ "$i" -eq 9 ]; then c=9; else c=$((RANDOM % 10)); fi
6773
cijfers="${cijfers}${c}"
6874
som=$((som + c * i))
6975
done
@@ -210,10 +216,13 @@ fi
210216
# --- 1. Data-pad --------------------------------------------------------------------------------
211217
echo "== 1. de CloudEvent van magazijn ${PUSHER} komt bij de stub aan =="
212218
AANTAL=0
213-
CODE="$(curl -sS -o /dev/null -w '%{http_code}' --noproxy '*' --max-time 20 \
214-
-X POST "${MAGAZIJN_A_DIRECT}/berichten" -H 'Content-Type: application/json' \
215-
-d "{\"afzender\":\"${PUSHER_OIN}\",\"ontvanger\":{\"type\":\"BSN\",\"waarde\":\"${BSN}\"},\"onderwerp\":\"${MERK}\",\"inhoud\":\"${MERK}\"}" \
216-
2>"$ERRLOG" || true)"
219+
# De BSN gaat via stdin de curl in en niet als argument: een commandoregel is voor elke gebruiker
220+
# op de machine zichtbaar in `ps`.
221+
CODE="$(printf '%s' \
222+
"{\"afzender\":\"${PUSHER_OIN}\",\"ontvanger\":{\"type\":\"BSN\",\"waarde\":\"${BSN}\"},\"onderwerp\":\"${MERK}\",\"inhoud\":\"${MERK}\"}" \
223+
| curl -sS -o /dev/null -w '%{http_code}' --noproxy '*' --max-time 20 \
224+
-X POST "${MAGAZIJN_A_DIRECT}/aanleveringen" -H 'Content-Type: application/json' \
225+
--data @- 2>"$ERRLOG" || true)"
217226

218227
if [ "$CODE" != "201" ] && [ "$CODE" != "200" ]; then
219228
fout "aanleveren bij ${PUSHER} gaf HTTP ${CODE:-<geen>}: $(fsc_last_error) — draait de demo-stack?"
@@ -276,10 +285,11 @@ fi
276285
echo "== 3. één aflevering, geen retry-stapeling =="
277286
# Opnieuw tellen, en niet leunen op de stand uit assert 1. Die lus brak af zodra er íets binnen was,
278287
# dus dat getal is de momentopname van de eerste waarneming — een retry-stapeling landt per definitie
279-
# daarná en zou onzichtbaar blijven. Eerst een venster laten verstrijken dat ruim genoeg is voor de
280-
# eerste herhaling (backoff begint op een seconde).
288+
# daarná en zou onzichtbaar blijven. De backoff begint weliswaar op een seconde, maar verstuurd
289+
# wordt er pas in de volgende pollronde van de outbox: het venster hangt dus aan die ronde.
281290
if [ "$AANTAL" -ge 1 ]; then
282-
sleep "$PUBLICATIE_INTERVAL"
291+
echo " ${RETRY_VENSTER}s wachten op een eventuele tweede aflevering (één outbox-ronde)..."
292+
sleep "$RETRY_VENSTER"
283293
AANTAL="$(tel_afleveringen || true)"
284294
[ -n "$AANTAL" ] || AANTAL=0
285295
fi

0 commit comments

Comments
 (0)