80 lines
3.4 KiB
Bash
80 lines
3.4 KiB
Bash
|
|
#!/usr/bin/env bash
|
||
|
|
# Full E2E validation for all endpoints (RPC HTTP/WS, block production, optional deployment checks).
|
||
|
|
# Usage: ./scripts/run-full-e2e-validation.sh
|
||
|
|
# Run from a host that can reach public RPC (76.53.10.36 → NPMplus → backends) for passing results.
|
||
|
|
|
||
|
|
set -euo pipefail
|
||
|
|
|
||
|
|
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
||
|
|
PROJECT_ROOT="$(cd "$SCRIPT_DIR/.." && pwd)"
|
||
|
|
cd "$PROJECT_ROOT"
|
||
|
|
|
||
|
|
RED='\033[0;31m'
|
||
|
|
GREEN='\033[0;32m'
|
||
|
|
YELLOW='\033[1;33m'
|
||
|
|
BLUE='\033[0;34m'
|
||
|
|
CYAN='\033[0;36m'
|
||
|
|
NC='\033[0m'
|
||
|
|
|
||
|
|
log_section() { echo -e "\n${CYAN}════════════════════════════════════════════════════════════════${NC}\n${CYAN}$1${NC}\n${CYAN}════════════════════════════════════════════════════════════════${NC}\n"; }
|
||
|
|
|
||
|
|
echo ""
|
||
|
|
log_section "Full E2E validation — all endpoints"
|
||
|
|
echo "Started: $(date -Iseconds 2>/dev/null || date)"
|
||
|
|
echo ""
|
||
|
|
|
||
|
|
# 0. UDM Pro configuration check (port forwarding, DNS, NPMplus)
|
||
|
|
log_section "0. UDM Pro configuration check (before E2E)"
|
||
|
|
if [ -x "$SCRIPT_DIR/check-udm-pro-config-before-e2e.sh" ]; then
|
||
|
|
if "$SCRIPT_DIR/check-udm-pro-config-before-e2e.sh"; then
|
||
|
|
echo -e "${GREEN}✅ UDM Pro config check: PASSED${NC}"
|
||
|
|
else
|
||
|
|
echo -e "${YELLOW}⚠ UDM Pro config check: fix port forwarding or DNS, then re-run.${NC}"
|
||
|
|
fi
|
||
|
|
else
|
||
|
|
echo -e "${YELLOW}⚠ check-udm-pro-config-before-e2e.sh not found; skipping.${NC}"
|
||
|
|
fi
|
||
|
|
|
||
|
|
# 1. Block production + chainlist RPC E2E (HTTP + WebSocket)
|
||
|
|
log_section "1. Block production & chainlist RPC E2E (HTTP + WebSocket)"
|
||
|
|
if [ -x "$SCRIPT_DIR/check-block-production-and-chainlist-e2e.sh" ]; then
|
||
|
|
if "$SCRIPT_DIR/check-block-production-and-chainlist-e2e.sh"; then
|
||
|
|
echo -e "${GREEN}✅ Block production + chainlist E2E: PASSED${NC}"
|
||
|
|
E2E_RPC=0
|
||
|
|
else
|
||
|
|
echo -e "${RED}❌ Block production + chainlist E2E: FAILED (see above)${NC}"
|
||
|
|
E2E_RPC=1
|
||
|
|
fi
|
||
|
|
else
|
||
|
|
echo -e "${YELLOW}⚠ check-block-production-and-chainlist-e2e.sh not found or not executable${NC}"
|
||
|
|
E2E_RPC=2
|
||
|
|
fi
|
||
|
|
|
||
|
|
# 2. Optional: complete validation (prerequisites, deployment, connection) if scripts exist
|
||
|
|
log_section "2. Optional: deployment/prerequisites validation"
|
||
|
|
if [ -f "$SCRIPT_DIR/check-prerequisites.sh" ] && [ -f "$SCRIPT_DIR/validate-ml110-deployment.sh" ] && [ -f "$SCRIPT_DIR/test-connection.sh" ]; then
|
||
|
|
if "$SCRIPT_DIR/complete-validation.sh" 2>/dev/null; then
|
||
|
|
echo -e "${GREEN}✅ Complete validation: PASSED${NC}"
|
||
|
|
else
|
||
|
|
echo -e "${YELLOW}⚠ Complete validation: one or more steps failed${NC}"
|
||
|
|
fi
|
||
|
|
else
|
||
|
|
echo -e "${YELLOW}⚠ Skipped (check-prerequisites.sh / validate-ml110-deployment.sh / test-connection.sh not all in scripts/)${NC}"
|
||
|
|
fi
|
||
|
|
|
||
|
|
# Summary
|
||
|
|
log_section "E2E validation summary"
|
||
|
|
echo "Finished: $(date -Iseconds 2>/dev/null || date)"
|
||
|
|
echo ""
|
||
|
|
if [ "${E2E_RPC:-2}" -eq 0 ]; then
|
||
|
|
echo -e "${GREEN}✅ Full E2E: RPC endpoints passed.${NC}"
|
||
|
|
exit 0
|
||
|
|
elif [ "${E2E_RPC:-2}" -eq 1 ]; then
|
||
|
|
echo -e "${RED}❌ Full E2E: RPC endpoints failed. Run from a host that can reach 76.53.10.36 (UDM Pro → NPMplus).${NC}"
|
||
|
|
echo -e "${YELLOW} Diagnose: ./scripts/diagnose-rpc-response.sh${NC}"
|
||
|
|
exit 1
|
||
|
|
else
|
||
|
|
echo -e "${YELLOW}⚠ Full E2E: RPC script not run.${NC}"
|
||
|
|
exit 2
|
||
|
|
fi
|