Files
attune/scripts/stop-e2e-services.sh
2026-02-04 17:46:30 -06:00

75 lines
2.0 KiB
Bash
Executable File

#!/bin/bash
set -e
# Colors for output
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
NC='\033[0m' # No Color
# Configuration
PID_DIR="./tests/pids"
echo -e "${GREEN}=== Stopping Attune E2E Services ===${NC}\n"
# Function to stop a service
stop_service() {
local service_name=$1
local pid_file="$PID_DIR/$service_name.pid"
if [ -f "$pid_file" ]; then
local pid=$(cat "$pid_file")
if ps -p $pid > /dev/null 2>&1; then
echo -e "${YELLOW}${NC} Stopping $service_name (PID: $pid)..."
kill $pid 2>/dev/null || true
# Wait up to 5 seconds for graceful shutdown
local count=0
while ps -p $pid > /dev/null 2>&1 && [ $count -lt 5 ]; do
sleep 1
count=$((count + 1))
done
# Force kill if still running
if ps -p $pid > /dev/null 2>&1; then
echo -e "${YELLOW}!${NC} Forcefully killing $service_name..."
kill -9 $pid 2>/dev/null || true
sleep 1
fi
echo -e "${GREEN}${NC} $service_name stopped"
else
echo -e "${YELLOW}!${NC} $service_name PID file exists but process not running"
fi
rm -f "$pid_file"
else
echo -e "${YELLOW}!${NC} No PID file found for $service_name"
fi
}
# Check if any services are running
if [ ! -d "$PID_DIR" ] || [ -z "$(ls -A $PID_DIR 2>/dev/null)" ]; then
echo -e "${YELLOW}No E2E services appear to be running${NC}"
exit 0
fi
# Stop services in reverse order
echo -e "${YELLOW}Stopping services...${NC}\n"
# Stop in reverse dependency order
stop_service "notifier"
stop_service "sensor"
stop_service "worker"
stop_service "executor"
stop_service "api"
echo -e "\n${GREEN}=== All E2E Services Stopped ===${NC}\n"
# Clean up PID directory if empty
if [ -d "$PID_DIR" ] && [ -z "$(ls -A $PID_DIR)" ]; then
rmdir "$PID_DIR" 2>/dev/null || true
fi
echo -e "To restart services:"
echo -e " ${YELLOW}./scripts/start-e2e-services.sh${NC}\n"