Kafka Test App | Overview

Kafka Test App

The test application charm used in various test scenarios for Charmed Kafka K8s/VM installations.

While this tutorial intends to guide and teach you as you deploy Kafka Test App, it will be most beneficial if you already have a familiarity with:

  • Basic terminal commands.
  • Kafka concepts such as topics, producers and consumers.

Kafka Test App is the workload-less charm. It can be deployed and used in both K8s and VM installations.

Just deploy and relate it:

# Deploy
juju deploy kafka-test-app producer --config role=producer --channel edge
juju deploy kafka-test-app consumer --config role=consumer --channel edge
juju deploy kafka
juju deploy zookeeper

# Integrate
juju integrate kafka producer
juju integrate kafka consumer
juju integrate kafka zookeeper

# The endless test will start automatically, follow:
juju ssh consumer/leader tail -f /tmp/*_consumer.log

==> /tmp/1714675860_consumer.log <==
2024-05-02 18:58:09,873 INFO [__main__] (MainThread) (<module>) ConsumerRecord(topic='test-topic', partition=4, offset=145, timestamp=1714676289867, timestamp_type=0, key=None, value=b'{"timestamp": 1714676289.866915, "_id": "b09368e996e0463a81859f09172ce402", "origin": "juju-b12b18-3 (10.184.219.11)", "content": "Message #821"}', headers=[], checksum=None, serialized_key_size=-1, serialized_value_size=145, serialized_header_size=-1)
2024-05-02 18:58:10,375 INFO [__main__] (MainThread) (<module>) ConsumerRecord(topic='test-topic', partition=4, offset=146, timestamp=1714676290371, timestamp_type=0, key=None, value=b'{"timestamp": 1714676290.371619, "_id": "fde91ab429bd40f1b07f765498ebdff5", "origin": "juju-b12b18-3 (10.184.219.11)", "content": "Message #822"}', headers=[], checksum=None, serialized_key_size=-1, serialized_value_size=145, serialized_header_size=-1)
2024-05-02 18:58:10,882 INFO [__main__] (MainThread) (<module>) ConsumerRecord(topic='test-topic', partition=2, offset=177, timestamp=1714676290875, timestamp_type=0, key=None, value=b'{"timestamp": 1714676290.8754, "_id": "1208f40acb5441588e036a654aff43af", "origin": "juju-b12b18-3 (10.184.219.11)", "content": "Message #823"}', headers=[], checksum=None, serialized_key_size=-1, serialized_value_size=143, serialized_header_size=-1)
2024-05-02 18:58:11,382 INFO [__main__] (MainThread) (<module>) ConsumerRecord(topic='test-topic', partition=2, offset=178, timestamp=1714676291380, timestamp_type=0, key=None, value=b'{"timestamp": 1714676291.380164, "_id": "7e3528a19d15473ca0e3d6d9ab9d09aa", "origin": "juju-b12b18-3 (10.184.219.11)", "content": "Message #824"}', headers=[], checksum=None, serialized_key_size=-1, serialized_value_size=145, serialized_header_size=-1)
2024-05-02 18:58:11,888 INFO [__main__] (MainThread) (<module>) ConsumerRecord(topic='test-topic', partition=2, offset=179, timestamp=1714676291882, timestamp_type=0, key=None, value=b'{"timestamp": 1714676291.882081, "_id": "1ff770274d224cb38c7a758e243a38cc", "origin": "juju-b12b18-3 (10.184.219.11)", "content": "Message #825"}', headers=[], checksum=None, serialized_key_size=-1, serialized_value_size=145, serialized_header_size=-1)

Example of juju status output:

Model   Controller  Cloud/Region         Version  SLA          Timestamp
test53  lxd         localhost/localhost  3.4.2    unsupported  20:51:50+02:00

App        Version  Status  Scale  Charm           Channel      Rev  Exposed  Message
consumer            active      1  kafka-test-app  latest/edge   10  no       Topic test-topic enabled with process consumer
kafka               active      1  kafka           3/stable     156  no       
producer            active      1  kafka-test-app  latest/edge   10  no       Topic test-topic enabled with process producer
zookeeper           active      1  zookeeper       3/stable     126  no       

Unit          Workload  Agent  Machine  Public address  Ports  Message
consumer/0*   active    idle   2        10.184.219.5           Topic test-topic enabled with process consumer
kafka/0*      active    idle   0        10.184.219.254         
producer/0*   active    idle   3        10.184.219.11          Topic test-topic enabled with process producer
zookeeper/0*  active    idle   1        10.184.219.31          

Machine  State    Address         Inst id        Base          AZ  Message
0        started  10.184.219.254  juju-b12b18-0  ubuntu@22.04      Running
1        started  10.184.219.31   juju-b12b18-1  ubuntu@22.04      Running
2        started  10.184.219.5    juju-b12b18-2  ubuntu@22.04      Running
3        started  10.184.219.11   juju-b12b18-3  ubuntu@22.04      Running

Integration provider  Requirer                Interface     Type     Message
consumer:app-peers    consumer:app-peers      app-peers     peer     
kafka:cluster         kafka:cluster           cluster       peer     
kafka:kafka-client    consumer:kafka-cluster  kafka_client  regular  
kafka:kafka-client    producer:kafka-cluster  kafka_client  regular  
kafka:restart         kafka:restart           rolling_op    peer     
kafka:upgrade         kafka:upgrade           upgrade       peer     
producer:app-peers    producer:app-peers      app-peers     peer     
zookeeper:cluster     zookeeper:cluster       cluster       peer     
zookeeper:restart     zookeeper:restart       rolling_op    peer     
zookeeper:upgrade     zookeeper:upgrade       upgrade       peer     
zookeeper:zookeeper   kafka:zookeeper         zookeeper     regular