You are viewing a plain text version of this content. The canonical link for it is here.
Posted to jira@kafka.apache.org by "Nikolay Izhikov (Jira)" <ji...@apache.org> on 2020/01/15 17:34:00 UTC

[jira] [Commented] (KAFKA-9323) Refactor Streams' upgrade system tests

    [ https://issues.apache.org/jira/browse/KAFKA-9323?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17016167#comment-17016167 ] 

Nikolay Izhikov commented on KAFKA-9323:
----------------------------------------

Hello, [~ableegoldman]

Can you, please, confirm my analysis of the current source code of stream system tests:

We have 4 python scripts with the upgrade tests:
 * streams_broker_compatibility_test.py
 * streams_cooperative_rebalance_upgrade_test.py
 * streams_statis_memebership_test.py
 * streams_upgrade_test.py

> a) only the version probing test tests "forwards compatibility" (upgrade from latest to future version)

streams_upgrade_test.py#test_version_probing_upgrade

> b) nothing tests version probing "backwards compatibility" (upgrade from older version to latest), except:

a new test that should be created.

> c) the cooperative rebalancing test actually happens to involve a version probing step, and so coincidentally DOES test VP (but only starting with 2.4)

stream_cooperative_rebalance_upgrade_test.py#test_upgrade_to_cooperative_rebalance

> we should have a single matrix that we update with each new version that specifies which upgrade path that version combination actually requires

Do we have this matrix written somewhere?

As I can understand your proposal we should refactor all script from the mentioned files.
 Is it correct?

> Refactor Streams'  upgrade system tests
> ---------------------------------------
>
>                 Key: KAFKA-9323
>                 URL: https://issues.apache.org/jira/browse/KAFKA-9323
>             Project: Kafka
>          Issue Type: Improvement
>          Components: streams
>            Reporter: Sophie Blee-Goldman
>            Assignee: Nikolay Izhikov
>            Priority: Major
>
> With the introduction of version probing in 2.0 and cooperative rebalancing in 2.4, the specific upgrade path depends heavily on the to & from version. This can be a complex operation, and we should make sure to test a realistic upgrade scenario across all possible combinations. The current system tests have gaps however, which have allowed bugs in the upgrade path to slip by unnoticed for several versions. 
> Our current system tests include a metadata upgrade test, a version probing test, and a cooperative upgrade test. This has a few drawbacks:
> a) only the version probing test tests "forwards compatibility" (upgrade from latest to future version)
> b) nothing tests version probing "backwards compatibility" (upgrade from older version to latest), except:
> c) the cooperative rebalancing test actually happens to involve a version probing step, and so coincidentally DOES test VP (but only starting with 2.4)
> d) each test itself tries to test the upgrade across different versions, meaning there may be overlap and/or unnecessary tests 
> e) as new versions are released, it is unclear to those not directly involved in these tests and/or projects whether and what needs to be updated (eg should this new version be added to the cooperative test? should the old version be aded to the metadata test?)
> We should definitely fill in the testing gap here, but how to do so is of course up for discussion.
> I would propose to refactor the upgrade tests, and rather than maintain different lists of versions to pass as input to each different test, we should have a single matrix that we update with each new version that specifies which upgrade path that version combination actually requires. We can then loop through each version combination and test only the actual upgrade path that users would actually need to follow. This way we can be sure we are not missing anything, as each and every possible upgrade would be tested.



--
This message was sent by Atlassian Jira
(v8.3.4#803005)