-
Notifications
You must be signed in to change notification settings - Fork 14k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
KAFKA-5112: Update compatibility system tests to include 0.10.2.1 #2701
Conversation
Review by @hachikuji, @ewencp, @cmccabe. |
System tests run: https://jenkins.confluent.io/job/system-test-kafka-branch-builder-2/204/ (URL will work once the run starts, it's currently queued). |
Refer to this link for build results (access rights to CI server needed): |
Refer to this link for build results (access rights to CI server needed): |
Refer to this link for build results (access rights to CI server needed): |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@ijuma tests/kafkatest/sanity_checks/test_verifiable_producer.py and tests/kafkatest/tests/streams/streams_broker_compatibility_test.py seem like they might be missing from this patch.
Although the former might be a candidate to be deleted (along with other sanity checks) since they're effectively subsets of other tests anyway and so probably cost more test time than they are worth in debugging value.
tests/docker/Dockerfile
Outdated
@@ -27,5 +27,6 @@ RUN mkdir -p "/opt/kafka-0.8.2.2" && curl -s "${MIRROR}kafka/0.8.2.2/kafka_2.10- | |||
RUN mkdir -p "/opt/kafka-0.9.0.1" && curl -s "${MIRROR}kafka/0.9.0.1/kafka_2.10-0.9.0.1.tgz" | tar xz --strip-components=1 -C "/opt/kafka-0.9.0.1" | |||
RUN mkdir -p "/opt/kafka-0.10.0.1" && curl -s "${MIRROR}kafka/0.10.0.1/kafka_2.10-0.10.0.1.tgz" | tar xz --strip-components=1 -C "/opt/kafka-0.10.0.1" | |||
RUN mkdir -p "/opt/kafka-0.10.1.1" && curl -s "${MIRROR}kafka/0.10.1.1/kafka_2.10-0.10.1.1.tgz" | tar xz --strip-components=1 -C "/opt/kafka-0.10.1.1" | |||
RUN mkdir -p "/opt/kafka-0.10.2.0" && curl -s "${MIRROR}kafka/0.10.2.0/kafka_2.10-0.10.2.0.tgz" | tar xz --strip-components=1 -C "/opt/kafka-0.10.2.0" |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I am wondering based on how many places require modification if we should centralize the version info into a single location, e.g. a json file that everything else can rely on and code like this could be turned into a loop. Seems like these version additions would require touching a lot less stuff that way.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
That sounds good. OK if I file a JIRA for it?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
👍
@@ -46,12 +45,12 @@ def setUp(self): | |||
|
|||
@cluster(num_nodes=6) | |||
@parametrize(producer_version=str(LATEST_0_8_2), consumer_version=str(LATEST_0_8_2), compression_types=["none"], new_consumer=False, timestamp_type=None) | |||
@parametrize(producer_version=str(LATEST_0_8_2), consumer_version=str(LATEST_0_9), compression_types=["none"], new_consumer=False, timestamp_type=None) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I'm a fan of removing unneeded parameterizations, but is this ok to remove just because we don't think there's anything between 0.8 and 0.9 clients that would be affected by running against an 0.10 broker?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
It seems a bit odd that we have so many combinations for 0.8.2 and 0.9 while we have very few for each of the 0.10.x versions. Note that we a few cases where the consumer version is LATEST_0_9.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Yeah, I guess I just don't know what the strategy is for this test in terms of how we are choosing the combinations of producer/consumer version. Which makes it hard to review a patch adding/removing parameterizations :)
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I can't discern a pattern apart from "have some coverage for all the versions" at the moment. Starting from a clean slate, if we want to be completely distrustful of all parts of the system, we'd want to test every possible producer/consumer combination. But we test same version
producer/consumer pairs in many other tests, so we could drop those perhaps. So, this test would be about testing producer/consumers with different versions. The numbers will grow pretty quickly if we don't drop support for older versions though.
What do you think?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I think the exhaustive approach is good when we can do things like label tests for infrequent/must-pass-for-final-release, but kinda wasteful nightly.
I just lost track of how we decided what to add/remove/modify from these. If we're convinced we have sufficient coverage, then I'm fine with the modifications.
I'll update this PR to also take into account that we now have 3 message format versions ( |
36ab9fa
to
f9388bc
Compare
Refer to this link for build results (access rights to CI server needed): |
Refer to this link for build results (access rights to CI server needed): |
72b14b0
to
9e38fed
Compare
Refer to this link for build results (access rights to CI server needed): |
Refer to this link for build results (access rights to CI server needed): |
@@ -62,11 +62,16 @@ def perform_upgrade(self, from_kafka_version, to_message_format_version=None): | |||
self.kafka.start_node(node) | |||
|
|||
@cluster(num_nodes=6) | |||
@parametrize(from_kafka_version=str(LATEST_0_10_2), to_message_format_version=str(LATEST_0_9), compression_types=["none"]) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Discussed offline. This one looks a little funny. We shouldn't be able to downgrade the message format.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The test actually passes. I guess it makes sense. If the clients understand the new format, then it works regardless of whether the broker/topic config has an older version.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Left one comment, but the rest LGTM (provided tests are passing). One improvement which we could consider separately is testing upgrades from a newer kafka version running an older message format.
9e38fed
to
43f5466
Compare
Refer to this link for build results (access rights to CI server needed): |
Refer to this link for build results (access rights to CI server needed): |
Thanks for the updates. LGTM |
Since the branch builder is out of action, I ran the modified system tests via AWS and they passed. Merging to trunk and 0.11.0. |
Also update message format tests now that we have a third message format. Finally, set group.initial.rebalance.delay.ms=100. Author: Ismael Juma <ismael@juma.me.uk> Reviewers: Ewen Cheslack-Postava <ewen@confluent.io>, Jason Gustafson <jason@confluent.io> Closes #2701 from ijuma/update-upgrade-tests-for-0.11 (cherry picked from commit b119d04) Signed-off-by: Ismael Juma <ismael@juma.me.uk>
No description provided.