This proposal suggests creating a new repository for Strimzi
ST client based on Strimzi client-examples.
Currently, we are using two clients in our STs:
InternalKafkaClients
(based ontest-client
image)example clients
(from Strimzi client-examples).
The plan is to remove the InternalKafkaClients
and keep only example clients
.
The test-client
is not sufficient anymore, it can create single producer/consumer, send/receive messages, and then we can assert result.
We are stuck here, and we need to wait until a producer/consumer is finished.
With example clients
we are able to do a lot more.
For example - create a continuous job for sending messages with delay,
stack the producers to create a traffic, add extra configuration, use different types of producer/consumer (for Bridge, Kafka, ...) and many more.
While testing Strimzi
we need, in some cases, special configuration of clients, which is not implemented in the client-examples
.
The client-examples
repository should be really exemplary,
and we should not add any extra configuration or extensions to it.
For this kind of enhancements we should have repository, which will have client-examples
as base,
and we will be able to add special setting without disrupting the basic idea of example clients.
-
Create a new repository for
systemtest client
- name will be
test-clients
- component owners will be same as for STs
- PR checks:
- DCO
- build -
mvn
build, checkstyle (with some simple UTs or ITs)
- complex implementation of clients for testing
- we'll use both Kafka and Bridge clients from
client-examples
- will be based on Strimzi client-examples - we'll copy the
client-examples
code and then modify it - each repo will then go their own way - we'll be able to modify it with our special configuration
- the main idea of example clients remain intact
- name will be
-
The original
client-examples
repository will be kept
There are many things we can implement.
Good example is returning exceptions and return codes into the job
status (as we are using k8s
jobs for deploying the example clients) and asserting it in tests.
Currently, we have to grep exceptions from the job log - which can be a problem.
The images will be built as in client-examples
after each merged PR and pushed to strimzi
repository on quay.io
with latest
tag.
The systemtest client
will have its own release cadence and versioning, which will depend on new features.
The systemtest client
will support latest released version of Kafka with several older.
We'll start with version 2.5.0
, as it's the oldest supported version by latest released version of Strimzi (0.22.1),
and we'll support it until test-clients
features will allow us to use that specific version or until we will decide to completely deprecate it.
For each supported Kafka version will be separate tag - pattern will be test-client/TEST_CLIENTS_VERSION-kafka-KAFKA_VERSION
.
Client will be implemented in Java, same as client-examples
.
Only systemtest
part of the Strimzi
will be affected.
There are no rejected alternatives at the moment.