mirror of https://github.com/apache/kafka.git
Change ZooKeeperTestHarness to QuorumTestHarness so that integration tests which inherit from this class can test Kafka in both ZK and KRaft mode. Test cases which do this can specify the modes they support by including a ParameterizedTest annotation before each test case, like the following: @ParameterizedTest @valuesource(strings = Array("zk", "kraft")) def testValidCreateTopicsRequests(quorum: String): Unit = { ... } For each value that is specified here (zk, kraft), the test case will be run once in the appropriate mode. So the test shown above is run twice. This allows integration tests to be incrementally converted over to support KRaft mode, rather than rewritten to support it. For now, test cases which do not specify a quorum argument will continue to run only in ZK mode. JUnit5 makes the quorum annotation visible in the TestInfo object which each @BeforEeach function in a test can optionally take. Therefore, this PR converts over the setUp function of the quorum base class, plus every derived class, to take a TestInfo argument. The TestInfo object gets "passed up the chain" to the base class, where it determines which quorum type we create (ZK or KRaft). In a few cases, I discovered test cases inheriting from the test harness that had more than one @BeforeEach function. Because the JUnit5 framework does not define the order in which @BeforeEach hooks are run, I changed these to overload setUp() instead, to avoid undefined behavior. The general approach taken here is to make as much as possible work with KRaft, but to leave some things as ZK-only when appropriate. For example, a test that explicitly requests an AdminZkClient object will get an exception if it is running in KRaft mode. Similarly, tests which explicitly request KafkaServer rather than KafkaBroker will get an exception when running in KRaft mode. As a proof of concept, this PR converts over kafka.api.MetricsTest to support KRaft. This PR also renames the quorum controller event handler thread to include the text "QuorumControllerEventHandler". This allows QuorumTestHarness to check for hanging quorum controller threads, as it does for hanging ZK-based controller threads. Finally, ConsumerBounceTest#testRollingBrokerRestartsWithSmallerMaxGroupSizeConfigDisruptsBigGroup caused many failing test runs. Therefore, I disabled it here and filed KAFKA-13421 to fix the test logic to be more reliable. Reviewers: Jason Gustafson <jason@confluent.io>, Igor Soarez <soarez@apple.com> |
||
---|---|---|
.. | ||
api/src | ||
src |