Skip to content
Merged
Changes from 3 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
12 changes: 10 additions & 2 deletions tests/kafkatest/tests/client/client_compatibility_features_test.py
Original file line number Diff line number Diff line change
Expand Up @@ -81,8 +81,12 @@ def __init__(self, test_context):
self.kafka = KafkaService(test_context, num_nodes=3, zk=self.zk, topics=self.topics)

def invoke_compatibility_program(self, features):
# Run the compatibility test on the first Kafka node.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

nit: no need to remove this comment. Otherwise LGTM -- thank you again!

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

will copy that.

node = self.kafka.nodes[0]
if self.zk:
# kafka nodes are set to older version so resolved script path is linked to older assembly.
# run the compatibility test on the first zk node to get script path linked to latest(dev) assembly.
node = self.zk.nodes[0]
else:
node = self.kafka.nodes[0]

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We can use the dev version of the tool on the Kafka node via code like this:

        node = self.kafka.nodes[0]
        cmd = ("%s org.apache.kafka.tools.ClientCompatibilityTest "
               "--bootstrap-server %s "
               "--num-cluster-nodes %d "
               "--topic %s " % (self.dev_script_path,
                               self.kafka.bootstrap_servers(),
                               len(self.kafka.nodes),
                               list(self.topics.keys())[0]))

And then further down we can define the DEV script path like this:

        # Always use the latest version of org.apache.kafka.tools.ClientCompatibilityTest
        # so store away the path to the DEV version before we set the Kafka version
        self.dev_script_path = self.kafka.path.script("kafka-run-class.sh", self.kafka.nodes[0])
        self.kafka.set_version(KafkaVersion(broker_version))

I tested this locally and it solves the problem.

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

copy that

cmd = ("%s org.apache.kafka.tools.ClientCompatibilityTest "
"--bootstrap-server %s "
"--num-cluster-nodes %d "
Expand Down Expand Up @@ -130,4 +134,8 @@ def run_compatibility_test(self, broker_version, metadata_quorum=quorum.zk):
self.kafka.set_version(KafkaVersion(broker_version))
self.kafka.start()
features = get_broker_features(broker_version)
if not self.zk:
# this check/disabling is only necessary due to the fact that we are in early access mode with
# KIP-500 and we should remove the special casing when that his fully implemented
features["describe-acls-supported"] = False
self.invoke_compatibility_program(features)