mirror of
https://github.com/kuhyx/signal-bot.git
synced 2026-11-10 20:27:17 +01:00
!dodaj is unwired: register_add_command is no longer called, its aliases
are gone from aliases.json, and the word is an unknown one like any
other -- answered with "Nie znam !dodaj", storing nothing. The ingest
path itself (pack_add, pack_ingest, pack_store, the stripper) stays,
tested at 100%, because the approval queue that replaces the direct
write will reuse every piece of it: !dodaj lands in pending/, and the
tagger view gets approve / reject.
The eight e2e scenarios that proved the direct write, the media
generation step and prove_the_add_photo_invariants leave with it;
64852ae has them for the queue to bring back in their new shape. One
scenario takes their place and pins the disabled state.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
63 lines
2.8 KiB
Bash
Executable File
63 lines
2.8 KiB
Bash
Executable File
#!/bin/bash
|
|
|
|
# ============================================================================
|
|
# The assertions scripts/e2e.sh makes after the scenarios have replayed.
|
|
#
|
|
# Split out of e2e.sh at the 250-line cap. A filing change, not an interface
|
|
# change: these are sourced, so they still run against the same fake server
|
|
# and the same bot process the scenarios used.
|
|
# ============================================================================
|
|
|
|
# The gate that did not exist on 2026-08-29, proven against the real process:
|
|
# with signal-cli unable to reach Signal, /healthz must go red rather than
|
|
# keep answering 200 while nothing arrives.
|
|
prove_the_deafness_gate() {
|
|
local health="http://127.0.0.1:${BOT_PORT}/healthz"
|
|
echo "== cutting the fake's connection to Signal"
|
|
curl -sf -X POST "${FAKE_URL}/_control/connection" \
|
|
-H 'Content-Type: application/json' -d '{"alive": false}' >/dev/null
|
|
|
|
local code="" waited=0
|
|
while ((waited < 150)); do
|
|
code="$(curl -s -o /dev/null -w '%{http_code}' "$health")"
|
|
[[ "$code" == "503" ]] && break
|
|
sleep 1
|
|
waited=$((waited + 1))
|
|
done
|
|
[[ "$code" == "503" ]] || die "/healthz still answers ${code} with the connection cut"
|
|
curl -s "$health" | grep -q "Closed unexpectedly" ||
|
|
die "/healthz went red without saying why"
|
|
echo "== /healthz turned 503 and named the reason after ${waited}s"
|
|
|
|
echo "== restoring the connection"
|
|
curl -sf -X POST "${FAKE_URL}/_control/connection" \
|
|
-H 'Content-Type: application/json' -d '{"alive": true}' >/dev/null
|
|
waited=0
|
|
while ((waited < 150)); do
|
|
code="$(curl -s -o /dev/null -w '%{http_code}' "$health")"
|
|
[[ "$code" == "200" ]] && break
|
|
sleep 1
|
|
waited=$((waited + 1))
|
|
done
|
|
[[ "$code" == "200" ]] || die "/healthz stayed ${code} after the connection came back"
|
|
echo "== /healthz recovered on its own after ${waited}s"
|
|
}
|
|
|
|
# A budget, not a benchmark. This run was four minutes until the liveness
|
|
# tick became configurable, and nothing announced the cost -- slower is the
|
|
# one regression a green suite never reports. Exceeding it fails the run;
|
|
# whoever exceeded it decides whether the check earned its seconds or the
|
|
# budget moves. E2E_BUDGET_SECONDS raises it for a loaded machine.
|
|
enforce_the_time_budget() {
|
|
local started="$1"
|
|
local budget="${E2E_BUDGET_SECONDS:-40}"
|
|
local elapsed=$(( $(date +%s) - started ))
|
|
echo "== end to end took ${elapsed}s (budget ${budget}s)"
|
|
if ((elapsed > budget)); then
|
|
echo "Error: the offline run took ${elapsed}s, over its ${budget}s budget." >&2
|
|
echo " Either the new check earns its seconds and the budget moves," >&2
|
|
echo " or something got slower and this is the report of it." >&2
|
|
exit 1
|
|
fi
|
|
}
|