#!/bin/bash set -e # Exit on error (but we'll handle specific commands) echo "๐Ÿš€ Starting test of MSSQL backup functionality..." echo "๐Ÿงน Cleaning up any existing containers..." docker compose down -v 2>/dev/null || true echo "๐Ÿ“ฆ Starting MinIO and MSSQL..." docker compose up -d minio mssql echo "โณ Waiting for MinIO to be ready..." for i in {1..10}; do if docker exec db-backup-s3-minio-1 mc alias set local http://localhost:9000 miniouser minioroot &>/dev/null; then echo "โœ… MinIO is ready!" break fi echo -n "." sleep 1 done echo "" echo "๐Ÿ“ฆ Creating backups bucket..." docker exec db-backup-s3-minio-1 mc mb local/backups --ignore-existing || true echo "โณ Waiting for MSSQL to be ready (this takes about 30 seconds)..." for i in {1..30}; do if docker exec db-backup-s3-mssql-1 /opt/mssql-tools18/bin/sqlcmd \ -S localhost -U sa -P 'YourStrong@Passw0rd' -C \ -Q "SELECT 1" &>/dev/null; then echo "โœ… MSSQL is ready!" break fi echo -n "." sleep 1 done echo "" echo "๐Ÿ—„๏ธ Creating test database..." docker exec db-backup-s3-mssql-1 /opt/mssql-tools18/bin/sqlcmd \ -S localhost -U sa -P 'YourStrong@Passw0rd' -C \ -Q "CREATE DATABASE TestDB;" echo "๐Ÿ“ Creating test table and inserting data..." docker exec db-backup-s3-mssql-1 /opt/mssql-tools18/bin/sqlcmd \ -S localhost -U sa -P 'YourStrong@Passw0rd' -C -d TestDB \ -Q "CREATE TABLE Users (id INT, name VARCHAR(50)); INSERT INTO Users VALUES (1, 'John'), (2, 'Jane');" echo "๐Ÿ“Š Current data:" docker exec db-backup-s3-mssql-1 /opt/mssql-tools18/bin/sqlcmd \ -S localhost -U sa -P 'YourStrong@Passw0rd' -C -d TestDB \ -Q "SELECT * FROM Users;" echo "" echo "๐Ÿ’พ Running backup..." docker compose run --rm backup-mssql sh backup.sh echo "" echo "๐Ÿ“‹ Checking MinIO for backup..." echo "Backups in bucket:" docker exec db-backup-s3-minio-1 mc ls local/backups/mssql-backups/ echo "" echo "๐Ÿ”จ Modifying database (deleting John)..." docker exec db-backup-s3-mssql-1 /opt/mssql-tools18/bin/sqlcmd \ -S localhost -U sa -P 'YourStrong@Passw0rd' -C -d TestDB \ -Q "DELETE FROM Users WHERE id = 1;" echo "๐Ÿ“Š Current data after modification (should only show Jane):" docker exec db-backup-s3-mssql-1 /opt/mssql-tools18/bin/sqlcmd \ -S localhost -U sa -P 'YourStrong@Passw0rd' -C -d TestDB \ -Q "SELECT * FROM Users;" echo "" echo "โ™ป๏ธ Restoring from backup..." docker compose run --rm backup-mssql sh restore.sh echo "" echo "๐Ÿ“Š Data after restore (should show both John and Jane):" docker exec db-backup-s3-mssql-1 /opt/mssql-tools18/bin/sqlcmd \ -S localhost -U sa -P 'YourStrong@Passw0rd' -C -d TestDB \ -Q "SELECT * FROM Users;" echo "" echo "โœจ Test complete! Cleaning up..." # docker compose down -v echo "๐ŸŽ‰ All done!"