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.
		
		
		
		
		
			
		
			
				
					
					
						
							75 lines
						
					
					
						
							2.2 KiB
						
					
					
				
			
		
		
		
			
			
			
		
		
	
	
							75 lines
						
					
					
						
							2.2 KiB
						
					
					
				
								#!/bin/bash
							 | 
						|
								
							 | 
						|
								# Test script for SMQ schema bypass functionality
							 | 
						|
								# This script tests publishing to topics with "_" prefix which should bypass schema validation
							 | 
						|
								
							 | 
						|
								set -e
							 | 
						|
								
							 | 
						|
								echo "🧪 Testing SMQ Schema Bypass for Topics with '_' Prefix"
							 | 
						|
								echo "========================================================="
							 | 
						|
								
							 | 
						|
								# Check if Kafka gateway is running
							 | 
						|
								echo "Checking if Kafka gateway is running on localhost:9093..."
							 | 
						|
								if ! nc -z localhost 9093 2>/dev/null; then
							 | 
						|
								    echo "[FAIL] Kafka gateway is not running on localhost:9093"
							 | 
						|
								    echo "Please start SeaweedMQ with Kafka gateway enabled first"
							 | 
						|
								    exit 1
							 | 
						|
								fi
							 | 
						|
								echo "[OK] Kafka gateway is running"
							 | 
						|
								
							 | 
						|
								# Test with schema-required topic (should require schema)
							 | 
						|
								echo
							 | 
						|
								echo "Testing schema-required topic (should require schema validation)..."
							 | 
						|
								SCHEMA_TOPIC="user-events"
							 | 
						|
								echo "Topic: $SCHEMA_TOPIC (regular topic, requires schema)"
							 | 
						|
								
							 | 
						|
								# Test with underscore prefix topic (should bypass schema)
							 | 
						|
								echo
							 | 
						|
								echo "Testing schema-bypass topic (should skip schema validation)..."
							 | 
						|
								BYPASS_TOPIC="_raw_messages"
							 | 
						|
								echo "Topic: $BYPASS_TOPIC (underscore prefix, bypasses schema)"
							 | 
						|
								
							 | 
						|
								# Build and test the publisher
							 | 
						|
								echo
							 | 
						|
								echo "Building publisher..."
							 | 
						|
								cd simple-publisher
							 | 
						|
								go mod tidy
							 | 
						|
								echo "[OK] Publisher dependencies ready"
							 | 
						|
								
							 | 
						|
								echo
							 | 
						|
								echo "Running publisher test..."
							 | 
						|
								timeout 30s go run main.go || {
							 | 
						|
								    echo "[FAIL] Publisher test failed or timed out"
							 | 
						|
								    exit 1
							 | 
						|
								}
							 | 
						|
								echo "[OK] Publisher test completed"
							 | 
						|
								
							 | 
						|
								# Build consumer
							 | 
						|
								echo
							 | 
						|
								echo "Building consumer..."
							 | 
						|
								cd ../simple-consumer
							 | 
						|
								go mod tidy
							 | 
						|
								echo "[OK] Consumer dependencies ready"
							 | 
						|
								
							 | 
						|
								echo
							 | 
						|
								echo "Testing consumer (will run for 10 seconds)..."
							 | 
						|
								timeout 10s go run main.go || {
							 | 
						|
								    if [ $? -eq 124 ]; then
							 | 
						|
								        echo "[OK] Consumer test completed (timed out as expected)"
							 | 
						|
								    else
							 | 
						|
								        echo "[FAIL] Consumer test failed"
							 | 
						|
								        exit 1
							 | 
						|
								    fi
							 | 
						|
								}
							 | 
						|
								
							 | 
						|
								echo
							 | 
						|
								echo "All tests completed successfully!"
							 | 
						|
								echo
							 | 
						|
								echo "Summary:"
							 | 
						|
								echo "- [OK] Topics with '_' prefix bypass schema validation"
							 | 
						|
								echo "- [OK] Raw messages are stored as bytes in the 'value' field"
							 | 
						|
								echo "- [OK] kafka-go client works with SeaweedMQ"
							 | 
						|
								echo "- [OK] No schema validation errors for '_raw_messages' topic"
							 | 
						|
								echo
							 | 
						|
								echo "The SMQ schema bypass functionality is working correctly!"
							 | 
						|
								echo "Topics with '_' prefix are treated as system topics and bypass all schema processing."
							 |