This is an automated email from the ASF dual-hosted git repository.
chia7712 pushed a commit to branch trunk
in repository https://gitbox.apache.org/repos/asf/kafka.git
The following commit(s) were added to refs/heads/trunk by this push:
new 429701a0bc0 KAFKA-20553 Eliminate the dependencies on
sourceSets.test.output for streams (#22521)
429701a0bc0 is described below
commit 429701a0bc0767950f815b0d8ffdd132e485f704
Author: PoAn Yang <[email protected]>
AuthorDate: Sat Aug 1 13:00:38 2026 +0900
KAFKA-20553 Eliminate the dependencies on sourceSets.test.output for
streams (#22521)
Gradle test fixtures to the clients module and removes all dependencies
on sourceSets.test.output. We should revisit other usages in this JIRA.
This will simplify the dependency graph and unblock the upgrade to
Gradle 9.5+
This patch is working on `streams` and `streams:integration-tests`.
Reviewers: Chia-Ping Tsai <[email protected]>, Matthias J. Sax
<[email protected]>
---
build.gradle | 18 ++++++++++----
.../streams/integration/ForeignKeyJoinSuite.java | 23 ++++++------------
.../integration/QueryableStateIntegrationTest.java | 28 ++++++++++++++++------
.../kafka/streams/integration/StoreQuerySuite.java | 19 ++++-----------
.../org/apache/kafka/streams/KafkaStreamsTest.java | 12 ++--------
.../foreignkeyjoin}/ForeignKeyJoinSuite.java | 21 +++++++---------
.../streams/state/internals}/StoreQuerySuite.java | 16 ++++---------
.../apache/kafka/streams/KeyValueTimestamp.java | 0
.../org/apache/kafka/streams/TopologyWrapper.java | 0
.../internals/assignment/AssignmentTestUtils.java | 0
.../assignment/LegacySubscriptionInfoSerde.java | 0
.../state/internals/RocksDBStoreTestingUtils.java | 0
.../kafka/streams/tests/SmokeTestClient.java | 0
.../kafka/streams/tests/SmokeTestDriver.java | 0
.../apache/kafka/streams/tests/SmokeTestUtil.java | 0
.../kafka/streams/tests/StreamsUpgradeTest.java | 0
.../org/apache/kafka/streams/utils/TestUtils.java | 0
.../kafka/streams/utils/UniqueTopicSerdeScope.java | 0
.../java/org/apache/kafka/test/MockAggregator.java | 0
.../org/apache/kafka/test/MockApiProcessor.java | 0
.../kafka/test/MockApiProcessorSupplier.java | 0
.../org/apache/kafka/test/MockClientSupplier.java | 0
.../org/apache/kafka/test/MockInitializer.java | 0
.../kafka/test/MockInternalTopicManager.java | 0
.../org/apache/kafka/test/MockKeyValueStore.java | 0
.../kafka/test/MockKeyValueStoreBuilder.java | 0
.../java/org/apache/kafka/test/MockMapper.java | 0
.../java/org/apache/kafka/test/MockProcessor.java | 0
.../apache/kafka/test/MockProcessorSupplier.java | 0
.../org/apache/kafka/test/MockValueJoiner.java | 0
.../org/apache/kafka/test/StreamsTestUtils.java | 0
31 files changed, 61 insertions(+), 76 deletions(-)
diff --git a/build.gradle b/build.gradle
index dc8159a2237..4bb9c0980a9 100644
--- a/build.gradle
+++ b/build.gradle
@@ -2703,8 +2703,7 @@ project(':tools') {
testImplementation testFixtures(project(':connect:runtime'))
testImplementation testFixtures(project(':storage'))
testImplementation project(':streams')
- testImplementation project(':streams').sourceSets.test.output
- testImplementation
project(':streams:integration-tests').sourceSets.test.output
+ testImplementation testFixtures(project(':streams'))
testImplementation libs.junitJupiter
testImplementation libs.mockitoCore
testImplementation libs.mockitoJunitJupiter // supports MockitoExtension
@@ -2841,6 +2840,8 @@ project(':streams') {
archivesName = "kafka-streams"
}
+ apply plugin: 'java-test-fixtures'
+
ext.buildStreamsVersionFileName = "kafka-streams-version.properties"
configurations {
@@ -2856,6 +2857,12 @@ project(':streams') {
implementation libs.jacksonDatabind
implementation libs.slf4jApi
+ testFixturesImplementation testFixtures(project(':clients'))
+ testFixturesImplementation libs.hamcrest
+ testFixturesImplementation libs.junitJupiter
+ testFixturesImplementation libs.mockitoCore
+ testFixturesImplementation libs.slf4jApi
+
// testCompileOnly prevents streams from exporting a dependency on
test-utils, which would cause a dependency cycle
testCompileOnly project(':streams:test-utils')
@@ -2945,6 +2952,7 @@ project(':streams') {
systemTestLibs {
dependsOn testJar
+ dependsOn testFixturesJar
}
task genStreamsConfigDocs(type: JavaExec) {
@@ -3002,7 +3010,7 @@ project(':streams:streams-scala') {
api project(':streams')
api libs.scalaLibrary
- testImplementation project(':streams').sourceSets.test.output
+ testImplementation testFixtures(project(':streams'))
testImplementation testFixtures(project(':clients'))
testImplementation project(':streams:test-utils')
@@ -3052,13 +3060,13 @@ project(':streams:integration-tests') {
implementation libs.slf4jApi
testImplementation testFixtures(project(':clients'))
+ testImplementation testFixtures(project(':streams'))
testImplementation project(':group-coordinator')
testImplementation project(':group-coordinator:group-coordinator-api')
testImplementation project(':server')
testImplementation project(':server-common')
testImplementation testFixtures(project(':server-common'))
testImplementation project(':storage')
- testImplementation project(':streams').sourceSets.test.output
testImplementation project(':test-common:test-common-runtime')
testImplementation project(':tools')
testImplementation project(':transaction-coordinator')
@@ -4171,6 +4179,8 @@ gradle.projectsEvaluated {
'raft': ':raft',
'connect/runtime': ':connect:runtime',
'core': ':core',
+ 'streams': ':streams',
+ 'streams/integration-tests': ':streams:integration-tests',
]
allprojects { proj ->
proj.configurations.all { config ->
diff --git
a/streams/integration-tests/src/test/java/org/apache/kafka/streams/integration/ForeignKeyJoinSuite.java
b/streams/integration-tests/src/test/java/org/apache/kafka/streams/integration/ForeignKeyJoinSuite.java
index ca64869a3af..75cb63e35f9 100644
---
a/streams/integration-tests/src/test/java/org/apache/kafka/streams/integration/ForeignKeyJoinSuite.java
+++
b/streams/integration-tests/src/test/java/org/apache/kafka/streams/integration/ForeignKeyJoinSuite.java
@@ -16,34 +16,25 @@
*/
package org.apache.kafka.streams.integration;
-import
org.apache.kafka.streams.kstream.internals.KTableKTableForeignKeyJoinScenarioTest;
-import
org.apache.kafka.streams.kstream.internals.foreignkeyjoin.CombinedKeySchemaTest;
-import
org.apache.kafka.streams.kstream.internals.foreignkeyjoin.ResponseJoinProcessorSupplierTest;
-import
org.apache.kafka.streams.kstream.internals.foreignkeyjoin.SubscriptionResponseWrapperSerdeTest;
-import
org.apache.kafka.streams.kstream.internals.foreignkeyjoin.SubscriptionWrapperSerdeTest;
-
import org.junit.platform.suite.api.SelectClasses;
import org.junit.platform.suite.api.Suite;
/**
- * This suite runs all the tests related to the KTable-KTable foreign key join
feature.
+ * This suite runs the integration tests related to the KTable-KTable foreign
key join feature.
*
- * It can be used from an IDE to selectively just run these tests when
developing code related to KTable-KTable
- * foreign key join.
+ * It can be used from an IDE to selectively just run these integration tests
when developing code
+ * related to KTable-KTable foreign key join. The unit tests for this feature
live in the
+ * {@code streams} module; see
+ * {@code
org.apache.kafka.streams.kstream.internals.foreignkeyjoin.ForeignKeyJoinSuite}.
*
- * If desired, it can also be added to a Gradle build task, although this
isn't strictly necessary, since all
- * these tests are already included in the `:streams:test` task.
+ * If desired, it can also be added to a Gradle build task, although this
isn't strictly necessary,
+ * since all these tests are already included in the {@code
:streams:integration-tests:test} task.
*/
@Suite
@SelectClasses({
KTableKTableForeignKeyInnerJoinMultiIntegrationTest.class,
KTableKTableForeignKeyJoinIntegrationTest.class,
KTableKTableForeignKeyJoinMaterializationIntegrationTest.class,
- KTableKTableForeignKeyJoinScenarioTest.class,
- CombinedKeySchemaTest.class,
- SubscriptionWrapperSerdeTest.class,
- SubscriptionResponseWrapperSerdeTest.class,
- ResponseJoinProcessorSupplierTest.class
})
public class ForeignKeyJoinSuite {
}
diff --git
a/streams/integration-tests/src/test/java/org/apache/kafka/streams/integration/QueryableStateIntegrationTest.java
b/streams/integration-tests/src/test/java/org/apache/kafka/streams/integration/QueryableStateIntegrationTest.java
index ae0e6226ba2..6ff5f4d7f4a 100644
---
a/streams/integration-tests/src/test/java/org/apache/kafka/streams/integration/QueryableStateIntegrationTest.java
+++
b/streams/integration-tests/src/test/java/org/apache/kafka/streams/integration/QueryableStateIntegrationTest.java
@@ -30,7 +30,6 @@ import org.apache.kafka.common.utils.Bytes;
import org.apache.kafka.server.util.MockTime;
import org.apache.kafka.streams.KafkaStreams;
import org.apache.kafka.streams.KafkaStreams.State;
-import org.apache.kafka.streams.KafkaStreamsTest;
import org.apache.kafka.streams.KeyQueryMetadata;
import org.apache.kafka.streams.KeyValue;
import org.apache.kafka.streams.LagInfo;
@@ -84,6 +83,7 @@ import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.Comparator;
+import java.util.HashMap;
import java.util.HashSet;
import java.util.List;
import java.util.Map;
@@ -294,7 +294,7 @@ public class QueryableStateIntegrationTest {
private void verifyAllKVKeys(final List<KafkaStreams> streamsList,
final KafkaStreams streams,
- final KafkaStreamsTest.StateListenerStub
stateListener,
+ final StateListenerStub stateListener,
final Set<String> keys,
final String storeName,
final long timeout,
@@ -346,7 +346,7 @@ public class QueryableStateIntegrationTest {
private void verifyAllWindowedKeys(final List<KafkaStreams> streamsList,
final KafkaStreams streams,
- final
KafkaStreamsTest.StateListenerStub stateListenerStub,
+ final StateListenerStub
stateListenerStub,
final Set<String> keys,
final String storeName,
final Long from,
@@ -531,7 +531,7 @@ public class QueryableStateIntegrationTest {
public void shouldBeAbleToQueryDuringRebalance() throws Exception {
final int numThreads = STREAM_TWO_PARTITIONS;
final List<KafkaStreams> streamsList = new ArrayList<>(numThreads);
- final List<KafkaStreamsTest.StateListenerStub> listeners = new
ArrayList<>(numThreads);
+ final List<StateListenerStub> listeners = new ArrayList<>(numThreads);
final ProducerRunnable producerRunnable = new
ProducerRunnable(streamThree, inputValues, 1);
producerRunnable.run();
@@ -546,7 +546,7 @@ public class QueryableStateIntegrationTest {
props.put(StreamsConfig.CLIENT_ID_CONFIG, "instance-" + i);
final KafkaStreams streams =
createCountStream(streamThree, outputTopicThree,
outputTopicConcurrentWindowed, storeName, windowStoreName, props);
- final KafkaStreamsTest.StateListenerStub listener = new
KafkaStreamsTest.StateListenerStub();
+ final StateListenerStub listener = new StateListenerStub();
streams.setStateListener(listener);
listeners.add(listener);
streamsList.add(streams);
@@ -632,7 +632,7 @@ public class QueryableStateIntegrationTest {
public void shouldBeAbleQueryStandbyStateDuringRebalance() throws
Exception {
final int numThreads = STREAM_TWO_PARTITIONS;
final List<KafkaStreams> streamsList = new ArrayList<>(numThreads);
- final List<KafkaStreamsTest.StateListenerStub> listeners = new
ArrayList<>(numThreads);
+ final List<StateListenerStub> listeners = new ArrayList<>(numThreads);
final ProducerRunnable producerRunnable = new
ProducerRunnable(streamThree, inputValues, 1);
producerRunnable.run();
@@ -649,7 +649,7 @@ public class QueryableStateIntegrationTest {
props.put(StreamsConfig.STATE_DIR_CONFIG,
TestUtils.tempDirectory("shouldBeAbleQueryStandbyStateDuringRebalance-" +
i).getPath());
final KafkaStreams streams =
createCountStream(streamThree, outputTopicThree,
outputTopicConcurrentWindowed, storeName, windowStoreName, props);
- final KafkaStreamsTest.StateListenerStub listener = new
KafkaStreamsTest.StateListenerStub();
+ final StateListenerStub listener = new StateListenerStub();
streams.setStateListener(listener);
listeners.add(listener);
streamsList.add(streams);
@@ -1293,4 +1293,18 @@ public class QueryableStateIntegrationTest {
}
}
+ /**
+ * A state listener that records how many times each state was entered, so
that tests can assert
+ * a rebalance has happened.
+ */
+ private static class StateListenerStub implements
KafkaStreams.StateListener {
+ private final Map<KafkaStreams.State, Long> mapStates = new
HashMap<>();
+
+ @Override
+ public void onChange(final KafkaStreams.State newState,
+ final KafkaStreams.State oldState) {
+ mapStates.merge(newState, 1L, Long::sum);
+ }
+ }
+
}
diff --git
a/streams/integration-tests/src/test/java/org/apache/kafka/streams/integration/StoreQuerySuite.java
b/streams/integration-tests/src/test/java/org/apache/kafka/streams/integration/StoreQuerySuite.java
index e6b212e7d11..e7bdffdb339 100644
---
a/streams/integration-tests/src/test/java/org/apache/kafka/streams/integration/StoreQuerySuite.java
+++
b/streams/integration-tests/src/test/java/org/apache/kafka/streams/integration/StoreQuerySuite.java
@@ -16,32 +16,21 @@
*/
package org.apache.kafka.streams.integration;
-import
org.apache.kafka.streams.state.internals.CompositeReadOnlyKeyValueStoreTest;
-import
org.apache.kafka.streams.state.internals.CompositeReadOnlySessionStoreTest;
-import
org.apache.kafka.streams.state.internals.CompositeReadOnlyWindowStoreTest;
-import org.apache.kafka.streams.state.internals.GlobalStateStoreProviderTest;
-import
org.apache.kafka.streams.state.internals.StreamThreadStateStoreProviderTest;
-import org.apache.kafka.streams.state.internals.WrappingStoreProviderTest;
-
import org.junit.platform.suite.api.SelectClasses;
import org.junit.platform.suite.api.Suite;
/**
- * This suite runs all the tests related to querying StateStores (IQ).
+ * This suite runs the integration tests related to querying StateStores (IQ).
*
- * It can be used from an IDE to selectively just run these tests.
+ * It can be used from an IDE to selectively just run these integration tests.
The unit tests for
+ * StateStore querying live in the {@code streams} module; see
+ * {@code org.apache.kafka.streams.state.internals.StoreQuerySuite}.
*
* Tests ending in the word "Suite" are excluded from the gradle build because
it
* already runs the component tests individually.
*/
@Suite
@SelectClasses({
- CompositeReadOnlyKeyValueStoreTest.class,
- CompositeReadOnlyWindowStoreTest.class,
- CompositeReadOnlySessionStoreTest.class,
- GlobalStateStoreProviderTest.class,
- StreamThreadStateStoreProviderTest.class,
- WrappingStoreProviderTest.class,
QueryableStateIntegrationTest.class,
})
public class StoreQuerySuite {
diff --git
a/streams/src/test/java/org/apache/kafka/streams/KafkaStreamsTest.java
b/streams/src/test/java/org/apache/kafka/streams/KafkaStreamsTest.java
index 8558aaf0d88..528efd03dbc 100644
--- a/streams/src/test/java/org/apache/kafka/streams/KafkaStreamsTest.java
+++ b/streams/src/test/java/org/apache/kafka/streams/KafkaStreamsTest.java
@@ -87,7 +87,6 @@ import org.mockito.stubbing.Answer;
import java.net.InetSocketAddress;
import java.time.Duration;
import java.util.Collections;
-import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Optional;
@@ -168,20 +167,13 @@ public class KafkaStreamsTest {
private MockedConstruction<GlobalStreamThread>
globalStreamThreadMockedConstruction;
private MockedConstruction<Metrics> metricsMockedConstruction;
- public static class StateListenerStub implements
KafkaStreams.StateListener {
- int numChanges = 0;
- KafkaStreams.State oldState;
- KafkaStreams.State newState;
- public Map<KafkaStreams.State, Long> mapStates = new HashMap<>();
+ private static class StateListenerStub implements
KafkaStreams.StateListener {
+ private int numChanges = 0;
@Override
public void onChange(final KafkaStreams.State newState,
final KafkaStreams.State oldState) {
- final long prevCount = mapStates.containsKey(newState) ?
mapStates.get(newState) : 0;
numChanges++;
- this.oldState = oldState;
- this.newState = newState;
- mapStates.put(newState, prevCount + 1);
}
}
diff --git
a/streams/integration-tests/src/test/java/org/apache/kafka/streams/integration/ForeignKeyJoinSuite.java
b/streams/src/test/java/org/apache/kafka/streams/kstream/internals/foreignkeyjoin/ForeignKeyJoinSuite.java
similarity index 58%
copy from
streams/integration-tests/src/test/java/org/apache/kafka/streams/integration/ForeignKeyJoinSuite.java
copy to
streams/src/test/java/org/apache/kafka/streams/kstream/internals/foreignkeyjoin/ForeignKeyJoinSuite.java
index ca64869a3af..a2061a18c6d 100644
---
a/streams/integration-tests/src/test/java/org/apache/kafka/streams/integration/ForeignKeyJoinSuite.java
+++
b/streams/src/test/java/org/apache/kafka/streams/kstream/internals/foreignkeyjoin/ForeignKeyJoinSuite.java
@@ -14,31 +14,26 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package org.apache.kafka.streams.integration;
+package org.apache.kafka.streams.kstream.internals.foreignkeyjoin;
import
org.apache.kafka.streams.kstream.internals.KTableKTableForeignKeyJoinScenarioTest;
-import
org.apache.kafka.streams.kstream.internals.foreignkeyjoin.CombinedKeySchemaTest;
-import
org.apache.kafka.streams.kstream.internals.foreignkeyjoin.ResponseJoinProcessorSupplierTest;
-import
org.apache.kafka.streams.kstream.internals.foreignkeyjoin.SubscriptionResponseWrapperSerdeTest;
-import
org.apache.kafka.streams.kstream.internals.foreignkeyjoin.SubscriptionWrapperSerdeTest;
import org.junit.platform.suite.api.SelectClasses;
import org.junit.platform.suite.api.Suite;
/**
- * This suite runs all the tests related to the KTable-KTable foreign key join
feature.
+ * This suite runs all the unit tests related to the KTable-KTable foreign key
join feature.
*
- * It can be used from an IDE to selectively just run these tests when
developing code related to KTable-KTable
- * foreign key join.
+ * It can be used from an IDE to selectively just run these tests when
developing code related to
+ * KTable-KTable foreign key join. The integration tests for this feature live
in the
+ * {@code streams:integration-tests} module; see
+ * {@code org.apache.kafka.streams.integration.ForeignKeyJoinSuite}.
*
- * If desired, it can also be added to a Gradle build task, although this
isn't strictly necessary, since all
- * these tests are already included in the `:streams:test` task.
+ * Tests ending in the word "Suite" are excluded from the gradle build because
it
+ * already runs the component tests individually.
*/
@Suite
@SelectClasses({
- KTableKTableForeignKeyInnerJoinMultiIntegrationTest.class,
- KTableKTableForeignKeyJoinIntegrationTest.class,
- KTableKTableForeignKeyJoinMaterializationIntegrationTest.class,
KTableKTableForeignKeyJoinScenarioTest.class,
CombinedKeySchemaTest.class,
SubscriptionWrapperSerdeTest.class,
diff --git
a/streams/integration-tests/src/test/java/org/apache/kafka/streams/integration/StoreQuerySuite.java
b/streams/src/test/java/org/apache/kafka/streams/state/internals/StoreQuerySuite.java
similarity index 68%
copy from
streams/integration-tests/src/test/java/org/apache/kafka/streams/integration/StoreQuerySuite.java
copy to
streams/src/test/java/org/apache/kafka/streams/state/internals/StoreQuerySuite.java
index e6b212e7d11..6e64512e5d3 100644
---
a/streams/integration-tests/src/test/java/org/apache/kafka/streams/integration/StoreQuerySuite.java
+++
b/streams/src/test/java/org/apache/kafka/streams/state/internals/StoreQuerySuite.java
@@ -14,22 +14,17 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package org.apache.kafka.streams.integration;
-
-import
org.apache.kafka.streams.state.internals.CompositeReadOnlyKeyValueStoreTest;
-import
org.apache.kafka.streams.state.internals.CompositeReadOnlySessionStoreTest;
-import
org.apache.kafka.streams.state.internals.CompositeReadOnlyWindowStoreTest;
-import org.apache.kafka.streams.state.internals.GlobalStateStoreProviderTest;
-import
org.apache.kafka.streams.state.internals.StreamThreadStateStoreProviderTest;
-import org.apache.kafka.streams.state.internals.WrappingStoreProviderTest;
+package org.apache.kafka.streams.state.internals;
import org.junit.platform.suite.api.SelectClasses;
import org.junit.platform.suite.api.Suite;
/**
- * This suite runs all the tests related to querying StateStores (IQ).
+ * This suite runs all the unit tests related to querying StateStores (IQ).
*
- * It can be used from an IDE to selectively just run these tests.
+ * It can be used from an IDE to selectively just run these tests. The
integration tests for
+ * StateStore querying live in the {@code streams:integration-tests} module;
see
+ * {@code org.apache.kafka.streams.integration.StoreQuerySuite}.
*
* Tests ending in the word "Suite" are excluded from the gradle build because
it
* already runs the component tests individually.
@@ -42,7 +37,6 @@ import org.junit.platform.suite.api.Suite;
GlobalStateStoreProviderTest.class,
StreamThreadStateStoreProviderTest.class,
WrappingStoreProviderTest.class,
- QueryableStateIntegrationTest.class,
})
public class StoreQuerySuite {
}
diff --git
a/streams/src/test/java/org/apache/kafka/streams/KeyValueTimestamp.java
b/streams/src/testFixtures/java/org/apache/kafka/streams/KeyValueTimestamp.java
similarity index 100%
rename from
streams/src/test/java/org/apache/kafka/streams/KeyValueTimestamp.java
rename to
streams/src/testFixtures/java/org/apache/kafka/streams/KeyValueTimestamp.java
diff --git
a/streams/src/test/java/org/apache/kafka/streams/TopologyWrapper.java
b/streams/src/testFixtures/java/org/apache/kafka/streams/TopologyWrapper.java
similarity index 100%
rename from streams/src/test/java/org/apache/kafka/streams/TopologyWrapper.java
rename to
streams/src/testFixtures/java/org/apache/kafka/streams/TopologyWrapper.java
diff --git
a/streams/src/test/java/org/apache/kafka/streams/processor/internals/assignment/AssignmentTestUtils.java
b/streams/src/testFixtures/java/org/apache/kafka/streams/processor/internals/assignment/AssignmentTestUtils.java
similarity index 100%
rename from
streams/src/test/java/org/apache/kafka/streams/processor/internals/assignment/AssignmentTestUtils.java
rename to
streams/src/testFixtures/java/org/apache/kafka/streams/processor/internals/assignment/AssignmentTestUtils.java
diff --git
a/streams/src/test/java/org/apache/kafka/streams/processor/internals/assignment/LegacySubscriptionInfoSerde.java
b/streams/src/testFixtures/java/org/apache/kafka/streams/processor/internals/assignment/LegacySubscriptionInfoSerde.java
similarity index 100%
rename from
streams/src/test/java/org/apache/kafka/streams/processor/internals/assignment/LegacySubscriptionInfoSerde.java
rename to
streams/src/testFixtures/java/org/apache/kafka/streams/processor/internals/assignment/LegacySubscriptionInfoSerde.java
diff --git
a/streams/src/test/java/org/apache/kafka/streams/state/internals/RocksDBStoreTestingUtils.java
b/streams/src/testFixtures/java/org/apache/kafka/streams/state/internals/RocksDBStoreTestingUtils.java
similarity index 100%
rename from
streams/src/test/java/org/apache/kafka/streams/state/internals/RocksDBStoreTestingUtils.java
rename to
streams/src/testFixtures/java/org/apache/kafka/streams/state/internals/RocksDBStoreTestingUtils.java
diff --git
a/streams/src/test/java/org/apache/kafka/streams/tests/SmokeTestClient.java
b/streams/src/testFixtures/java/org/apache/kafka/streams/tests/SmokeTestClient.java
similarity index 100%
rename from
streams/src/test/java/org/apache/kafka/streams/tests/SmokeTestClient.java
rename to
streams/src/testFixtures/java/org/apache/kafka/streams/tests/SmokeTestClient.java
diff --git
a/streams/src/test/java/org/apache/kafka/streams/tests/SmokeTestDriver.java
b/streams/src/testFixtures/java/org/apache/kafka/streams/tests/SmokeTestDriver.java
similarity index 100%
rename from
streams/src/test/java/org/apache/kafka/streams/tests/SmokeTestDriver.java
rename to
streams/src/testFixtures/java/org/apache/kafka/streams/tests/SmokeTestDriver.java
diff --git
a/streams/src/test/java/org/apache/kafka/streams/tests/SmokeTestUtil.java
b/streams/src/testFixtures/java/org/apache/kafka/streams/tests/SmokeTestUtil.java
similarity index 100%
rename from
streams/src/test/java/org/apache/kafka/streams/tests/SmokeTestUtil.java
rename to
streams/src/testFixtures/java/org/apache/kafka/streams/tests/SmokeTestUtil.java
diff --git
a/streams/src/test/java/org/apache/kafka/streams/tests/StreamsUpgradeTest.java
b/streams/src/testFixtures/java/org/apache/kafka/streams/tests/StreamsUpgradeTest.java
similarity index 100%
rename from
streams/src/test/java/org/apache/kafka/streams/tests/StreamsUpgradeTest.java
rename to
streams/src/testFixtures/java/org/apache/kafka/streams/tests/StreamsUpgradeTest.java
diff --git
a/streams/src/test/java/org/apache/kafka/streams/utils/TestUtils.java
b/streams/src/testFixtures/java/org/apache/kafka/streams/utils/TestUtils.java
similarity index 100%
rename from streams/src/test/java/org/apache/kafka/streams/utils/TestUtils.java
rename to
streams/src/testFixtures/java/org/apache/kafka/streams/utils/TestUtils.java
diff --git
a/streams/src/test/java/org/apache/kafka/streams/utils/UniqueTopicSerdeScope.java
b/streams/src/testFixtures/java/org/apache/kafka/streams/utils/UniqueTopicSerdeScope.java
similarity index 100%
rename from
streams/src/test/java/org/apache/kafka/streams/utils/UniqueTopicSerdeScope.java
rename to
streams/src/testFixtures/java/org/apache/kafka/streams/utils/UniqueTopicSerdeScope.java
diff --git a/streams/src/test/java/org/apache/kafka/test/MockAggregator.java
b/streams/src/testFixtures/java/org/apache/kafka/test/MockAggregator.java
similarity index 100%
rename from streams/src/test/java/org/apache/kafka/test/MockAggregator.java
rename to
streams/src/testFixtures/java/org/apache/kafka/test/MockAggregator.java
diff --git a/streams/src/test/java/org/apache/kafka/test/MockApiProcessor.java
b/streams/src/testFixtures/java/org/apache/kafka/test/MockApiProcessor.java
similarity index 100%
rename from streams/src/test/java/org/apache/kafka/test/MockApiProcessor.java
rename to
streams/src/testFixtures/java/org/apache/kafka/test/MockApiProcessor.java
diff --git
a/streams/src/test/java/org/apache/kafka/test/MockApiProcessorSupplier.java
b/streams/src/testFixtures/java/org/apache/kafka/test/MockApiProcessorSupplier.java
similarity index 100%
rename from
streams/src/test/java/org/apache/kafka/test/MockApiProcessorSupplier.java
rename to
streams/src/testFixtures/java/org/apache/kafka/test/MockApiProcessorSupplier.java
diff --git
a/streams/src/test/java/org/apache/kafka/test/MockClientSupplier.java
b/streams/src/testFixtures/java/org/apache/kafka/test/MockClientSupplier.java
similarity index 100%
rename from streams/src/test/java/org/apache/kafka/test/MockClientSupplier.java
rename to
streams/src/testFixtures/java/org/apache/kafka/test/MockClientSupplier.java
diff --git a/streams/src/test/java/org/apache/kafka/test/MockInitializer.java
b/streams/src/testFixtures/java/org/apache/kafka/test/MockInitializer.java
similarity index 100%
rename from streams/src/test/java/org/apache/kafka/test/MockInitializer.java
rename to
streams/src/testFixtures/java/org/apache/kafka/test/MockInitializer.java
diff --git
a/streams/src/test/java/org/apache/kafka/test/MockInternalTopicManager.java
b/streams/src/testFixtures/java/org/apache/kafka/test/MockInternalTopicManager.java
similarity index 100%
rename from
streams/src/test/java/org/apache/kafka/test/MockInternalTopicManager.java
rename to
streams/src/testFixtures/java/org/apache/kafka/test/MockInternalTopicManager.java
diff --git a/streams/src/test/java/org/apache/kafka/test/MockKeyValueStore.java
b/streams/src/testFixtures/java/org/apache/kafka/test/MockKeyValueStore.java
similarity index 100%
rename from streams/src/test/java/org/apache/kafka/test/MockKeyValueStore.java
rename to
streams/src/testFixtures/java/org/apache/kafka/test/MockKeyValueStore.java
diff --git
a/streams/src/test/java/org/apache/kafka/test/MockKeyValueStoreBuilder.java
b/streams/src/testFixtures/java/org/apache/kafka/test/MockKeyValueStoreBuilder.java
similarity index 100%
rename from
streams/src/test/java/org/apache/kafka/test/MockKeyValueStoreBuilder.java
rename to
streams/src/testFixtures/java/org/apache/kafka/test/MockKeyValueStoreBuilder.java
diff --git a/streams/src/test/java/org/apache/kafka/test/MockMapper.java
b/streams/src/testFixtures/java/org/apache/kafka/test/MockMapper.java
similarity index 100%
rename from streams/src/test/java/org/apache/kafka/test/MockMapper.java
rename to streams/src/testFixtures/java/org/apache/kafka/test/MockMapper.java
diff --git a/streams/src/test/java/org/apache/kafka/test/MockProcessor.java
b/streams/src/testFixtures/java/org/apache/kafka/test/MockProcessor.java
similarity index 100%
rename from streams/src/test/java/org/apache/kafka/test/MockProcessor.java
rename to streams/src/testFixtures/java/org/apache/kafka/test/MockProcessor.java
diff --git
a/streams/src/test/java/org/apache/kafka/test/MockProcessorSupplier.java
b/streams/src/testFixtures/java/org/apache/kafka/test/MockProcessorSupplier.java
similarity index 100%
rename from
streams/src/test/java/org/apache/kafka/test/MockProcessorSupplier.java
rename to
streams/src/testFixtures/java/org/apache/kafka/test/MockProcessorSupplier.java
diff --git a/streams/src/test/java/org/apache/kafka/test/MockValueJoiner.java
b/streams/src/testFixtures/java/org/apache/kafka/test/MockValueJoiner.java
similarity index 100%
rename from streams/src/test/java/org/apache/kafka/test/MockValueJoiner.java
rename to
streams/src/testFixtures/java/org/apache/kafka/test/MockValueJoiner.java
diff --git a/streams/src/test/java/org/apache/kafka/test/StreamsTestUtils.java
b/streams/src/testFixtures/java/org/apache/kafka/test/StreamsTestUtils.java
similarity index 100%
rename from streams/src/test/java/org/apache/kafka/test/StreamsTestUtils.java
rename to
streams/src/testFixtures/java/org/apache/kafka/test/StreamsTestUtils.java