mirror of
https://github.com/uprightbass360/AzerothCore-RealmMaster.git
synced 2026-01-17 02:40:29 +00:00
adding module functionality and final setup
This commit is contained in:
225
scripts/test-local-worldserver.sh
Executable file
225
scripts/test-local-worldserver.sh
Executable file
@@ -0,0 +1,225 @@
|
||||
#!/bin/bash
|
||||
|
||||
# ==============================================
|
||||
# TEST LOCAL WORLDSERVER DEPLOYMENT SCRIPT
|
||||
# ==============================================
|
||||
# This script tests worldserver performance with local game files
|
||||
# vs. external volume mount
|
||||
|
||||
set -e # Exit on any error
|
||||
|
||||
# Colors for output
|
||||
RED='\033[0;31m'
|
||||
GREEN='\033[0;32m'
|
||||
YELLOW='\033[1;33m'
|
||||
BLUE='\033[0;34m'
|
||||
MAGENTA='\033[0;35m'
|
||||
NC='\033[0m' # No Color
|
||||
|
||||
# Function to print colored output
|
||||
print_status() {
|
||||
local status=$1
|
||||
local message=$2
|
||||
case $status in
|
||||
"INFO")
|
||||
echo -e "${BLUE}ℹ️ ${message}${NC}"
|
||||
;;
|
||||
"SUCCESS")
|
||||
echo -e "${GREEN}✅ ${message}${NC}"
|
||||
;;
|
||||
"WARNING")
|
||||
echo -e "${YELLOW}⚠️ ${message}${NC}"
|
||||
;;
|
||||
"ERROR")
|
||||
echo -e "${RED}❌ ${message}${NC}"
|
||||
;;
|
||||
"HEADER")
|
||||
echo -e "\n${MAGENTA}=== ${message} ===${NC}"
|
||||
;;
|
||||
"TEST")
|
||||
echo -e "${YELLOW}🧪 ${message}${NC}"
|
||||
;;
|
||||
esac
|
||||
}
|
||||
|
||||
# Parse command line arguments
|
||||
CLEANUP=false
|
||||
LOGS=false
|
||||
|
||||
while [[ $# -gt 0 ]]; do
|
||||
case $1 in
|
||||
--cleanup)
|
||||
CLEANUP=true
|
||||
shift
|
||||
;;
|
||||
--logs)
|
||||
LOGS=true
|
||||
shift
|
||||
;;
|
||||
-h|--help)
|
||||
echo "Test Local Worldserver Deployment Script"
|
||||
echo ""
|
||||
echo "Usage: $0 [OPTIONS]"
|
||||
echo ""
|
||||
echo "OPTIONS:"
|
||||
echo " --cleanup Stop and remove test worldserver"
|
||||
echo " --logs Follow test worldserver logs"
|
||||
echo " --help Show this help message"
|
||||
echo ""
|
||||
echo "EXAMPLES:"
|
||||
echo " $0 # Deploy test worldserver"
|
||||
echo " $0 --logs # Follow logs of running test"
|
||||
echo " $0 --cleanup # Clean up test deployment"
|
||||
exit 0
|
||||
;;
|
||||
*)
|
||||
echo "Unknown option $1"
|
||||
echo "Use --help for usage information"
|
||||
exit 1
|
||||
;;
|
||||
esac
|
||||
done
|
||||
|
||||
# Change to parent directory for compose commands
|
||||
cd "$(dirname "$0")/.."
|
||||
|
||||
if [ "$CLEANUP" = true ]; then
|
||||
print_status "HEADER" "CLEANING UP TEST WORLDSERVER"
|
||||
|
||||
print_status "INFO" "Stopping test worldserver..."
|
||||
docker-compose --env-file docker-compose-test-worldserver.env -f docker-compose-test-worldserver.yml down
|
||||
|
||||
print_status "INFO" "Removing test container if exists..."
|
||||
docker rm -f ac-worldserver-test 2>/dev/null || true
|
||||
|
||||
print_status "SUCCESS" "Test cleanup completed"
|
||||
exit 0
|
||||
fi
|
||||
|
||||
if [ "$LOGS" = true ]; then
|
||||
print_status "HEADER" "FOLLOWING TEST WORLDSERVER LOGS"
|
||||
docker logs ac-worldserver-test -f
|
||||
exit 0
|
||||
fi
|
||||
|
||||
# Main deployment
|
||||
print_status "HEADER" "DEPLOYING TEST WORLDSERVER WITH LOCAL GAME FILES"
|
||||
|
||||
# Check if docker is available
|
||||
if ! command -v docker &> /dev/null; then
|
||||
print_status "ERROR" "Docker is not installed or not in PATH"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Check if main database is running
|
||||
if ! docker ps | grep ac-mysql > /dev/null; then
|
||||
print_status "ERROR" "Main database (ac-mysql) is not running"
|
||||
print_status "INFO" "Please start the database layer first:"
|
||||
print_status "INFO" " docker-compose --env-file docker-compose-azerothcore-database.env -f docker-compose-azerothcore-database.yml up -d"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Check if authserver is running
|
||||
if ! docker ps | grep ac-authserver > /dev/null; then
|
||||
print_status "ERROR" "Auth server (ac-authserver) is not running"
|
||||
print_status "INFO" "Please start the services layer first (or at least authserver):"
|
||||
print_status "INFO" " docker-compose --env-file docker-compose-azerothcore-services.env -f docker-compose-azerothcore-services.yml up -d ac-authserver"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Check if regular worldserver is running (warn about port conflicts)
|
||||
if docker ps | grep ac-worldserver | grep -v test > /dev/null; then
|
||||
print_status "WARNING" "Regular worldserver is running - test uses different ports"
|
||||
print_status "INFO" "Test worldserver ports: 8216 (world), 7779 (SOAP)"
|
||||
print_status "INFO" "Regular worldserver ports: 8215 (world), 7778 (SOAP)"
|
||||
fi
|
||||
|
||||
print_status "INFO" "Prerequisites check passed"
|
||||
|
||||
# Check for cached files
|
||||
if [ -f "storage/azerothcore/cache-test/client-data-version.txt" ]; then
|
||||
CACHED_VERSION=$(cat storage/azerothcore/cache-test/client-data-version.txt 2>/dev/null)
|
||||
print_status "INFO" "Found cached game files (version: $CACHED_VERSION)"
|
||||
print_status "SUCCESS" "No internet download needed - using cached files!"
|
||||
print_status "INFO" "Expected startup time: 5-10 minutes (extraction only)"
|
||||
else
|
||||
print_status "WARNING" "No cached files found - will download ~15GB from internet"
|
||||
print_status "INFO" "Expected startup time: 20-30 minutes (download + extraction)"
|
||||
fi
|
||||
|
||||
# Start test worldserver
|
||||
print_status "TEST" "Starting test worldserver with cached local game files..."
|
||||
print_status "INFO" "Cache location: storage/azerothcore/cache-test/"
|
||||
print_status "INFO" "Game files will be copied to local container storage for performance testing"
|
||||
print_status "INFO" "Test worldserver will be available on port 8216"
|
||||
|
||||
# Record start time
|
||||
START_TIME=$(date +%s)
|
||||
print_status "INFO" "Deployment started at: $(date)"
|
||||
|
||||
# Start the test container
|
||||
docker-compose --env-file docker-compose-test-worldserver.env -f docker-compose-test-worldserver.yml up -d
|
||||
|
||||
print_status "SUCCESS" "Test worldserver container started"
|
||||
print_status "INFO" "Container name: ac-worldserver-test"
|
||||
|
||||
print_status "HEADER" "MONITORING TEST DEPLOYMENT"
|
||||
|
||||
print_status "INFO" "Following logs for the first few minutes..."
|
||||
print_status "INFO" "Press Ctrl+C to stop following logs (container will continue running)"
|
||||
print_status "INFO" ""
|
||||
print_status "TEST" "=== LIVE LOG OUTPUT ==="
|
||||
|
||||
# Follow logs for a bit
|
||||
timeout 300 docker logs ac-worldserver-test -f 2>/dev/null || true
|
||||
|
||||
print_status "INFO" ""
|
||||
print_status "HEADER" "TEST DEPLOYMENT STATUS"
|
||||
|
||||
# Check if container is still running
|
||||
if docker ps | grep ac-worldserver-test > /dev/null; then
|
||||
print_status "SUCCESS" "Test container is running"
|
||||
|
||||
# Calculate elapsed time
|
||||
CURRENT_TIME=$(date +%s)
|
||||
ELAPSED=$((CURRENT_TIME - START_TIME))
|
||||
ELAPSED_MIN=$((ELAPSED / 60))
|
||||
|
||||
print_status "INFO" "Elapsed time: ${ELAPSED_MIN} minutes"
|
||||
print_status "INFO" "Container status: $(docker ps --format '{{.Status}}' --filter name=ac-worldserver-test)"
|
||||
|
||||
print_status "HEADER" "USEFUL COMMANDS"
|
||||
echo -e "${BLUE}Monitor logs:${NC}"
|
||||
echo " $0 --logs"
|
||||
echo " docker logs ac-worldserver-test -f"
|
||||
echo ""
|
||||
echo -e "${BLUE}Check container status:${NC}"
|
||||
echo " docker ps | grep test"
|
||||
echo " docker exec ac-worldserver-test ps aux | grep worldserver"
|
||||
echo ""
|
||||
echo -e "${BLUE}Check game data (local in container):${NC}"
|
||||
echo " docker exec ac-worldserver-test ls -la /azerothcore/data/"
|
||||
echo " docker exec ac-worldserver-test du -sh /azerothcore/data/*"
|
||||
echo ""
|
||||
echo -e "${BLUE}Check cached files (persistent):${NC}"
|
||||
echo " ls -la storage/azerothcore/cache-test/"
|
||||
echo " du -sh storage/azerothcore/cache-test/*"
|
||||
echo " cat storage/azerothcore/cache-test/client-data-version.txt"
|
||||
echo ""
|
||||
echo -e "${BLUE}Connect to test server:${NC}"
|
||||
echo " Game Port: localhost:8216"
|
||||
echo " SOAP Port: localhost:7779"
|
||||
echo ""
|
||||
echo -e "${BLUE}Performance comparison:${NC}"
|
||||
echo " docker stats ac-worldserver ac-worldserver-test --no-stream"
|
||||
echo ""
|
||||
echo -e "${BLUE}Cleanup test:${NC}"
|
||||
echo " $0 --cleanup"
|
||||
echo " rm -rf storage/azerothcore/cache-test/ # Remove cache"
|
||||
|
||||
else
|
||||
print_status "ERROR" "Test container has stopped or failed"
|
||||
print_status "INFO" "Check logs for details:"
|
||||
print_status "INFO" " docker logs ac-worldserver-test"
|
||||
exit 1
|
||||
fi
|
||||
Reference in New Issue
Block a user