97 lines
2.9 KiB
Bash
Executable File
97 lines
2.9 KiB
Bash
Executable File
#!/bin/bash
|
|
# Setup script for test SQL Server environment
|
|
|
|
set -e
|
|
|
|
echo "=========================================="
|
|
echo "SQL Server Test Environment Setup"
|
|
echo "=========================================="
|
|
echo ""
|
|
|
|
# Check if Docker is installed
|
|
if ! command -v docker &> /dev/null; then
|
|
echo "Error: Docker is not installed"
|
|
echo "Please install Docker first: https://docs.docker.com/get-docker/"
|
|
exit 1
|
|
fi
|
|
|
|
# Check if Docker Compose is available (either standalone or plugin)
|
|
if ! command -v docker-compose &> /dev/null && ! docker compose version &> /dev/null; then
|
|
echo "Error: Docker Compose is not installed"
|
|
echo "Please install Docker Compose first"
|
|
exit 1
|
|
fi
|
|
|
|
# Determine which compose command to use
|
|
if docker compose version &> /dev/null; then
|
|
COMPOSE_CMD="docker compose"
|
|
else
|
|
COMPOSE_CMD="docker-compose"
|
|
fi
|
|
|
|
echo "Step 1: Starting SQL Server containers..."
|
|
$COMPOSE_CMD -f docker-compose.test.yml up -d
|
|
|
|
echo ""
|
|
echo "Step 2: Waiting for SQL Server to be ready..."
|
|
echo "This may take 30-60 seconds..."
|
|
|
|
# Set default password if not provided
|
|
SA_PASSWORD=${SA_PASSWORD:-YourStrong!Passw0rd}
|
|
|
|
# Wait for baseline server
|
|
echo -n "Waiting for baseline server"
|
|
for i in {1..30}; do
|
|
if docker exec drt-sqlserver-baseline /opt/mssql-tools18/bin/sqlcmd -S localhost -U sa -P "$SA_PASSWORD" -C -Q "SELECT 1" &> /dev/null; then
|
|
echo " ✓"
|
|
break
|
|
fi
|
|
echo -n "."
|
|
sleep 2
|
|
done
|
|
|
|
# Wait for target server
|
|
echo -n "Waiting for target server"
|
|
for i in {1..30}; do
|
|
if docker exec drt-sqlserver-target /opt/mssql-tools18/bin/sqlcmd -S localhost -U sa -P "$SA_PASSWORD" -C -Q "SELECT 1" &> /dev/null; then
|
|
echo " ✓"
|
|
break
|
|
fi
|
|
echo -n "."
|
|
sleep 2
|
|
done
|
|
|
|
echo ""
|
|
echo "Step 3: Initializing baseline database..."
|
|
docker exec -i drt-sqlserver-baseline /opt/mssql-tools18/bin/sqlcmd -S localhost -U sa -P "$SA_PASSWORD" -C < test_data/init_baseline.sql
|
|
|
|
echo ""
|
|
echo "Step 4: Initializing target database..."
|
|
docker exec -i drt-sqlserver-target /opt/mssql-tools18/bin/sqlcmd -S localhost -U sa -P "$SA_PASSWORD" -C < test_data/init_target.sql
|
|
|
|
echo ""
|
|
echo "=========================================="
|
|
echo "Setup completed successfully!"
|
|
echo "=========================================="
|
|
echo ""
|
|
echo "SQL Server instances are running:"
|
|
echo " Baseline: localhost:1433"
|
|
echo " Target: localhost:1434"
|
|
echo ""
|
|
echo "Credentials:"
|
|
echo " Username: sa"
|
|
echo " Password: (set via SA_PASSWORD environment variable)"
|
|
echo ""
|
|
echo "Test databases:"
|
|
echo " Baseline: TestDB_Baseline"
|
|
echo " Target: TestDB_Target"
|
|
echo ""
|
|
echo "To test the connection:"
|
|
echo " drt discover --server localhost --database TestDB_Baseline --output config_test.yaml"
|
|
echo ""
|
|
echo "To stop the servers:"
|
|
echo " $COMPOSE_CMD -f docker-compose.test.yml down"
|
|
echo ""
|
|
echo "To stop and remove all data:"
|
|
echo " $COMPOSE_CMD -f docker-compose.test.yml down -v"
|
|
echo "" |