You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					
					
						
							346 lines
						
					
					
						
							15 KiB
						
					
					
				
			
		
		
		
			
			
			
		
		
	
	
							346 lines
						
					
					
						
							15 KiB
						
					
					
				
								# SeaweedFS Admin Integration Test Makefile
							 | 
						|
								# Tests the admin server and worker functionality using official weed commands
							 | 
						|
								
							 | 
						|
								.PHONY: help build build-and-restart restart-workers start stop restart logs clean status test admin-ui worker-logs master-logs admin-logs vacuum-test vacuum-demo vacuum-status vacuum-data vacuum-data-high vacuum-data-low vacuum-continuous vacuum-clean vacuum-help
							 | 
						|
								.DEFAULT_GOAL := help
							 | 
						|
								
							 | 
						|
								COMPOSE_FILE := docker-compose-ec-test.yml
							 | 
						|
								PROJECT_NAME := admin_integration
							 | 
						|
								
							 | 
						|
								build: ## Build SeaweedFS with latest changes and create Docker image
							 | 
						|
									@echo "🔨 Building SeaweedFS with latest changes..."
							 | 
						|
									@echo "1️⃣ Generating admin templates..."
							 | 
						|
									@cd ../../ && make admin-generate
							 | 
						|
									@echo "2️⃣ Building Docker image with latest changes..."
							 | 
						|
									@cd ../ && make build
							 | 
						|
									@echo "3️⃣ Copying binary for local docker-compose..."
							 | 
						|
									@cp ../weed ./weed-local
							 | 
						|
									@echo "✅ Build complete! Updated image: chrislusf/seaweedfs:local"
							 | 
						|
									@echo "💡 Run 'make restart' to apply changes to running services"
							 | 
						|
								
							 | 
						|
								build-and-restart: build ## Build with latest changes and restart services
							 | 
						|
									@echo "🔄 Recreating services with new image..."
							 | 
						|
									@echo "1️⃣ Recreating admin server with new image..."
							 | 
						|
									@docker-compose -f $(COMPOSE_FILE) up -d admin
							 | 
						|
									@sleep 5
							 | 
						|
									@echo "2️⃣ Recreating workers to reconnect..."
							 | 
						|
									@docker-compose -f $(COMPOSE_FILE) up -d worker1 worker2 worker3
							 | 
						|
									@echo "✅ All services recreated with latest changes!"
							 | 
						|
									@echo "🌐 Admin UI: http://localhost:23646/"
							 | 
						|
									@echo "💡 Workers will reconnect to the new admin server"
							 | 
						|
								
							 | 
						|
								restart-workers: ## Restart all workers to reconnect to admin server
							 | 
						|
									@echo "🔄 Restarting workers to reconnect to admin server..."
							 | 
						|
									@docker-compose -f $(COMPOSE_FILE) restart worker1 worker2 worker3
							 | 
						|
									@echo "✅ Workers restarted and will reconnect to admin server"
							 | 
						|
								
							 | 
						|
								help: ## Show this help message
							 | 
						|
									@echo "SeaweedFS Admin Integration Test"
							 | 
						|
									@echo "================================"
							 | 
						|
									@echo "Tests admin server task distribution to workers using official weed commands"
							 | 
						|
									@echo ""
							 | 
						|
									@echo "🏗️  Cluster Management:"
							 | 
						|
									@grep -E '^(start|stop|restart|clean|status|build):.*?## .*$$' $(MAKEFILE_LIST) | awk 'BEGIN {FS = ":.*?## "}; {printf "  %-18s %s\n", $$1, $$2}'
							 | 
						|
									@echo ""
							 | 
						|
									@echo "🧪 Testing:"
							 | 
						|
									@grep -E '^(test|demo|validate|quick-test):.*?## .*$$' $(MAKEFILE_LIST) | awk 'BEGIN {FS = ":.*?## "}; {printf "  %-18s %s\n", $$1, $$2}'
							 | 
						|
									@echo ""
							 | 
						|
									@echo "🗑️  Vacuum Testing:"
							 | 
						|
									@grep -E '^vacuum-.*:.*?## .*$$' $(MAKEFILE_LIST) | awk 'BEGIN {FS = ":.*?## "}; {printf "  %-18s %s\n", $$1, $$2}'
							 | 
						|
									@echo ""
							 | 
						|
									@echo "📜 Monitoring:"
							 | 
						|
									@grep -E '^(logs|admin-logs|worker-logs|master-logs|admin-ui):.*?## .*$$' $(MAKEFILE_LIST) | awk 'BEGIN {FS = ":.*?## "}; {printf "  %-18s %s\n", $$1, $$2}'
							 | 
						|
									@echo ""
							 | 
						|
									@echo "🚀 Quick Start:"
							 | 
						|
									@echo "  make start           # Start cluster"
							 | 
						|
									@echo "  make vacuum-test     # Test vacuum tasks"
							 | 
						|
									@echo "  make vacuum-help     # Vacuum testing guide"
							 | 
						|
									@echo ""
							 | 
						|
									@echo "💡 For detailed vacuum testing: make vacuum-help"
							 | 
						|
								
							 | 
						|
								start: ## Start the complete SeaweedFS cluster with admin and workers
							 | 
						|
									@echo "🚀 Starting SeaweedFS cluster with admin and workers..."
							 | 
						|
									@docker-compose -f $(COMPOSE_FILE) up -d
							 | 
						|
									@echo "✅ Cluster started!"
							 | 
						|
									@echo ""
							 | 
						|
									@echo "📊 Access points:"
							 | 
						|
									@echo "  • Admin UI:      http://localhost:23646/"
							 | 
						|
									@echo "  • Master UI:     http://localhost:9333/"
							 | 
						|
									@echo "  • Filer:         http://localhost:8888/"
							 | 
						|
									@echo ""
							 | 
						|
									@echo "📈 Services starting up..."
							 | 
						|
									@echo "  • Master server:  ✓"
							 | 
						|
									@echo "  • Volume servers: Starting (6 servers)..."
							 | 
						|
									@echo "  • Filer:          Starting..."
							 | 
						|
									@echo "  • Admin server:   Starting..."
							 | 
						|
									@echo "  • Workers:        Starting (3 workers)..."
							 | 
						|
									@echo ""
							 | 
						|
									@echo "⏳ Use 'make status' to check startup progress"
							 | 
						|
									@echo "💡 Use 'make logs' to watch the startup process"
							 | 
						|
								
							 | 
						|
								start-staged: ## Start services in proper order with delays
							 | 
						|
									@echo "🚀 Starting SeaweedFS cluster in stages..."
							 | 
						|
									@echo ""
							 | 
						|
									@echo "Stage 1: Starting Master server..."
							 | 
						|
									@docker-compose -f $(COMPOSE_FILE) up -d master
							 | 
						|
									@sleep 10
							 | 
						|
									@echo ""
							 | 
						|
									@echo "Stage 2: Starting Volume servers..."
							 | 
						|
									@docker-compose -f $(COMPOSE_FILE) up -d volume1 volume2 volume3 volume4 volume5 volume6
							 | 
						|
									@sleep 15
							 | 
						|
									@echo ""
							 | 
						|
									@echo "Stage 3: Starting Filer..."
							 | 
						|
									@docker-compose -f $(COMPOSE_FILE) up -d filer
							 | 
						|
									@sleep 10
							 | 
						|
									@echo ""
							 | 
						|
									@echo "Stage 4: Starting Admin server..."
							 | 
						|
									@docker-compose -f $(COMPOSE_FILE) up -d admin
							 | 
						|
									@sleep 15
							 | 
						|
									@echo ""
							 | 
						|
									@echo "Stage 5: Starting Workers..."
							 | 
						|
									@docker-compose -f $(COMPOSE_FILE) up -d worker1 worker2 worker3
							 | 
						|
									@sleep 10
							 | 
						|
									@echo ""
							 | 
						|
									@echo "Stage 6: Starting Load generator and Monitor..."
							 | 
						|
									@docker-compose -f $(COMPOSE_FILE) up -d load_generator monitor
							 | 
						|
									@echo ""
							 | 
						|
									@echo "✅ All services started!"
							 | 
						|
									@echo ""
							 | 
						|
									@echo "📊 Access points:"
							 | 
						|
									@echo "  • Admin UI:      http://localhost:23646/"
							 | 
						|
									@echo "  • Master UI:     http://localhost:9333/"
							 | 
						|
									@echo "  • Filer:         http://localhost:8888/"
							 | 
						|
									@echo ""
							 | 
						|
									@echo "⏳ Services are initializing... Use 'make status' to check progress"
							 | 
						|
								
							 | 
						|
								stop: ## Stop all services
							 | 
						|
									@echo "🛑 Stopping SeaweedFS cluster..."
							 | 
						|
									@docker-compose -f $(COMPOSE_FILE) down
							 | 
						|
									@echo "✅ Cluster stopped"
							 | 
						|
								
							 | 
						|
								restart: stop start ## Restart the entire cluster
							 | 
						|
								
							 | 
						|
								clean: ## Stop and remove all containers, networks, and volumes
							 | 
						|
									@echo "🧹 Cleaning up SeaweedFS test environment..."
							 | 
						|
									@docker-compose -f $(COMPOSE_FILE) down -v --remove-orphans
							 | 
						|
									@docker system prune -f
							 | 
						|
									@rm -rf data/
							 | 
						|
									@echo "✅ Environment cleaned"
							 | 
						|
								
							 | 
						|
								status: ## Check the status of all services
							 | 
						|
									@echo "📊 SeaweedFS Cluster Status"
							 | 
						|
									@echo "=========================="
							 | 
						|
									@docker-compose -f $(COMPOSE_FILE) ps
							 | 
						|
									@echo ""
							 | 
						|
									@echo "📋 Service Health:"
							 | 
						|
									@echo "Master:"
							 | 
						|
									@curl -s http://localhost:9333/cluster/status | jq '.IsLeader' 2>/dev/null || echo "  ❌ Master not ready"
							 | 
						|
									@echo "Admin:"
							 | 
						|
									@curl -s http://localhost:23646/ | grep -q "Admin" && echo "  ✅ Admin ready" || echo "  ❌ Admin not ready"
							 | 
						|
								
							 | 
						|
								logs: ## Show logs from all services
							 | 
						|
									@echo "📜 Following logs from all services..."
							 | 
						|
									@echo "💡 Press Ctrl+C to stop following logs"
							 | 
						|
									@docker-compose -f $(COMPOSE_FILE) logs -f
							 | 
						|
								
							 | 
						|
								admin-logs: ## Show logs from admin server only
							 | 
						|
									@echo "📜 Admin server logs:"
							 | 
						|
									@docker-compose -f $(COMPOSE_FILE) logs -f admin
							 | 
						|
								
							 | 
						|
								worker-logs: ## Show logs from all workers
							 | 
						|
									@echo "📜 Worker logs:"
							 | 
						|
									@docker-compose -f $(COMPOSE_FILE) logs -f worker1 worker2 worker3
							 | 
						|
								
							 | 
						|
								master-logs: ## Show logs from master server
							 | 
						|
									@echo "📜 Master server logs:"
							 | 
						|
									@docker-compose -f $(COMPOSE_FILE) logs -f master
							 | 
						|
								
							 | 
						|
								admin-ui: ## Open admin UI in browser (macOS)
							 | 
						|
									@echo "🌐 Opening admin UI in browser..."
							 | 
						|
									@open http://localhost:23646/ || echo "💡 Manually open: http://localhost:23646/"
							 | 
						|
								
							 | 
						|
								test: ## Run integration test to verify task assignment and completion
							 | 
						|
									@echo "🧪 Running Admin-Worker Integration Test"
							 | 
						|
									@echo "========================================"
							 | 
						|
									@echo ""
							 | 
						|
									@echo "1️⃣ Checking cluster health..."
							 | 
						|
									@sleep 5
							 | 
						|
									@curl -s http://localhost:9333/cluster/status | jq '.IsLeader' > /dev/null && echo "✅ Master healthy" || echo "❌ Master not ready"
							 | 
						|
									@curl -s http://localhost:23646/ | grep -q "Admin" && echo "✅ Admin healthy" || echo "❌ Admin not ready"
							 | 
						|
									@echo ""
							 | 
						|
									@echo "2️⃣ Checking worker registration..."
							 | 
						|
									@sleep 10
							 | 
						|
									@echo "💡 Check admin UI for connected workers: http://localhost:23646/"
							 | 
						|
									@echo ""
							 | 
						|
									@echo "3️⃣ Generating load to trigger EC tasks..."
							 | 
						|
									@echo "📝 Creating test files to fill volumes..."
							 | 
						|
									@echo "Creating large files with random data to trigger EC (targeting ~60MB total to exceed 50MB limit)..."
							 | 
						|
									@for i in {1..12}; do \
							 | 
						|
										echo "Creating 5MB random file $$i..."; \
							 | 
						|
										docker run --rm --network admin_integration_seaweed_net -v /tmp:/tmp --entrypoint sh chrislusf/seaweedfs:local -c "dd if=/dev/urandom of=/tmp/largefile$$i.dat bs=1M count=5 2>/dev/null && weed upload -master=master:9333 /tmp/largefile$$i.dat && rm /tmp/largefile$$i.dat"; \
							 | 
						|
										sleep 3; \
							 | 
						|
									done
							 | 
						|
									@echo ""
							 | 
						|
									@echo "4️⃣ Waiting for volumes to process large files and reach 50MB limit..."
							 | 
						|
									@echo "This may take a few minutes as we're uploading 60MB of data..."
							 | 
						|
									@sleep 60
							 | 
						|
									@echo ""
							 | 
						|
									@echo "5️⃣ Checking for EC task creation and assignment..."
							 | 
						|
									@echo "💡 Monitor the admin UI to see:"
							 | 
						|
									@echo "   • Tasks being created for volumes needing EC"
							 | 
						|
									@echo "   • Workers picking up tasks"
							 | 
						|
									@echo "   • Task progress (pending → running → completed)"
							 | 
						|
									@echo "   • EC shards being distributed"
							 | 
						|
									@echo ""
							 | 
						|
									@echo "✅ Integration test setup complete!"
							 | 
						|
									@echo "📊 Monitor progress at: http://localhost:23646/"
							 | 
						|
								
							 | 
						|
								quick-test: ## Quick verification that core services are running
							 | 
						|
									@echo "⚡ Quick Health Check"
							 | 
						|
									@echo "===================="
							 | 
						|
									@echo "Master:  $$(curl -s http://localhost:9333/cluster/status | jq -r '.IsLeader // "not ready"')"
							 | 
						|
									@echo "Admin:   $$(curl -s http://localhost:23646/ | grep -q "Admin" && echo "ready" || echo "not ready")"
							 | 
						|
									@echo "Workers: $$(docker-compose -f $(COMPOSE_FILE) ps worker1 worker2 worker3 | grep -c Up) running"
							 | 
						|
								
							 | 
						|
								validate: ## Validate integration test configuration
							 | 
						|
									@echo "🔍 Validating Integration Test Configuration"
							 | 
						|
									@echo "==========================================="
							 | 
						|
									@chmod +x test-integration.sh
							 | 
						|
									@./test-integration.sh
							 | 
						|
								
							 | 
						|
								demo: start ## Start cluster and run demonstration
							 | 
						|
									@echo "🎭 SeaweedFS Admin-Worker Demo"
							 | 
						|
									@echo "============================="
							 | 
						|
									@echo ""
							 | 
						|
									@echo "⏳ Waiting for services to start..."
							 | 
						|
									@sleep 45
							 | 
						|
									@echo ""
							 | 
						|
									@echo "🎯 Demo Overview:"
							 | 
						|
									@echo "  • 1 Master server (coordinates cluster)"
							 | 
						|
									@echo "  • 6 Volume servers (50MB volume limit)"
							 | 
						|
									@echo "  • 1 Admin server (task management)"
							 | 
						|
									@echo "  • 3 Workers (execute EC tasks)"
							 | 
						|
									@echo "  • Load generator (creates files continuously)"
							 | 
						|
									@echo ""
							 | 
						|
									@echo "📊 Watch the process:"
							 | 
						|
									@echo "  1. Visit: http://localhost:23646/"
							 | 
						|
									@echo "  2. Observe workers connecting"
							 | 
						|
									@echo "  3. Watch tasks being created and assigned"
							 | 
						|
									@echo "  4. See tasks progress from pending → completed"
							 | 
						|
									@echo ""
							 | 
						|
									@echo "🔄 The demo will:"
							 | 
						|
									@echo "  • Fill volumes to 50MB limit"
							 | 
						|
									@echo "  • Admin detects volumes needing EC"
							 | 
						|
									@echo "  • Workers receive and execute EC tasks"
							 | 
						|
									@echo "  • Tasks complete with shard distribution"
							 | 
						|
									@echo ""
							 | 
						|
									@echo "💡 Use 'make worker-logs' to see worker activity"
							 | 
						|
									@echo "💡 Use 'make admin-logs' to see admin task management"
							 | 
						|
								
							 | 
						|
								# Vacuum Testing Targets
							 | 
						|
								vacuum-test: ## Create test data with garbage and verify vacuum detection
							 | 
						|
									@echo "🧪 SeaweedFS Vacuum Task Testing"
							 | 
						|
									@echo "================================"
							 | 
						|
									@echo ""
							 | 
						|
									@echo "1️⃣ Checking cluster health..."
							 | 
						|
									@curl -s http://localhost:9333/cluster/status | jq '.IsLeader' > /dev/null && echo "✅ Master ready" || (echo "❌ Master not ready. Run 'make start' first." && exit 1)
							 | 
						|
									@curl -s http://localhost:23646/ | grep -q "Admin" && echo "✅ Admin ready" || (echo "❌ Admin not ready. Run 'make start' first." && exit 1)
							 | 
						|
									@echo ""
							 | 
						|
									@echo "2️⃣ Creating test data with garbage..."
							 | 
						|
									@docker-compose -f $(COMPOSE_FILE) exec vacuum-tester go run create_vacuum_test_data.go -files=25 -delete=0.5 -size=200
							 | 
						|
									@echo ""
							 | 
						|
									@echo "3️⃣ Configuration Instructions:"
							 | 
						|
									@echo "   Visit: http://localhost:23646/maintenance/config/vacuum"
							 | 
						|
									@echo "   Set for testing:"
							 | 
						|
									@echo "     • Enable Vacuum Tasks: ✅ Checked"
							 | 
						|
									@echo "     • Garbage Threshold: 0.20 (20%)"
							 | 
						|
									@echo "     • Scan Interval: [30] [Seconds]"
							 | 
						|
									@echo "     • Min Volume Age: [0] [Minutes]"
							 | 
						|
									@echo "     • Max Concurrent: 2"
							 | 
						|
									@echo ""
							 | 
						|
									@echo "4️⃣ Monitor vacuum tasks at: http://localhost:23646/maintenance"
							 | 
						|
									@echo ""
							 | 
						|
									@echo "💡 Use 'make vacuum-status' to check volume garbage ratios"
							 | 
						|
								
							 | 
						|
								vacuum-demo: ## Run automated vacuum testing demonstration
							 | 
						|
									@echo "🎭 Vacuum Task Demo"
							 | 
						|
									@echo "=================="
							 | 
						|
									@echo ""
							 | 
						|
									@echo "⚠️  This demo requires user interaction for configuration"
							 | 
						|
									@echo "💡 Make sure cluster is running with 'make start'"
							 | 
						|
									@echo ""
							 | 
						|
									@docker-compose -f $(COMPOSE_FILE) exec vacuum-tester sh -c "chmod +x demo_vacuum_testing.sh && ./demo_vacuum_testing.sh"
							 | 
						|
								
							 | 
						|
								vacuum-status: ## Check current volume status and garbage ratios
							 | 
						|
									@echo "📊 Current Volume Status"
							 | 
						|
									@echo "======================="
							 | 
						|
									@docker-compose -f $(COMPOSE_FILE) exec vacuum-tester sh -c "chmod +x check_volumes.sh && ./check_volumes.sh"
							 | 
						|
								
							 | 
						|
								vacuum-data: ## Create test data with configurable parameters
							 | 
						|
									@echo "📁 Creating vacuum test data..."
							 | 
						|
									@echo "Usage: make vacuum-data [FILES=20] [DELETE=0.4] [SIZE=100]"
							 | 
						|
									@echo ""
							 | 
						|
									@docker-compose -f $(COMPOSE_FILE) exec vacuum-tester go run create_vacuum_test_data.go \
							 | 
						|
										-files=$${FILES:-20} \
							 | 
						|
										-delete=$${DELETE:-0.4} \
							 | 
						|
										-size=$${SIZE:-100}
							 | 
						|
								
							 | 
						|
								vacuum-data-high: ## Create high garbage ratio test data (should trigger vacuum)
							 | 
						|
									@echo "📁 Creating high garbage test data (70% garbage)..."
							 | 
						|
									@docker-compose -f $(COMPOSE_FILE) exec vacuum-tester go run create_vacuum_test_data.go -files=30 -delete=0.7 -size=150
							 | 
						|
								
							 | 
						|
								vacuum-data-low: ## Create low garbage ratio test data (should NOT trigger vacuum)
							 | 
						|
									@echo "📁 Creating low garbage test data (15% garbage)..."
							 | 
						|
									@docker-compose -f $(COMPOSE_FILE) exec vacuum-tester go run create_vacuum_test_data.go -files=30 -delete=0.15 -size=150
							 | 
						|
								
							 | 
						|
								vacuum-continuous: ## Generate garbage continuously for testing
							 | 
						|
									@echo "🔄 Generating continuous garbage for vacuum testing..."
							 | 
						|
									@echo "Creating 5 rounds of test data with 30-second intervals..."
							 | 
						|
									@for i in {1..5}; do \
							 | 
						|
										echo "Round $$i: Creating garbage..."; \
							 | 
						|
										docker-compose -f $(COMPOSE_FILE) exec vacuum-tester go run create_vacuum_test_data.go -files=10 -delete=0.6 -size=100; \
							 | 
						|
										echo "Waiting 30 seconds..."; \
							 | 
						|
										sleep 30; \
							 | 
						|
									done
							 | 
						|
									@echo "✅ Continuous test complete. Check vacuum task activity!"
							 | 
						|
								
							 | 
						|
								vacuum-clean: ## Clean up vacuum test data (removes all volumes!)
							 | 
						|
									@echo "🧹 Cleaning up vacuum test data..."
							 | 
						|
									@echo "⚠️  WARNING: This will delete ALL volumes!"
							 | 
						|
									@read -p "Are you sure? (y/N): " confirm && [ "$$confirm" = "y" ] || exit 1
							 | 
						|
									@echo "Stopping cluster..."
							 | 
						|
									@docker-compose -f $(COMPOSE_FILE) down
							 | 
						|
									@echo "Removing volume data..."
							 | 
						|
									@rm -rf data/volume*/
							 | 
						|
									@echo "Restarting cluster..."
							 | 
						|
									@docker-compose -f $(COMPOSE_FILE) up -d
							 | 
						|
									@echo "✅ Clean up complete. Fresh volumes ready for testing."
							 | 
						|
								
							 | 
						|
								vacuum-help: ## Show vacuum testing help and examples
							 | 
						|
									@echo "🧪 Vacuum Testing Commands (Docker-based)"
							 | 
						|
									@echo "=========================================="
							 | 
						|
									@echo ""
							 | 
						|
									@echo "Quick Start:"
							 | 
						|
									@echo "  make start         # Start SeaweedFS cluster with vacuum-tester"
							 | 
						|
									@echo "  make vacuum-test   # Create test data and instructions"
							 | 
						|
									@echo "  make vacuum-status # Check volume status"
							 | 
						|
									@echo ""
							 | 
						|
									@echo "Data Generation:"
							 | 
						|
									@echo "  make vacuum-data-high       # High garbage (should trigger)"
							 | 
						|
									@echo "  make vacuum-data-low        # Low garbage (should NOT trigger)" 
							 | 
						|
									@echo "  make vacuum-continuous      # Continuous garbage generation"
							 | 
						|
									@echo ""
							 | 
						|
									@echo "Monitoring:"
							 | 
						|
									@echo "  make vacuum-status          # Quick volume status check"
							 | 
						|
									@echo "  make vacuum-demo           # Full guided demonstration"
							 | 
						|
									@echo ""
							 | 
						|
									@echo "Configuration:"
							 | 
						|
									@echo "  Visit: http://localhost:23646/maintenance/config/vacuum"
							 | 
						|
									@echo "  Monitor: http://localhost:23646/maintenance"
							 | 
						|
									@echo ""
							 | 
						|
									@echo "Custom Parameters:"
							 | 
						|
									@echo "  make vacuum-data FILES=50 DELETE=0.8 SIZE=200"
							 | 
						|
									@echo ""
							 | 
						|
									@echo "💡 All commands now run inside Docker containers"
							 | 
						|
									@echo "Documentation:"
							 | 
						|
									@echo "  See: VACUUM_TEST_README.md for complete guide" 
							 |