feat(orchestrator): complete container migration and release hardening
This commit is contained in:
84
tests/lifecycle/bats/required-stack.bats
Normal file
84
tests/lifecycle/bats/required-stack.bats
Normal file
@@ -0,0 +1,84 @@
|
||||
#!/usr/bin/env bats
|
||||
# tests/lifecycle/bats/required-stack.bats
|
||||
#
|
||||
# Read-only release-gate checks for the required Bitcoin stack on .116.
|
||||
#
|
||||
# This suite is intentionally non-destructive and does not use RPC auth;
|
||||
# it can run anytime as a health gate during long sync/reindex windows.
|
||||
|
||||
required_containers=(
|
||||
"bitcoin-knots"
|
||||
"electrumx"
|
||||
"lnd"
|
||||
"mempool-api"
|
||||
"mempool"
|
||||
"archy-bitcoin-ui"
|
||||
"archy-lnd-ui"
|
||||
"archy-electrs-ui"
|
||||
)
|
||||
|
||||
podman_names() {
|
||||
podman ps --format '{{.Names}}'
|
||||
}
|
||||
|
||||
container_running() {
|
||||
local name="$1"
|
||||
podman inspect --format '{{.State.Running}}' "$name" 2>/dev/null
|
||||
}
|
||||
|
||||
@test "required containers are present" {
|
||||
local names
|
||||
names="$(podman_names)"
|
||||
for c in "${required_containers[@]}"; do
|
||||
echo "$names" | grep -Fx "$c" >/dev/null
|
||||
done
|
||||
}
|
||||
|
||||
@test "required containers are running" {
|
||||
for c in "${required_containers[@]}"; do
|
||||
run container_running "$c"
|
||||
[ "$status" -eq 0 ]
|
||||
[ "$output" = "true" ]
|
||||
done
|
||||
}
|
||||
|
||||
@test "bitcoin-knots RPC responds" {
|
||||
run sh -lc 'podman exec bitcoin-knots bitcoin-cli -rpcuser=archipelago -rpcpassword="$(cat /var/lib/archipelago/secrets/bitcoin-rpc-password)" getblockchaininfo'
|
||||
[ "$status" -eq 0 ]
|
||||
echo "$output" | jq -e '.chain == "main" and (.blocks >= 0)' >/dev/null
|
||||
}
|
||||
|
||||
@test "electrumx TCP port accepts connections" {
|
||||
run python3 - <<'PY'
|
||||
import socket
|
||||
s = socket.create_connection(("127.0.0.1", 50001), 3)
|
||||
s.close()
|
||||
print("ok")
|
||||
PY
|
||||
[ "$status" -eq 0 ]
|
||||
}
|
||||
|
||||
@test "lnd CLI getinfo succeeds" {
|
||||
run sh -lc 'podman exec lnd lncli --tlscertpath /root/.lnd/tls.cert --macaroonpath /root/.lnd/data/chain/bitcoin/mainnet/readonly.macaroon --rpcserver localhost:10009 getinfo >/dev/null'
|
||||
[ "$status" -eq 0 ]
|
||||
}
|
||||
|
||||
@test "mempool api endpoint responds" {
|
||||
run curl -fsS "http://127.0.0.1:8999/api/v1/backend-info"
|
||||
[ "$status" -eq 0 ]
|
||||
}
|
||||
|
||||
@test "mempool frontend responds" {
|
||||
run curl -fsS "http://127.0.0.1:4080/"
|
||||
[ "$status" -eq 0 ]
|
||||
}
|
||||
|
||||
@test "bitcoin ui responds" {
|
||||
run curl -fsS "http://127.0.0.1:8334/"
|
||||
[ "$status" -eq 0 ]
|
||||
}
|
||||
|
||||
@test "lnd ui responds" {
|
||||
run curl -fsS "http://127.0.0.1:8081/"
|
||||
[ "$status" -eq 0 ]
|
||||
}
|
||||
Reference in New Issue
Block a user