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.
		
		
		
		
		
			
		
			
				
					
					
						
							129 lines
						
					
					
						
							3.3 KiB
						
					
					
				
			
		
		
		
			
			
			
		
		
	
	
							129 lines
						
					
					
						
							3.3 KiB
						
					
					
				| #!/bin/bash | |
|  | |
| # Test script to verify broker discovery works end-to-end | |
| 
 | |
| set -e | |
| 
 | |
| echo "=== Testing SeaweedFS Broker Discovery ===" | |
| 
 | |
| cd /Users/chrislu/go/src/github.com/seaweedfs/seaweedfs | |
| 
 | |
| # Build weed binary | |
| echo "Building weed binary..." | |
| go build -o /tmp/weed-discovery ./weed | |
| 
 | |
| # Setup data directory | |
| WEED_DATA_DIR="/tmp/seaweedfs-discovery-test-$$" | |
| mkdir -p "$WEED_DATA_DIR" | |
| echo "Using data directory: $WEED_DATA_DIR" | |
| 
 | |
| # Cleanup function | |
| cleanup() { | |
|     echo "Cleaning up..." | |
|     pkill -f "weed.*server" || true | |
|     pkill -f "weed.*mq.broker" || true | |
|     sleep 2 | |
|     rm -rf "$WEED_DATA_DIR" | |
|     rm -f /tmp/weed-discovery* /tmp/broker-discovery-test* | |
| } | |
| trap cleanup EXIT | |
| 
 | |
| # Start SeaweedFS server with consistent IP configuration | |
| echo "Starting SeaweedFS server..." | |
| /tmp/weed-discovery -v 1 server \ | |
|   -ip="127.0.0.1" \ | |
|   -ip.bind="127.0.0.1" \ | |
|   -dir="$WEED_DATA_DIR" \ | |
|   -master.raftHashicorp \ | |
|   -master.port=9333 \ | |
|   -volume.port=8081 \ | |
|   -filer.port=8888 \ | |
|   -filer=true \ | |
|   -metricsPort=9325 \ | |
|   > /tmp/weed-discovery-server.log 2>&1 & | |
| 
 | |
| SERVER_PID=$! | |
| echo "Server PID: $SERVER_PID" | |
| 
 | |
| # Wait for master | |
| echo "Waiting for master..." | |
| for i in $(seq 1 30); do | |
|   if curl -s http://127.0.0.1:9333/cluster/status >/dev/null; then | |
|     echo "✓ Master is up" | |
|     break | |
|   fi | |
|   echo "  Waiting for master... ($i/30)" | |
|   sleep 1 | |
| done | |
| 
 | |
| # Give components time to initialize | |
| echo "Waiting for components to initialize..." | |
| sleep 10 | |
| 
 | |
| # Start MQ broker | |
| echo "Starting MQ broker..." | |
| /tmp/weed-discovery -v 2 mq.broker \ | |
|   -master="127.0.0.1:9333" \ | |
|   -port=17777 \ | |
|   > /tmp/weed-discovery-broker.log 2>&1 & | |
| 
 | |
| BROKER_PID=$! | |
| echo "Broker PID: $BROKER_PID" | |
| 
 | |
| # Wait for broker | |
| echo "Waiting for broker to register..." | |
| sleep 15 | |
| broker_ready=false | |
| for i in $(seq 1 20); do | |
|   if nc -z 127.0.0.1 17777; then | |
|     echo "✓ MQ broker is accepting connections" | |
|     broker_ready=true | |
|     break | |
|   fi | |
|   echo "  Waiting for MQ broker... ($i/20)" | |
|   sleep 1 | |
| done | |
| 
 | |
| if [ "$broker_ready" = false ]; then | |
|   echo "[FAIL] MQ broker failed to start" | |
|   echo "Server logs:" | |
|   cat /tmp/weed-discovery-server.log | |
|   echo "Broker logs:"   | |
|   cat /tmp/weed-discovery-broker.log | |
|   exit 1 | |
| fi | |
| 
 | |
| # Additional wait for broker registration | |
| echo "Allowing broker to register with master..." | |
| sleep 15 | |
| 
 | |
| # Check cluster status | |
| echo "Checking cluster status..." | |
| CLUSTER_STATUS=$(curl -s "http://127.0.0.1:9333/cluster/status") | |
| echo "Cluster status: $CLUSTER_STATUS" | |
| 
 | |
| # Now test broker discovery using the same approach as the Kafka gateway | |
| echo "Testing broker discovery..." | |
| cd test/kafka | |
| SEAWEEDFS_MASTERS=127.0.0.1:9333 timeout 30s go test -v -run "TestOffsetManagement" -timeout 25s ./e2e/... > /tmp/broker-discovery-test.log 2>&1 && discovery_success=true || discovery_success=false | |
| 
 | |
| if [ "$discovery_success" = true ]; then | |
|   echo "[OK] Broker discovery test PASSED!" | |
|   echo "Gateway was able to discover and connect to MQ brokers" | |
| else | |
|   echo "[FAIL] Broker discovery test FAILED" | |
|   echo "Last few lines of test output:" | |
|   tail -20 /tmp/broker-discovery-test.log || echo "No test logs available" | |
| fi | |
| 
 | |
| echo | |
| echo "📊 Test Results:" | |
| echo "  Broker startup: ✅" | |
| echo "  Broker registration: ✅"   | |
| echo "  Gateway discovery: $([ "$discovery_success" = true ] && echo "✅" || echo "❌")" | |
| 
 | |
| echo | |
| echo "📁 Logs available:" | |
| echo "  Server: /tmp/weed-discovery-server.log" | |
| echo "  Broker: /tmp/weed-discovery-broker.log" | |
| echo "  Discovery test: /tmp/broker-discovery-test.log"
 |