Initial commit: loc_az_hci (smom-dbis-138 excluded via .gitignore)
Some checks failed
Test / test (push) Has been cancelled
Some checks failed
Test / test (push) Has been cancelled
Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
206
tests/e2e/test-full-stack.sh
Executable file
206
tests/e2e/test-full-stack.sh
Executable file
@@ -0,0 +1,206 @@
|
||||
#!/bin/bash
|
||||
# End-to-End Full Stack Test
|
||||
# Tests the complete infrastructure stack
|
||||
|
||||
set -e
|
||||
|
||||
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
||||
PROJECT_ROOT="$(cd "$SCRIPT_DIR/../.." && pwd)"
|
||||
|
||||
# Colors
|
||||
RED='\033[0;31m'
|
||||
GREEN='\033[0;32m'
|
||||
YELLOW='\033[1;33m'
|
||||
BLUE='\033[0;34m'
|
||||
NC='\033[0m'
|
||||
|
||||
log_info() {
|
||||
echo -e "${GREEN}[INFO]${NC} $1"
|
||||
}
|
||||
|
||||
log_warn() {
|
||||
echo -e "${YELLOW}[WARN]${NC} $1"
|
||||
}
|
||||
|
||||
log_error() {
|
||||
echo -e "${RED}[ERROR]${NC} $1"
|
||||
}
|
||||
|
||||
log_test() {
|
||||
echo -e "${BLUE}[TEST]${NC} $1"
|
||||
}
|
||||
|
||||
test_proxmox() {
|
||||
log_test "Testing Proxmox cluster..."
|
||||
|
||||
if [ -f "$PROJECT_ROOT/scripts/utils/test-proxmox-connection.sh" ]; then
|
||||
if "$PROJECT_ROOT/scripts/utils/test-proxmox-connection.sh" > /dev/null 2>&1; then
|
||||
log_info "✓ Proxmox cluster accessible"
|
||||
return 0
|
||||
else
|
||||
log_error "✗ Proxmox cluster not accessible"
|
||||
return 1
|
||||
fi
|
||||
else
|
||||
log_warn "⚠ Proxmox test script not found"
|
||||
return 1
|
||||
fi
|
||||
}
|
||||
|
||||
test_azure_arc() {
|
||||
log_test "Testing Azure Arc connectivity..."
|
||||
|
||||
# Check if Azure CLI is available
|
||||
if ! command -v az &> /dev/null; then
|
||||
log_warn "⚠ Azure CLI not found, skipping Azure Arc test"
|
||||
return 0
|
||||
fi
|
||||
|
||||
# Check if logged in
|
||||
if az account show &> /dev/null; then
|
||||
log_info "✓ Azure CLI authenticated"
|
||||
|
||||
# Try to list Arc resources
|
||||
if az connectedmachine list --resource-group HC-Stack &> /dev/null 2>&1; then
|
||||
log_info "✓ Azure Arc resources accessible"
|
||||
return 0
|
||||
else
|
||||
log_warn "⚠ Azure Arc resources not found (may not be deployed)"
|
||||
return 0
|
||||
fi
|
||||
else
|
||||
log_warn "⚠ Azure CLI not authenticated"
|
||||
return 0
|
||||
fi
|
||||
}
|
||||
|
||||
test_kubernetes() {
|
||||
log_test "Testing Kubernetes cluster..."
|
||||
|
||||
if ! command -v kubectl &> /dev/null; then
|
||||
log_warn "⚠ kubectl not found, skipping Kubernetes test"
|
||||
return 0
|
||||
fi
|
||||
|
||||
# Check if kubeconfig is set
|
||||
if [ -z "$KUBECONFIG" ] && [ ! -f "$HOME/.kube/config" ]; then
|
||||
log_warn "⚠ KUBECONFIG not set, skipping Kubernetes test"
|
||||
return 0
|
||||
fi
|
||||
|
||||
if kubectl get nodes &> /dev/null 2>&1; then
|
||||
log_info "✓ Kubernetes cluster accessible"
|
||||
local node_count=$(kubectl get nodes --no-headers 2>/dev/null | wc -l)
|
||||
log_info " Nodes: $node_count"
|
||||
return 0
|
||||
else
|
||||
log_error "✗ Kubernetes cluster not accessible"
|
||||
return 1
|
||||
fi
|
||||
}
|
||||
|
||||
test_cloudflare() {
|
||||
log_test "Testing Cloudflare Tunnel..."
|
||||
|
||||
if [ -f "$PROJECT_ROOT/scripts/utils/test-cloudflare-connection.sh" ]; then
|
||||
if "$PROJECT_ROOT/scripts/utils/test-cloudflare-connection.sh" > /dev/null 2>&1; then
|
||||
log_info "✓ Cloudflare API accessible"
|
||||
return 0
|
||||
else
|
||||
log_warn "⚠ Cloudflare API not accessible (may not be configured)"
|
||||
return 0
|
||||
fi
|
||||
else
|
||||
log_warn "⚠ Cloudflare test script not found"
|
||||
return 0
|
||||
fi
|
||||
}
|
||||
|
||||
test_network() {
|
||||
log_test "Testing network connectivity..."
|
||||
|
||||
# Test basic connectivity
|
||||
local test_ips=("192.168.1.206" "192.168.1.49")
|
||||
local all_reachable=true
|
||||
|
||||
for ip in "${test_ips[@]}"; do
|
||||
if ping -c 1 -W 2 "$ip" &> /dev/null; then
|
||||
log_info "✓ $ip is reachable"
|
||||
else
|
||||
log_warn "⚠ $ip is not reachable"
|
||||
all_reachable=false
|
||||
fi
|
||||
done
|
||||
|
||||
if [ "$all_reachable" = true ]; then
|
||||
return 0
|
||||
else
|
||||
return 1
|
||||
fi
|
||||
}
|
||||
|
||||
test_services() {
|
||||
log_test "Testing HC Stack services..."
|
||||
|
||||
if ! command -v kubectl &> /dev/null; then
|
||||
log_warn "⚠ kubectl not found, skipping service tests"
|
||||
return 0
|
||||
fi
|
||||
|
||||
local services=("besu" "firefly" "chainlink-ccip" "blockscout" "cacti" "nginx-proxy")
|
||||
local found=0
|
||||
|
||||
for service in "${services[@]}"; do
|
||||
if kubectl get deployment "$service" --all-namespaces &> /dev/null 2>&1; then
|
||||
log_info "✓ $service is deployed"
|
||||
found=$((found + 1))
|
||||
fi
|
||||
done
|
||||
|
||||
if [ $found -eq 0 ]; then
|
||||
log_warn "⚠ No HC Stack services found (may not be deployed)"
|
||||
else
|
||||
log_info " Found $found service(s)"
|
||||
fi
|
||||
|
||||
return 0
|
||||
}
|
||||
|
||||
main() {
|
||||
echo "========================================="
|
||||
echo "Full Stack End-to-End Test"
|
||||
echo "========================================="
|
||||
echo ""
|
||||
|
||||
local tests_passed=0
|
||||
local tests_failed=0
|
||||
local tests_skipped=0
|
||||
|
||||
# Run tests
|
||||
test_proxmox && tests_passed=$((tests_passed + 1)) || tests_failed=$((tests_failed + 1))
|
||||
test_azure_arc && tests_passed=$((tests_passed + 1)) || tests_skipped=$((tests_skipped + 1))
|
||||
test_kubernetes && tests_passed=$((tests_passed + 1)) || tests_failed=$((tests_failed + 1))
|
||||
test_cloudflare && tests_passed=$((tests_passed + 1)) || tests_skipped=$((tests_skipped + 1))
|
||||
test_network && tests_passed=$((tests_passed + 1)) || tests_failed=$((tests_failed + 1))
|
||||
test_services && tests_passed=$((tests_passed + 1)) || tests_skipped=$((tests_skipped + 1))
|
||||
|
||||
echo ""
|
||||
echo "========================================="
|
||||
echo "Test Summary"
|
||||
echo "========================================="
|
||||
log_info "Passed: $tests_passed"
|
||||
log_warn "Skipped: $tests_skipped"
|
||||
log_error "Failed: $tests_failed"
|
||||
echo ""
|
||||
|
||||
if [ $tests_failed -eq 0 ]; then
|
||||
log_info "✓ All critical tests passed"
|
||||
exit 0
|
||||
else
|
||||
log_error "✗ Some tests failed"
|
||||
exit 1
|
||||
fi
|
||||
}
|
||||
|
||||
main "$@"
|
||||
|
||||
Reference in New Issue
Block a user