# README
Information for soak test for go client
The soak test contains 2 applications: soakclient.go for one application : Create Producer-1 to keep sending messages to the input-topic. Create Consumer-2 to receive messages from the output-topic.
soakclient_transaction.go for the other application: Create Consumer-1 to receive messages from the input-topic. Create transactional producer Producer-2 to sending the received messages to the output-topic. The initTransaction API registers a transactional.id when creating the producer. The producer sends the messages to the output-topic. Commit transaction after sending 100 messages each time or 1 second.
Instruction on configuration and running
Build soaktest API
$ cd soaktest
$ go mod init soaktest
$ go mod tidy
$ go install soaktest
Build and run soakclient.go
$ cd soaktest/soakclient
$ go build
$ ./soakclient -broker <broker> -inputTopic <..> -outTopic <..> -groupID <..> -inputTopicPartitionsNum <..> -outTopicPartitionsNum <..> -replicationFactor <..> -ccloudAPIKey <ccloudAPIKey> -ccloudAPISecret <ccloudAPISecret>
Build and run soakclient_transaction.go
$ cd soaktest/soakclient_transaction
$ go build
$ ./soakclient_transaction -broker <broker> -inputTopic <..> -outTopic <..> -outTopicPartitionsNum <..> -groupID <..> -transactionID <..> -ccloudAPIKey <ccloudAPIKey> -ccloudAPISecret <ccloudAPISecret>
The default values if doesn't input from the command lines
inputTopic: "inputTopic"
outTopic: "outTopic"
groupID : "groupID"
inputTopicPartitionsNum: 1
outTopicPartitionsNum: 1
replicationFactor: 1
transactionID: transactionID
Recommend instance type and size
At lease 4 CPUs and 8 GB volume size
# Packages
No description provided by the author
No description provided by the author
# Functions
ConvertUint64ToByteArray converts the unit64 type to []byte.
DatadogGauge submits gauge type metrics.
DatadogIncrement submits increment type metrics.
GetRusage calculates RSS memory usage.
GetRusageMetrics is the entrance for resource calculation If caught a terminate signal, return, else call the GetRusage() function to calculate resource usage every 10 seconds.
HandleMessage handles received messages, monitors latency and verifies messages.
HandleStatsEvent converts Stats events to map.
InitLogFiles initials the log folder and file, if the folder or file doesn't exist, create one, otherwise open it directly.
PrintConsumerStatus prints the information for the consumer.
PrintProducerStatus prints the information for the producer.
ProducerDeliveryCheck handles delivery report for producer.
# Constants
ConsumerError combines the metrics name for consumer client-level errors.
FailedToProduceMsg combines the metrics name if failed to produce messages.
ProducerError combines the metrics name for producer client-level errors.
# Variables
ConsumerErrCnt counts the number of consumer client-level errors.
ErrorLogger logs error level logs to the log file.
InfoLogger logs info level logs to the log file.
ProduceMsgCnt is msg counter for producer.
ProducerErrCnt counts the number of producer client-level errors.
WarningLogger logs warning level logs to the log file.