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 7accdc89e69 KAFKA-20553 Eliminate the dependencies on
sourceSets.test.output for storage:storage-api (#22244)
7accdc89e69 is described below
commit 7accdc89e69dae59bdc64d5856be63ab49d95784
Author: Murali Basani <[email protected]>
AuthorDate: Sun May 10 05:14:04 2026 +0200
KAFKA-20553 Eliminate the dependencies on sourceSets.test.output for
storage:storage-api (#22244)
Ref : https://issues.apache.org/jira/browse/KAFKA-20553 Similar to
https://github.com/apache/kafka/pull/22229 but for storage:storage-api
module
- Apply `java-test-fixtures` plugin to `:storage:storage-api`
- Moved couple of tests to testFixtures source
- Added `testFixturesImplementation project(':clients')` which is the
only one needed for the above test classes which moved
- Update build gradle to handle above rewiring
Reviewers: Chia-Ping Tsai <[email protected]>
---
build.gradle | 24 ++++++++++++++--------
.../storage/NoOpRemoteLogMetadataManager.java | 0
.../remote/storage/NoOpRemoteStorageManager.java | 0
3 files changed, 16 insertions(+), 8 deletions(-)
diff --git a/build.gradle b/build.gradle
index 29bcc6a5ce7..bb689dee974 100644
--- a/build.gradle
+++ b/build.gradle
@@ -1024,7 +1024,7 @@ project(':server') {
testImplementation testLog4j2Libs
testImplementation project(':test-common:test-common-internal-api')
testImplementation project(':test-common:test-common-runtime')
- testImplementation project(':storage:storage-api').sourceSets.test.output
+ testImplementation testFixtures(project(':storage:storage-api'))
testImplementation testFixtures(project(':server-common'))
testRuntimeOnly runtimeTestLibs
@@ -1144,7 +1144,7 @@ project(':core') {
testImplementation project(':metadata').sourceSets.test.output
testImplementation project(':raft').sourceSets.test.output
testImplementation testFixtures(project(':server-common'))
- testImplementation project(':storage:storage-api').sourceSets.test.output
+ testImplementation testFixtures(project(':storage:storage-api'))
testImplementation project(':server').sourceSets.test.output
testImplementation project(':streams')
testImplementation project(':test-common:test-common-runtime')
@@ -2324,12 +2324,16 @@ project(':storage:storage-api') {
archivesName = "kafka-storage-api"
}
+ apply plugin: 'java-test-fixtures'
+
dependencies {
implementation project(':clients')
implementation project(':server-common')
implementation libs.metrics
implementation libs.slf4jApi
+ testFixturesImplementation project(':clients')
+
testImplementation project(':clients')
testImplementation testFixtures(project(':clients'))
testImplementation libs.junitJupiter
@@ -2403,7 +2407,7 @@ project(':storage') {
testImplementation testFixtures(project(':clients'))
testImplementation project(':core')
testImplementation project(':core').sourceSets.test.output
- testImplementation project(':storage:storage-api').sourceSets.test.output
+ testImplementation testFixtures(project(':storage:storage-api'))
testImplementation project(':test-common:test-common-internal-api')
testImplementation project(':test-common:test-common-runtime')
testImplementation project(':test-common:test-common-util')
@@ -4067,18 +4071,22 @@ task aggregatedJavadoc(type: Javadoc) {
gradle.projectsEvaluated {
// Validate that no module depends on test output directly
- def protectedModules = ['clients', 'server-common']
+ def protectedModules = [
+ 'clients': ':clients',
+ 'server-common': ':server-common',
+ 'storage/api': ':storage:storage-api',
+ ]
allprojects { proj ->
proj.configurations.all { config ->
config.dependencies.each { dep ->
if (dep instanceof FileCollectionDependency) {
dep.files.files.each { file ->
- protectedModules.each { module ->
- if
(file.absolutePath.endsWith("/${module}/build/classes/java/test")) {
+ protectedModules.each { dir, projectPath ->
+ if
(file.absolutePath.endsWith("/${dir}/build/classes/java/test")) {
throw new GradleException("""
-ERROR: Dependency on :${module} test output is not allowed.
+ERROR: Dependency on ${projectPath} test output is not allowed.
Found in project ${proj.path} configuration '${config.name}'.
-Use `testFixtures(project(':${module}'))` instead of
`project(':${module}').sourceSets.test.output`
+Use `testFixtures(project('${projectPath}'))` instead of
`project('${projectPath}').sourceSets.test.output`
""")
}
}
diff --git
a/storage/api/src/test/java/org/apache/kafka/server/log/remote/storage/NoOpRemoteLogMetadataManager.java
b/storage/api/src/testFixtures/java/org/apache/kafka/server/log/remote/storage/NoOpRemoteLogMetadataManager.java
similarity index 100%
rename from
storage/api/src/test/java/org/apache/kafka/server/log/remote/storage/NoOpRemoteLogMetadataManager.java
rename to
storage/api/src/testFixtures/java/org/apache/kafka/server/log/remote/storage/NoOpRemoteLogMetadataManager.java
diff --git
a/storage/api/src/test/java/org/apache/kafka/server/log/remote/storage/NoOpRemoteStorageManager.java
b/storage/api/src/testFixtures/java/org/apache/kafka/server/log/remote/storage/NoOpRemoteStorageManager.java
similarity index 100%
rename from
storage/api/src/test/java/org/apache/kafka/server/log/remote/storage/NoOpRemoteStorageManager.java
rename to
storage/api/src/testFixtures/java/org/apache/kafka/server/log/remote/storage/NoOpRemoteStorageManager.java