Skip to content

Commit 4d89541

Browse files
committed
refactor(config): remove unused BigDataTestConfig and related classes
- Deleted `BigDataTestConfig` and its associated components to eliminate unused code. - Updated `spring-bigdata-test.toml` to include a new container environment variable for `localstackS3`. - Adjusted `BigDataTestExtension` to use simplified configurations directly.
1 parent 3a9bb55 commit 4d89541

9 files changed

Lines changed: 273 additions & 545 deletions

File tree

junit5/src/main/kotlin/org/openprojectx/bigdata/test/junit5/BigDataTestConfig.kt renamed to core/src/main/kotlin/org/openprojectx/bigdata/test/core/config/BigDataTestConfig.kt

Lines changed: 132 additions & 126 deletions
Large diffs are not rendered by default.

example/spring-gradle-plugin/build.gradle.kts

Lines changed: 14 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,11 +3,23 @@ plugins {
33
kotlin("plugin.spring") version "2.2.21"
44
id("org.springframework.boot") version "4.0.5"
55
id("io.spring.dependency-management") version "1.1.7"
6-
id("org.openprojectx.bigdata-test") version "0.1.17-SNAPSHOT"
6+
id("org.openprojectx.bigdata-test") version "0.1.20-SNAPSHOT"
77
}
88

99
group = "org.openprojectx.bigdata.test.example"
10-
version = "0.1.17-SNAPSHOT"
10+
version = providers.gradleProperty("bigdataTestPluginVersion")
11+
.orElse(providers.environmentVariable("BIGDATA_TEST_PLUGIN_VERSION"))
12+
.orElse(
13+
providers.provider {
14+
file("../../gradle.properties")
15+
.readLines()
16+
.map(String::trim)
17+
.firstOrNull { it.startsWith("version") && it.contains("=") }
18+
?.substringAfter("=")
19+
?.trim()
20+
},
21+
)
22+
.get()
1123

