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."
 |