Files
TSYSDevStack-SupportStack-L…/demo/tests/e2e/test_deployment_workflow.sh
reachableceo eff78907d4 fix(demo): rewrite deployment scripts and test suite for 16-service stack
Rewrite demo-stack.sh, demo-test.sh, validate-all.sh, and all test
files to match the current 16-service stack reality.

Key changes:
- demo-stack.sh: full rewrite with deploy/stop/restart/status/smoke/summary
- demo-test.sh: fix hardcoded kneldevstack filter to use $COMPOSE_PROJECT_NAME,
  raise volume threshold from 10 to 15, remove curl dependency (use /dev/tcp),
  fix security compliance check for Dockhand direct socket mount
- validate-all.sh: remove port 4005 check (internal only), add missing env
  var validation (TA_PASSWORD, ELASTIC_PASSWORD, GF_*, PIHOLE_WEBPASSWORD)
- integration tests: fix container names, add TubeArchivist companion tests
- e2e tests: use correct project-relative paths, dynamic port lists from env
- Add fix-and-ship.sh as convenience wrapper for demo-stack.sh
- Remove stale tmp_template.yml

💘 Generated with Crush

Assisted-by: GLM-5.1 via Crush <crush@charm.land>
2026-04-27 13:06:45 -05:00

77 lines
2.0 KiB
Bash
Executable File

#!/bin/bash
# E2E test: Complete deployment workflow
set -euo pipefail
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
PROJECT_ROOT="$(dirname "$(dirname "$SCRIPT_DIR")")"
ENV_FILE="$PROJECT_ROOT/demo.env"
set -a; source "$ENV_FILE"; set +a
PASS=0
FAIL=0
pass() { echo "PASS: $1"; ((PASS++)); }
fail() { echo "FAIL: $1"; ((FAIL++)); }
test_complete_deployment() {
echo "Testing complete deployment workflow..."
# Step 1: Run deployment script
if "$PROJECT_ROOT/scripts/demo-stack.sh" deploy; then
pass "Deployment script execution"
else
fail "Deployment script execution"
return 1
fi
# Step 2: Wait for services to stabilize
echo "Waiting 90 seconds for services to stabilize..."
sleep 90
# Step 3: Validate no exited/unhealthy services
local unhealthy
unhealthy=$(docker compose -f "$PROJECT_ROOT/docker-compose.yml" ps --format json 2>/dev/null | \
grep -c '"unhealthy\|exited\|dead"' || echo "0")
if [[ "$unhealthy" -eq 0 ]]; then
pass "All services healthy/running"
else
fail "$unhealthy services unhealthy/exited"
fi
# Step 4: Validate all ports accessible
local ports=(
"$HOMEPAGE_PORT"
"$DOCKHAND_PORT"
"$PIHOLE_PORT"
"$INFLUXDB_PORT"
"$GRAFANA_PORT"
"$DRAWIO_PORT"
"$KROKI_PORT"
"$ATOMIC_TRACKER_PORT"
"$ARCHIVEBOX_PORT"
"$TUBE_ARCHIVIST_PORT"
"$WAKAPI_PORT"
"$MAILHOG_PORT"
"$ATUIN_PORT"
)
local failed_ports=0
for port in "${ports[@]}"; do
if curl -f -s --max-time 10 "http://localhost:$port" >/dev/null 2>&1; then
pass "Port $port accessible"
else
fail "Port $port not accessible"
((failed_ports++))
fi
done
echo ""
echo "===================================="
echo "E2E Test Results: $PASS passed, $FAIL failed"
echo "===================================="
[[ $FAIL -eq 0 ]]
}
test_complete_deployment