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