1224
kotlin {
1325
jvmToolchain(17)

example/spring-gradle-plugin/settings.gradle.kts

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,9 +5,21 @@ pluginManagement {
55
mavenCentral()
66
}
77

8+
fun rootBuildVersion(): String? {
9+
val propertiesFile = settingsDir.resolve("../../gradle.properties").normalize()
10+
if (!propertiesFile.isFile) return null
11+
return propertiesFile.readLines()
12+
.map(String::trim)
13+
.firstOrNull { it.startsWith("version") && it.contains("=") }
14+
?.substringAfter("=")
15+
?.trim()
16+
?.takeIf(String::isNotBlank)
17+
}
18+
819
val bigDataTestPluginVersion =
920
providers.gradleProperty("bigdataTestPluginVersion")
1021
.orElse(providers.environmentVariable("BIGDATA_TEST_PLUGIN_VERSION"))
22+
.orElse(providers.provider { rootBuildVersion() })
1123

1224
resolutionStrategy {
1325
eachPlugin {

example/spring-gradle-plugin/src/main/resources/spring-bigdata-test.toml

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,3 +26,6 @@ mode = "STDOUT"
2626
[containerLogLevels]
2727
kerberos = "DEBUG"
2828
hdfs = "DEBUG"
29+
30+
[containers.localstackS3.env]
31+
DISABLE_CORS_CHECKS = "1"

gradle-plugin/src/main/kotlin/org/openprojectx/bigdata/test/gradle/BigDataTestGradleConfig.kt

Lines changed: 31 additions & 413 deletions
Large diffs are not rendered by default.

gradle-plugin/src/main/kotlin/org/openprojectx/bigdata/test/gradle/BigDataTestGradleExtension.kt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,8 @@ abstract class BigDataTestGradleExtension @Inject constructor(objects: ObjectFac
1919
val extensionConfig: ListProperty<String> = objects.listProperty(String::class.java).convention(emptyList())
2020
val containerLogLevels: MapProperty<String, String> =
2121
objects.mapProperty(String::class.java, String::class.java).convention(emptyMap())
22+
internal val containerCustomizations: ListProperty<String> =
23+
objects.listProperty(String::class.java).convention(emptyList())
2224
val extensionRuntime: BigDataTestGradleExtensionRuntime =
2325
objects.newInstance(BigDataTestGradleExtensionRuntime::class.java)
2426

gradle-plugin/src/main/kotlin/org/openprojectx/bigdata/test/gradle/BigDataTestGradlePlugin.kt

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ import org.gradle.api.Plugin
44
import org.gradle.api.Project
55
import org.gradle.api.artifacts.Configuration
66
import org.gradle.api.artifacts.ExternalModuleDependency
7+
import org.gradle.api.provider.ListProperty
78
import org.gradle.api.provider.MapProperty
89
import org.gradle.api.provider.Property
910
import org.gradle.api.tasks.SourceSetContainer
@@ -43,6 +44,7 @@ class BigDataTestGradlePlugin : Plugin<Project> {
4344
)
4445
spec.parameters.extensionRuntimeClasspath.from(extensionRuntimeClasspath)
4546
spec.parameters.containerLogLevels.set(extension.containerLogLevels)
47+
spec.parameters.containerCustomizations.set(extension.containerCustomizations)
4648

4749
spec.parameters.kerberos.set(extension.services.kerberos)
4850
spec.parameters.hdfs.set(extension.services.hdfs)
@@ -325,7 +327,12 @@ class BigDataTestGradlePlugin : Plugin<Project> {
325327
extension.containerLogs.mode.tomlConvention(config.containerLogs.mode)
326328
extension.containerLogs.directory.tomlConvention(config.containerLogs.directory)
327329
extension.containerLogs.append.tomlConvention(config.containerLogs.append)
328-
extension.containerLogLevels.tomlConvention(config.containerLogLevels.takeIf { it.isNotEmpty() })
330+
extension.containerLogLevels.tomlConvention(
331+
config.containerLogLevels.mapKeys { (service, _) -> service.name }.takeIf { it.isNotEmpty() },
332+
)
333+
extension.containerCustomizations.tomlConvention(
334+
config.encodedContainerCustomizations().takeIf { it.isNotEmpty() },
335+
)
329336
}
330337

331338
private fun Project.resolveExtensionConfigLocation(location: String): String {
@@ -350,6 +357,10 @@ class BigDataTestGradlePlugin : Plugin<Project> {
350357
if (value != null) convention(value)
351358
}
352359

360+
private fun <T : Any> ListProperty<T>.tomlConvention(value: List<T>?) {
361+
if (value != null) convention(value)
362+
}
363+
353364
private data class ExtensionRuntimeNeeds(
354365
val hadoop: Boolean = false,
355366
val kafkaAvro: Boolean = false,

gradle-plugin/src/main/kotlin/org/openprojectx/bigdata/test/gradle/BigDataTestGradleService.kt

Lines changed: 62 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,8 +9,11 @@ import org.gradle.api.services.BuildServiceParameters
99
import java.net.URLClassLoader
1010
import org.openprojectx.bigdata.test.core.BigDataService
1111
import org.openprojectx.bigdata.test.core.BigDataTestKit
12+
import org.openprojectx.bigdata.test.core.ContainerCustomizationOptions
13+
import org.openprojectx.bigdata.test.core.ContainerFileTransferOptions
1214
import org.openprojectx.bigdata.test.core.ContainerLogMode
1315
import org.openprojectx.bigdata.test.core.ContainerLogOptions
16+
import org.openprojectx.bigdata.test.core.ContainerMountOptions
1417
import org.openprojectx.bigdata.test.core.ContainerPortOptions
1518
import org.openprojectx.bigdata.test.core.HdfsOptions
1619
import org.openprojectx.bigdata.test.core.HiveMetastoreDistribution
@@ -32,6 +35,7 @@ abstract class BigDataTestGradleService : BuildService<BigDataTestGradleService.
3235
val extensionConfig: ListProperty<String>
3336
val extensionRuntimeClasspath: ConfigurableFileCollection
3437
val containerLogLevels: MapProperty<String, String>
38+
val containerCustomizations: ListProperty<String>
3539

3640
val kerberos: Property<Boolean>
3741
val hdfs: Property<Boolean>
@@ -272,6 +276,9 @@ abstract class BigDataTestGradleService : BuildService<BigDataTestGradleService.
272276
parameters.containerLogLevels.get().forEach { (service, level) ->
273277
builder.withContainerLogLevel(service.toBigDataService(), level)
274278
}
279+
decodeContainerCustomizations(parameters.containerCustomizations.get()).forEach { (service, customization) ->
280+
builder.withContainerCustomization(service, customization)
281+
}
275282
return builder.build()
276283
}
277284

@@ -324,6 +331,61 @@ abstract class BigDataTestGradleService : BuildService<BigDataTestGradleService.
324331
service.name.replace("_", "").equals(this, ignoreCase = true)
325332
} ?: error("Unknown bigdata-test service '$this'")
326333

334+
private fun decodeContainerCustomizations(encoded: List<String>): Map<BigDataService, ContainerCustomizationOptions> {
335+
val customizations = linkedMapOf<BigDataService, ContainerCustomizationOptions>()
336+
encoded.forEach { item ->
337+
val parts = decode(item)
338+
require(parts.size >= 3) { "Invalid encoded container customization" }
339+
val kind = parts[0]
340+
val service = parts[1].toBigDataService()
341+
val options = when (kind) {
342+
"network" -> {
343+
require(parts.size == 3) { "Invalid encoded network container customization" }
344+
ContainerCustomizationOptions(networkMode = parts[2])
345+
}
346+
"env" -> {
347+
require(parts.size == 4) { "Invalid encoded env container customization" }
348+
ContainerCustomizationOptions(environment = mapOf(parts[2] to parts[3]))
349+
}
350+
"file" -> {
351+
require(parts.size == 6) { "Invalid encoded file container customization" }
352+
val fileMode = parts[5].takeIf { it.isNotBlank() }?.toInt()
353+
val file = if (parts[3].isNotBlank()) {
354+
ContainerFileTransferOptions.hostPath(parts[3], parts[2], fileMode)
355+
} else {
356+
ContainerFileTransferOptions.content(
357+
java.util.Base64.getDecoder().decode(parts[4]),
358+
parts[2],
359+
fileMode,
360+
)
361+
}
362+
ContainerCustomizationOptions(files = listOf(file))
363+
}
364+
"mount" -> {
365+
require(parts.size == 5) { "Invalid encoded mount container customization" }
366+
ContainerCustomizationOptions(
367+
mounts = listOf(
368+
ContainerMountOptions(
369+
hostPath = parts[2],
370+
containerPath = parts[3],
371+
readOnly = parts[4].toBooleanStrict(),
372+
),
373+
),
374+
)
375+
}
376+
"port" -> {
377+
require(parts.size == 4) { "Invalid encoded port container customization" }
378+
ContainerCustomizationOptions(
379+
ports = listOf(ContainerPortOptions(containerPort = parts[2].toInt(), hostPort = parts[3].toInt())),
380+
)
381+
}
382+
else -> error("Unknown encoded container customization kind '$kind'")
383+
}
384+
customizations[service] = customizations[service]?.merge(options) ?: options
385+
}
386+
return customizations
387+
}
388+
327389
private fun BigDataService.propertyName(): String =
328390
name.lowercase().replace('_', '-')
329391

junit5/src/main/kotlin/org/openprojectx/bigdata/test/junit5/BigDataTestExtension.kt

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,8 @@ import org.openprojectx.bigdata.test.core.KerberosOptions
2323
import org.openprojectx.bigdata.test.core.ObjectStoreOptions
2424
import org.openprojectx.bigdata.test.core.PortBindingOptions
2525
import org.openprojectx.bigdata.test.core.TlsOptions
26+
import org.openprojectx.bigdata.test.core.config.BigDataTestConfigLoader
27+
import org.openprojectx.bigdata.test.core.config.BigDataTestHttpTlsConfig
2628

2729
class BigDataTestExtension : BeforeAllCallback, AfterAllCallback, ParameterResolver {
2830
override fun beforeAll(context: ExtensionContext) {
@@ -95,13 +97,13 @@ class BigDataTestExtension : BeforeAllCallback, AfterAllCallback, ParameterResol
9597
),
9698
)
9799
}
98-
config.containerLogLevels.levels.forEach { (service, level) ->
100+
config.containerLogLevels.forEach { (service, level) ->
99101
builder.withContainerLogLevel(service, level)
100102
}
101-
config.containerCustomizations.customizations.forEach { (service, customization) ->
103+
config.containerCustomizations.forEach { (service, customization) ->
102104
builder.withContainerCustomization(service, customization)
103105
}
104-
config.healthChecks.healthChecks.forEach { (service, healthCheck) ->
106+
config.healthChecks.forEach { (service, healthCheck) ->
105107
builder.withHealthCheck(service, healthCheck)
106108
}
107109
val kerberos = annotation.kerberos || services.kerberos == true

0 commit comments

Comments
 (0)