aboutsummaryrefslogtreecommitdiff
path: root/test/kafka/kafka-client-loadtest/config
diff options
context:
space:
mode:
Diffstat (limited to 'test/kafka/kafka-client-loadtest/config')
-rw-r--r--test/kafka/kafka-client-loadtest/config/loadtest.yaml169
1 files changed, 169 insertions, 0 deletions
diff --git a/test/kafka/kafka-client-loadtest/config/loadtest.yaml b/test/kafka/kafka-client-loadtest/config/loadtest.yaml
new file mode 100644
index 000000000..6a453aab9
--- /dev/null
+++ b/test/kafka/kafka-client-loadtest/config/loadtest.yaml
@@ -0,0 +1,169 @@
+# 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: 1000
+ 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 \ No newline at end of file