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.
		
		
		
		
		
			
		
			
				
					
					
						
							169 lines
						
					
					
						
							4.9 KiB
						
					
					
				
			
		
		
		
			
			
			
		
		
	
	
							169 lines
						
					
					
						
							4.9 KiB
						
					
					
				
								# Kafka Client Load Test Configuration
							 | 
						|
								
							 | 
						|
								# Test execution settings
							 | 
						|
								test_mode: "comprehensive"  # producer, consumer, comprehensive
							 | 
						|
								duration: "60s"  # Test duration (0 = run indefinitely) - producers will stop at this time, consumers get +120s to drain
							 | 
						|
								
							 | 
						|
								# Kafka cluster configuration
							 | 
						|
								kafka:
							 | 
						|
								  bootstrap_servers:
							 | 
						|
								    - "kafka-gateway:9093"
							 | 
						|
								  # Security settings (if needed)
							 | 
						|
								  security_protocol: "PLAINTEXT"  # PLAINTEXT, SSL, SASL_PLAINTEXT, SASL_SSL
							 | 
						|
								  sasl_mechanism: ""  # PLAIN, SCRAM-SHA-256, SCRAM-SHA-512
							 | 
						|
								  sasl_username: ""
							 | 
						|
								  sasl_password: ""
							 | 
						|
								
							 | 
						|
								# Schema Registry configuration
							 | 
						|
								schema_registry:
							 | 
						|
								  url: "http://schema-registry:8081"
							 | 
						|
								  auth:
							 | 
						|
								    username: ""
							 | 
						|
								    password: ""
							 | 
						|
								
							 | 
						|
								# Producer configuration
							 | 
						|
								producers:
							 | 
						|
								  count: 10  # Number of producer instances
							 | 
						|
								  message_rate: 1000  # Messages per second per producer
							 | 
						|
								  message_size: 1024  # Message size in bytes
							 | 
						|
								  batch_size: 100  # Batch size for batching
							 | 
						|
								  linger_ms: 5  # Time to wait for batching
							 | 
						|
								  compression_type: "snappy"  # none, gzip, snappy, lz4, zstd
							 | 
						|
								  acks: "all"  # 0, 1, all
							 | 
						|
								  retries: 3
							 | 
						|
								  retry_backoff_ms: 100
							 | 
						|
								  request_timeout_ms: 30000
							 | 
						|
								  delivery_timeout_ms: 120000
							 | 
						|
								  
							 | 
						|
								  # Message generation settings
							 | 
						|
								  key_distribution: "random"  # random, sequential, uuid
							 | 
						|
								  value_type: "avro"  # json, avro, protobuf, binary
							 | 
						|
								  schema_format: ""  # AVRO, JSON, PROTOBUF - schema registry format (when schemas enabled)
							 | 
						|
								                     # Leave empty to auto-distribute formats across topics for testing:
							 | 
						|
								                     #   topic-0: AVRO, topic-1: JSON, topic-2: PROTOBUF, topic-3: AVRO, topic-4: JSON
							 | 
						|
								                     # Set to specific format (e.g. "AVRO") to use same format for all topics
							 | 
						|
								  include_timestamp: true
							 | 
						|
								  include_headers: true
							 | 
						|
								
							 | 
						|
								# Consumer configuration  
							 | 
						|
								consumers:
							 | 
						|
								  count: 5  # Number of consumer instances
							 | 
						|
								  group_prefix: "loadtest-group"  # Consumer group prefix
							 | 
						|
								  auto_offset_reset: "earliest"  # earliest, latest
							 | 
						|
								  enable_auto_commit: true
							 | 
						|
								  auto_commit_interval_ms: 100  # Reduced from 1000ms to 100ms to minimize duplicate window
							 | 
						|
								  session_timeout_ms: 30000
							 | 
						|
								  heartbeat_interval_ms: 3000
							 | 
						|
								  max_poll_records: 500
							 | 
						|
								  max_poll_interval_ms: 300000
							 | 
						|
								  fetch_min_bytes: 1
							 | 
						|
								  fetch_max_bytes: 52428800  # 50MB
							 | 
						|
								  fetch_max_wait_ms: 100  # 100ms - very fast polling for concurrent fetches and quick drain
							 | 
						|
								
							 | 
						|
								# Topic configuration
							 | 
						|
								topics:
							 | 
						|
								  count: 5  # Number of topics to create/use
							 | 
						|
								  prefix: "loadtest-topic"  # Topic name prefix
							 | 
						|
								  partitions: 4  # Partitions per topic (default: 4)
							 | 
						|
								  replication_factor: 1  # Replication factor
							 | 
						|
								  cleanup_policy: "delete"  # delete, compact
							 | 
						|
								  retention_ms: 604800000  # 7 days
							 | 
						|
								  segment_ms: 86400000  # 1 day
							 | 
						|
								
							 | 
						|
								# Schema configuration (for Avro/Protobuf tests)
							 | 
						|
								schemas:
							 | 
						|
								  enabled: true
							 | 
						|
								  registry_timeout_ms: 10000
							 | 
						|
								  
							 | 
						|
								  # Test schemas
							 | 
						|
								  user_event:
							 | 
						|
								    type: "avro"
							 | 
						|
								    schema: |
							 | 
						|
								      {
							 | 
						|
								        "type": "record",
							 | 
						|
								        "name": "UserEvent",
							 | 
						|
								        "namespace": "com.seaweedfs.test",
							 | 
						|
								        "fields": [
							 | 
						|
								          {"name": "user_id", "type": "string"},
							 | 
						|
								          {"name": "event_type", "type": "string"},
							 | 
						|
								          {"name": "timestamp", "type": "long"},
							 | 
						|
								          {"name": "properties", "type": {"type": "map", "values": "string"}}
							 | 
						|
								        ]
							 | 
						|
								      }
							 | 
						|
								            
							 | 
						|
								  transaction:
							 | 
						|
								    type: "avro" 
							 | 
						|
								    schema: |
							 | 
						|
								      {
							 | 
						|
								        "type": "record",
							 | 
						|
								        "name": "Transaction", 
							 | 
						|
								        "namespace": "com.seaweedfs.test",
							 | 
						|
								        "fields": [
							 | 
						|
								          {"name": "transaction_id", "type": "string"},
							 | 
						|
								          {"name": "amount", "type": "double"},
							 | 
						|
								          {"name": "currency", "type": "string"},
							 | 
						|
								          {"name": "merchant_id", "type": "string"},
							 | 
						|
								          {"name": "timestamp", "type": "long"}
							 | 
						|
								        ]
							 | 
						|
								      }      
							 | 
						|
								
							 | 
						|
								# Metrics and monitoring
							 | 
						|
								metrics:
							 | 
						|
								  enabled: true
							 | 
						|
								  collection_interval: "10s"
							 | 
						|
								  prometheus_port: 8080
							 | 
						|
								  
							 | 
						|
								  # What to measure
							 | 
						|
								  track_latency: true
							 | 
						|
								  track_throughput: true
							 | 
						|
								  track_errors: true
							 | 
						|
								  track_consumer_lag: true
							 | 
						|
								  
							 | 
						|
								  # Latency percentiles to track
							 | 
						|
								  latency_percentiles: [50, 90, 95, 99, 99.9]
							 | 
						|
								
							 | 
						|
								# Load test scenarios
							 | 
						|
								scenarios:
							 | 
						|
								  # Steady state load test
							 | 
						|
								  steady_load:
							 | 
						|
								    producer_rate: 1000  # messages/sec per producer
							 | 
						|
								    ramp_up_time: "30s"
							 | 
						|
								    steady_duration: "240s" 
							 | 
						|
								    ramp_down_time: "30s"
							 | 
						|
								    
							 | 
						|
								  # Burst load test  
							 | 
						|
								  burst_load:
							 | 
						|
								    base_rate: 500
							 | 
						|
								    burst_rate: 5000
							 | 
						|
								    burst_duration: "10s"
							 | 
						|
								    burst_interval: "60s"
							 | 
						|
								    
							 | 
						|
								  # Gradual ramp test
							 | 
						|
								  ramp_test:
							 | 
						|
								    start_rate: 100
							 | 
						|
								    end_rate: 2000
							 | 
						|
								    ramp_duration: "300s"
							 | 
						|
								    step_duration: "30s"
							 | 
						|
								
							 | 
						|
								# Error injection (for resilience testing)
							 | 
						|
								chaos:
							 | 
						|
								  enabled: false
							 | 
						|
								  producer_failure_rate: 0.01  # 1% of producers fail randomly
							 | 
						|
								  consumer_failure_rate: 0.01  # 1% of consumers fail randomly
							 | 
						|
								  network_partition_probability: 0.001  # Network issues
							 | 
						|
								  broker_restart_interval: "0s"  # Restart brokers periodically (0s = disabled)
							 | 
						|
								
							 | 
						|
								# Output and reporting
							 | 
						|
								output:
							 | 
						|
								  results_dir: "/test-results"
							 | 
						|
								  export_prometheus: true
							 | 
						|
								  export_csv: true
							 | 
						|
								  export_json: true
							 | 
						|
								  real_time_stats: true
							 | 
						|
								  stats_interval: "30s"
							 | 
						|
								  
							 | 
						|
								# Logging
							 | 
						|
								logging:
							 | 
						|
								  level: "info"  # debug, info, warn, error
							 | 
						|
								  format: "text"  # text, json
							 | 
						|
								  enable_kafka_logs: false  # Enable Kafka client debug logs
							 |