Some checks failed
go: build dev binaries / cleanup (push) Successful in 4s
Codespell / Check for spelling errors (push) Failing after 3s
docker: build dev containers / build-rust-binaries (amd64, x86_64-unknown-linux-musl) (push) Failing after 3s
docker: build dev containers / build-dev-containers (push) Has been skipped
docker: build dev containers / build-rust-binaries (arm64, true, aarch64-unknown-linux-musl) (push) Failing after 3s
End to End / FUSE Mount (push) Failing after 2s
EC Integration Tests / EC Integration Tests (push) Failing after 30s
FUSE DLM Integration Tests / FUSE DLM Integration Tests (push) Failing after 3s
FUSE Volume Server Failover Tests / FUSE Volume Server Failover (push) Failing after 3s
FUSE Integration Tests / FUSE Integration Testing (push) Failing after 2s
FUSE P2P Peer Chunk Sharing Integration Tests / FUSE P2P Peer Chunk Sharing (push) Failing after 3s
go: build binary / Go Vet (push) Failing after 2s
go: build binary / Go Vet 32-bit (push) Failing after 3s
go: build binary / Build (push) Failing after 4s
go: build binary / Build cross-platform (freebsd/amd64) (push) Failing after 3s
go: build binary / Build cross-platform (windows/amd64) (push) Failing after 3s
go: build binary / Build cross-platform (darwin/arm64) (push) Failing after 3s
go: build binary / Build cross-platform (windows/arm64) (push) Failing after 3s
go: build binary / Test (push) Failing after 2s
go: build binary / Test 32-bit (push) Failing after 3s
helm: lint and test charts / lint-test (push) Failing after 3s
Java Client Integration Tests / Java Integration Tests (11) (push) Failing after 3s
Java Client Integration Tests / Java Integration Tests (17) (push) Failing after 3s
go: build dev binaries / build_dev_linux_windows (amd64, linux) (push) Failing after 2s
go: build dev binaries / build_dev_linux_windows (amd64, windows) (push) Failing after 3s
go: build dev binaries / build_dev_darwin (amd64, darwin) (push) Has been skipped
go: build dev binaries / build_dev_darwin (arm64, darwin) (push) Has been skipped
Java Client Unit Tests / Java Unit Tests (11) (push) Failing after 3s
Java Client Unit Tests / Java Unit Tests (17) (push) Failing after 2s
Java Client Unit Tests / Java Unit Tests (21) (push) Failing after 3s
Java Client Unit Tests / Java Unit Tests (8) (push) Failing after 3s
Kafka Quick Test (Load Test with Schema Registry) / Kafka Client Load Test (Quick) (push) Failing after 3s
Kafka Gateway Tests / Kafka Unit Tests (unit-tests-1) (push) Failing after 11s
Kafka Gateway Tests / Kafka Integration Tests (Critical) (integration-1) (push) Failing after 3s
Kafka Gateway Tests / Kafka End-to-End Tests (with SMQ) (e2e-1) (push) Failing after 3s
Kafka Gateway Tests / Kafka Consumer Group Tests (Highly Isolated) (consumer-group-1) (push) Failing after 2s
Kafka Gateway Tests / Kafka Client Compatibility (with SMQ) (client-compat-1) (push) Failing after 3s
Kafka Gateway Tests / Kafka SMQ Integration Tests (Full Stack) (smq-integration-1) (push) Failing after 3s
Kafka Gateway Tests / Kafka Protocol Tests (Isolated) (protocol-1) (push) Failing after 3s
KMS Tests / KMS Provider Integration Tests (push) Failing after 2s
KMS Tests / S3 KMS End-to-End Tests (push) Failing after 3s
Master Cold Start Tests / Master Cold Start Tests (push) Failing after 4s
Metadata Subscribe Integration Tests / Metadata Subscribe Integration Tests (push) Failing after 3s
Multi-Master Tests / Multi-Master Failover Tests (push) Failing after 3s
Performance / CPU and Heap Profile (push) Failing after 2s
Performance / S3 Read/Write Benchmark (rust volume) (push) Failing after 3s
pjdfstest POSIX Compliance / pjdfstest (push) Failing after 2s
Plugin Worker Integration Tests / Plugin Worker: erasure_coding (push) Failing after 3s
Plugin Worker Integration Tests / Plugin Worker: vacuum (push) Failing after 3s
Rust Volume Server Tests / Rust Integration Tests (push) Failing after 3s
Rust Volume Server Tests / Go Tests with Rust Volume (grpc - Shard 1) (push) Failing after 2s
Rust Volume Server Tests / Go Tests with Rust Volume (http - Shard 1) (push) Failing after 3s
Rust Volume Server Tests / Go Tests with Rust Volume (grpc - Shard 2) (push) Failing after 3s
Rust Volume Server Tests / Go Tests with Rust Volume (http - Shard 2) (push) Failing after 3s
Rust Volume Server Tests / Go Tests with Rust Volume (grpc - Shard 3) (push) Failing after 3s
S3 IAM Integration Tests / S3 IAM Distributed Tests (push) Failing after 2s
S3 IAM Integration Tests / S3 IAM Performance Tests (push) Failing after 3s
Performance / Throughput Benchmark (go volume) (push) Failing after 3s
Performance / Throughput Benchmark (rust volume) (push) Failing after 2s
Performance / S3 Read/Write Benchmark (go volume) (push) Failing after 3s
Plugin Worker Integration Tests / Plugin Worker: volume_balance (push) Failing after 3s
PostgreSQL Gateway Tests / PostgreSQL Basic Tests (push) Failing after 3s
Rust Volume Server Tests / Rust Unit Tests (push) Failing after 2s
Rust Volume Server Tests / Go Tests with Rust Volume (http - Shard 3) (push) Failing after 3s
Rust Plugin Worker Tests / Rust Plugin Worker Build and Unit Tests (push) Failing after 3s
rust: build dev volume server binaries / cleanup (push) Successful in 3s
S3 ETag and ACL Tests / S3 ETag + ACL Integration Tests (push) Failing after 3s
S3 IAM Integration Tests / IAM Unit Tests (push) Failing after 3s
S3 IAM Integration Tests / S3 IAM Integration Tests (advanced) (push) Failing after 3s
S3 IAM Integration Tests / S3 IAM Integration Tests (basic) (push) Failing after 2s
S3 IAM Integration Tests / S3 IAM Integration Tests (group) (push) Failing after 3s
S3 IAM Integration Tests / S3 IAM Integration Tests (policy-enforcement) (push) Failing after 2s
S3 IAM Integration Tests / S3 IAM Integration Tests (sts) (push) Failing after 4s
S3 Keycloak Integration Tests / S3 Keycloak Integration Tests (push) Failing after 3s
S3 PyArrow Parquet Tests / PyArrow Parquet Tests (Python 3.11) (push) Failing after 3s
S3 PyArrow Parquet Tests / Go Unit Tests (Implicit Directory) (push) Has been cancelled
S3 PyArrow Parquet Tests / PyArrow Parquet Tests (Python 3.12) (push) Has been cancelled
rust: build dev volume server binaries / build-rust-volume-dev-darwin (darwin-amd64, x86_64-apple-darwin) (push) Has been cancelled
rust: build dev volume server binaries / build-rust-volume-dev-darwin (darwin-arm64, aarch64-apple-darwin) (push) Has been cancelled
rust: build dev volume server binaries / build-rust-volume-dev-linux (linux-amd64, x86_64-unknown-linux-gnu) (push) Has been cancelled
S3 PyArrow Parquet Tests / PyArrow Parquet Tests (Python 3.9) (push) Has been cancelled
S3 Proxy Signature Tests / S3 Proxy Signature Verification Tests (push) Has been cancelled
S3 SDK V2 Route Disambiguation Tests / S3 SDK V2 Routing Tests (push) Has been cancelled
S3 SSE Tests / S3 SSE Integration Tests (quick) (push) Has been cancelled
S3 SSE Tests / S3 SSE Compatibility Test (push) Has been cancelled
S3 SSE Tests / S3 SSE Metadata Persistence Test (push) Has been cancelled
S3 SSE Tests / S3 SSE Copy Operations Test (push) Has been cancelled
S3 SSE Tests / S3 SSE Multipart Upload Test (push) Has been cancelled
S3 SSE Tests / S3 SSE Performance Test (push) Has been cancelled
S3 SSE Tests / S3 Volume Encryption Test (push) Has been cancelled
S3 SSE Tests / S3 SSE Integration Tests (comprehensive) (push) Has been cancelled
Spark Integration Tests / Spark Integration Tests (push) Failing after 2s
Telemetry Integration Tests / telemetry-integration-test (push) Failing after 3s
Volume Server Integration Tests / Volume Server Integration Tests (grpc - Shard 1) (push) Failing after 3s
Volume Server Integration Tests / Volume Server Integration Tests (http - Shard 1) (push) Failing after 3s
Ceph S3 tests / Basic S3 tests (KV store) (push) Has been cancelled
Ceph S3 tests / S3 Versioning & Object Lock tests (push) Has been cancelled
S3 Policy Integration Tests / S3 Policy Unit Tests (push) Failing after 3s
Ceph S3 tests / S3 CORS tests (push) Has been cancelled
Ceph S3 tests / SeaweedFS Custom S3 Copy tests (push) Has been cancelled
Ceph S3 tests / Basic S3 tests (SQL store) (push) Has been cancelled
test s3 over https using aws-cli / awscli-tests (push) Has been cancelled
TLS Rotation Integration Tests / TLS Rotation Integration Tests (push) Has been cancelled
Vacuum Integration Tests / Vacuum Integration Tests (push) Has been cancelled
S3 Policy Integration Tests / S3 Policy Variables Integration Tests (push) Failing after 3s
S3 Policy Integration Tests / S3 Policy Enforcement Integration Tests (advanced-policy) (push) Failing after 3s
S3 Policy Integration Tests / S3 Policy Enforcement Integration Tests (basic-policy) (push) Failing after 2s
S3 Policy Integration Tests / S3 Policy Enforcement Integration Tests (contextual-policy) (push) Failing after 4s
S3 Policy Integration Tests / Trusted Proxy Detection Tests (push) Failing after 2s
S3 Policy Integration Tests / S3 Policy Shell Integration Tests (push) Failing after 3s
Samba on FUSE Integration / samba-integration (push) Failing after 2s
SFTP Integration Tests / SFTP Integration Testing (push) Failing after 3s
terraform: validate and test modules / fmt, validate, plan-level tests (push) Failing after 3s
terraform: validate and test modules / local cluster smoke test (real weed) (push) Failing after 2s
Volume Server Integration Tests / Volume Server Integration Tests (grpc - Shard 3) (push) Failing after 3s
Volume Server Integration Tests / Volume Server Integration Tests (grpc - Shard 2) (push) Failing after 3s
Volume Server Integration Tests / Volume Server Integration Tests (http - Shard 2) (push) Failing after 2s
Volume Server Integration Tests / Volume Server Integration Tests (http - Shard 3) (push) Failing after 5s
mount: windows conformance / WinFsp conformance (push) Has been cancelled
mount: windows / Mount on Windows (push) Has been cancelled
346 lines
15 KiB
Makefile
346 lines
15 KiB
Makefile
# 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"
|