diff options
Diffstat (limited to 'test/kafka/scripts/test-broker-discovery.sh')
| -rw-r--r-- | test/kafka/scripts/test-broker-discovery.sh | 129 |
1 files changed, 129 insertions, 0 deletions
diff --git a/test/kafka/scripts/test-broker-discovery.sh b/test/kafka/scripts/test-broker-discovery.sh new file mode 100644 index 000000000..b4937b7f7 --- /dev/null +++ b/test/kafka/scripts/test-broker-discovery.sh @@ -0,0 +1,129 @@ +#!/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" |
