#!/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