Skip to content

Commit 8ad3efc

Browse files
committed
test: fix subject collision
1 parent d50094c commit 8ad3efc

File tree

4 files changed

+42
-31
lines changed

4 files changed

+42
-31
lines changed

src/integration/kotlin/com/github/imflog/schema/registry/tasks/compatibility/CompatibilityTaskIT.kt

Lines changed: 9 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -23,15 +23,18 @@ import org.junit.jupiter.params.provider.ArgumentsProvider
2323
import org.junit.jupiter.params.provider.ArgumentsSource
2424
import org.junit.jupiter.params.support.ParameterDeclarations
2525
import java.io.File
26+
import java.util.UUID
2627
import java.util.stream.Stream
2728

2829
class CompatibilityTaskIT : KafkaTestContainersUtils() {
2930
private lateinit var folderRule: TemporaryFolder
3031
private lateinit var buildFile: File
32+
private lateinit var subjectId: String
3133

3234
@BeforeEach
3335
fun init() {
3436
folderRule = TemporaryFolder()
37+
subjectId = UUID.randomUUID().toString().take(8)
3538
}
3639

3740
@AfterEach
@@ -53,7 +56,7 @@ class CompatibilityTaskIT : KafkaTestContainersUtils() {
5356
folderRule.create()
5457
folderRule.newFolder(type.name)
5558

56-
val subjectName = "parameterized-${type.name}"
59+
val subjectName = "parameterized-${type.name}-$subjectId"
5760

5861
val userSubject = "$subjectName-user"
5962
client.register(userSubject, userSchema)
@@ -108,7 +111,7 @@ class CompatibilityTaskIT : KafkaTestContainersUtils() {
108111
folderRule.create()
109112
folderRule.newFolder(type.name)
110113

111-
val subjectName = "parameterized-${type.name}"
114+
val subjectName = "parameterized-${type.name}-fail-$subjectId"
112115

113116
val userSubject = "$subjectName-user"
114117
client.register(userSubject, userSchema)
@@ -162,7 +165,7 @@ class CompatibilityTaskIT : KafkaTestContainersUtils() {
162165
folderRule.create()
163166
folderRule.newFolder(type.name)
164167

165-
val subjectName = "parameterized-$type"
168+
val subjectName = "parameterized-$type-$subjectId"
166169
val playerPath = "$type/player.${type.extension}"
167170
val playerSubject = "$subjectName-player"
168171

@@ -220,7 +223,7 @@ class CompatibilityTaskIT : KafkaTestContainersUtils() {
220223
folderRule.create()
221224
val rootFolder = folderRule.newFolder(type.name)
222225
val parser = SchemaParser.provide(type, client, rootFolder)
223-
val subjectName = "parameterized-mixed"
226+
val subjectName = "parameterized-mixed-$subjectId"
224227
val extension = type.extension
225228

226229
// Local
@@ -299,7 +302,7 @@ class CompatibilityTaskIT : KafkaTestContainersUtils() {
299302
)
300303

301304
// Register the first version
302-
client.register("user", io.confluent.kafka.schemaregistry.avro.AvroSchema(userFile.readText()), false)
305+
client.register("user-$subjectId", io.confluent.kafka.schemaregistry.avro.AvroSchema(userFile.readText()), false)
303306

304307
folderRule.newFile("settings.gradle")
305308
buildFile = folderRule.newFile("build.gradle")
@@ -314,7 +317,7 @@ class CompatibilityTaskIT : KafkaTestContainersUtils() {
314317
url = '$schemaRegistryEndpoint'
315318
rootDir = 'src/main/avro'
316319
compatibility {
317-
subject('user', 'User.avsc', 'AVRO')
320+
subject('user-$subjectId', 'User.avsc', 'AVRO')
318321
}
319322
}
320323
"""

src/integration/kotlin/com/github/imflog/schema/registry/tasks/config/ConfigTaskIT.kt

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -10,14 +10,17 @@ import org.junit.jupiter.api.AfterEach
1010
import org.junit.jupiter.api.BeforeEach
1111
import org.junit.jupiter.api.Test
1212
import java.io.File
13+
import java.util.UUID
1314

1415
class ConfigTaskIT : KafkaTestContainersUtils() {
1516
private lateinit var folderRule: TemporaryFolder
1617
private lateinit var buildFile: File
18+
private lateinit var subjectId: String
1719

1820
@BeforeEach
1921
fun init() {
2022
folderRule = TemporaryFolder()
23+
subjectId = UUID.randomUUID().toString().take(8)
2124
}
2225

2326
@AfterEach
@@ -39,7 +42,7 @@ class ConfigTaskIT : KafkaTestContainersUtils() {
3942
schemaRegistry {
4043
url = '$schemaRegistryEndpoint'
4144
config {
42-
subject('testSubject1', 'FULL_TRANSITIVE')
45+
subject('testSubject1-$subjectId', 'FULL_TRANSITIVE')
4346
}
4447
}
4548
""".trimIndent()
@@ -69,8 +72,8 @@ class ConfigTaskIT : KafkaTestContainersUtils() {
6972
schemaRegistry {
7073
url = '$schemaRegistryEndpoint'
7174
config {
72-
subject('testSubject1', 'FULL_TRANSITIVE')
73-
subject('testSubject2', 'FUL_TRANSITIVE') // intentionally broken
75+
subject('testSubject1-$subjectId', 'FULL_TRANSITIVE')
76+
subject('testSubject2-$subjectId', 'FUL_TRANSITIVE') // intentionally broken
7477
}
7578
}
7679
""".trimIndent()

src/integration/kotlin/com/github/imflog/schema/registry/tasks/download/DownloadTaskIT.kt

Lines changed: 15 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -25,12 +25,14 @@ import org.junit.jupiter.params.provider.ArgumentsProvider
2525
import org.junit.jupiter.params.provider.ArgumentsSource
2626
import org.junit.jupiter.params.support.ParameterDeclarations
2727
import java.io.File
28+
import java.util.UUID
2829
import java.util.stream.Stream
2930

3031
class DownloadTaskIT : KafkaTestContainersUtils() {
3132

3233
private lateinit var folderRule: TemporaryFolder
3334
private lateinit var buildFile: File
35+
private lateinit var subjectId: String
3436
private val objectMapper = ObjectMapper()
3537
.configure(SerializationFeature.INDENT_OUTPUT, true)
3638
.setPropertyNamingStrategy(PropertyNamingStrategies.SNAKE_CASE)
@@ -39,6 +41,7 @@ class DownloadTaskIT : KafkaTestContainersUtils() {
3941
fun init() {
4042
folderRule = TemporaryFolder()
4143
folderRule.create()
44+
subjectId = UUID.randomUUID().toString().take(8)
4245
}
4346

4447
@AfterEach
@@ -51,7 +54,7 @@ class DownloadTaskIT : KafkaTestContainersUtils() {
5154
@ArgumentsSource(SchemaArgumentProvider::class)
5255
fun `Should download schemas`(type: String, oldSchema: ParsedSchema, newSchema: ParsedSchema) {
5356
// Given
54-
val subjectName = "parameterized-$type"
57+
val subjectName = "parameterized-$type-$subjectId"
5558

5659
client.register(subjectName, oldSchema)
5760
client.register(subjectName, newSchema)
@@ -117,7 +120,7 @@ class DownloadTaskIT : KafkaTestContainersUtils() {
117120
)
118121

119122
// Given
120-
val subjectName = "prettyprinted-$type"
123+
val subjectName = "prettyprinted-$type-$subjectId"
121124

122125
client.register(subjectName, schema)
123126

@@ -168,7 +171,7 @@ class DownloadTaskIT : KafkaTestContainersUtils() {
168171
newSchema: ParsedSchema
169172
) {
170173
// Given
171-
val subjectName = "parameterized-$type"
174+
val subjectName = "parameterized-$type-$subjectId"
172175

173176
client.register(subjectName, oldSchema)
174177
client.register(subjectName, newSchema)
@@ -184,7 +187,7 @@ class DownloadTaskIT : KafkaTestContainersUtils() {
184187
schemaRegistry {
185188
url = '$schemaRegistryEndpoint'
186189
download {
187-
subjectPattern('parameterized-[a-zA-Z]+', '${folderRule.root.absolutePath}/src/main/$type/test')
190+
subjectPattern('parameterized-[a-zA-Z]+-$subjectId', '${folderRule.root.absolutePath}/src/main/$type/test')
188191
}
189192
}
190193
"""
@@ -219,7 +222,7 @@ class DownloadTaskIT : KafkaTestContainersUtils() {
219222
schemaRegistry {
220223
url = '$schemaRegistryEndpoint'
221224
download {
222-
subject('UNKNOWN', 'src/main/avro/test')
225+
subject('UNKNOWN-$subjectId', 'src/main/avro/test')
223226
}
224227
}
225228
"""
@@ -238,7 +241,7 @@ class DownloadTaskIT : KafkaTestContainersUtils() {
238241
@Test
239242
fun `Should save files under a custom output name`() {
240243
// Given
241-
val subjectName = "test-user"
244+
val subjectName = "test-user-$subjectId"
242245
val outputName = "other_output_name"
243246

244247
client.register(
@@ -290,7 +293,7 @@ class DownloadTaskIT : KafkaTestContainersUtils() {
290293
@Test
291294
fun `Should download schema metadata in default directory`() {
292295
// Given
293-
val subjectName = "test"
296+
val subjectName = "test-$subjectId"
294297

295298
client.register(
296299
subjectName,
@@ -344,7 +347,7 @@ class DownloadTaskIT : KafkaTestContainersUtils() {
344347
@Test
345348
fun `Should download schema metadata in specific directory`() {
346349
// Given
347-
val subjectName = "test"
350+
val subjectName = "test-spec-$subjectId"
348351

349352
client.register(
350353
subjectName,
@@ -406,9 +409,9 @@ class DownloadTaskIT : KafkaTestContainersUtils() {
406409
@Test
407410
fun `Should download schema with references in specific directory`() {
408411
// Given
409-
val subjectName = "reference_test"
412+
val subjectName = "reference_test-$subjectId"
410413
val recordName = "UserReference"
411-
val subjectNameLib = "reference_test_lib"
414+
val subjectNameLib = "reference_test_lib-$subjectId"
412415
val recordNameLib = "UserReferenceLib"
413416

414417
client.register(
@@ -488,7 +491,7 @@ class DownloadTaskIT : KafkaTestContainersUtils() {
488491
@Test
489492
fun `Should download schema that has been normalized`() {
490493
// Given
491-
val subjectName = "test-proto"
494+
val subjectName = "test-proto-$subjectId"
492495

493496
client.register(
494497
subjectName,
@@ -571,7 +574,7 @@ class DownloadTaskIT : KafkaTestContainersUtils() {
571574
@Test
572575
fun `DownloadTask should support custom root directory`() {
573576
// Given
574-
val subjectName = "download-custom-root"
577+
val subjectName = "download-custom-root-$subjectId"
575578
client.register(subjectName, AvroSchema("""{"type":"record","name":"User","fields":[{"name":"name","type":"string"}]}"""))
576579

577580
folderRule.create()

src/integration/kotlin/com/github/imflog/schema/registry/tasks/register/RegisterTaskIT.kt

Lines changed: 12 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -14,18 +14,21 @@ import org.junit.jupiter.api.extension.ExtensionContext
1414
import org.junit.jupiter.params.ParameterizedTest
1515
import org.junit.jupiter.params.provider.Arguments
1616
import org.junit.jupiter.params.provider.ArgumentsProvider
17-
import org.junit.jupiter.params.support.ParameterDeclarations
1817
import org.junit.jupiter.params.provider.ArgumentsSource
18+
import org.junit.jupiter.params.support.ParameterDeclarations
1919
import java.io.File
20+
import java.util.UUID
2021
import java.util.stream.Stream
2122

2223
class RegisterTaskIT : KafkaTestContainersUtils() {
2324
private lateinit var folderRule: TemporaryFolder
2425
private lateinit var buildFile: File
26+
private lateinit var subjectId: String
2527

2628
@BeforeEach
2729
fun beforeEach() {
2830
folderRule = TemporaryFolder()
31+
subjectId = UUID.randomUUID().toString().take(8)
2932
}
3033

3134
@AfterEach
@@ -44,7 +47,7 @@ class RegisterTaskIT : KafkaTestContainersUtils() {
4447
folderRule.create()
4548
val typeFolder = folderRule.newFolder(type.name)
4649
val resultFolder = folderRule.newFolder("${type.name}/results")
47-
val subjectName = "parameterized-${type.name}"
50+
val subjectName = "parameterized-${type.name}-$subjectId"
4851
val extension = type.extension
4952

5053
val userFile = typeFolder.resolve("user.$extension")
@@ -109,7 +112,7 @@ class RegisterTaskIT : KafkaTestContainersUtils() {
109112
folderRule.create()
110113
val typeFolder = folderRule.newFolder(type.name)
111114
val resultFolder = folderRule.newFolder("${type.name}/results")
112-
val subjectName = "parameterized-${type.name}"
115+
val subjectName = "parameterized-${type.name}-$subjectId"
113116
val extension = type.extension
114117

115118
val userFile = typeFolder.resolve("user.$extension")
@@ -181,7 +184,7 @@ class RegisterTaskIT : KafkaTestContainersUtils() {
181184
) {
182185
folderRule.create()
183186
folderRule.newFolder(type.name)
184-
val subjectName = "parameterized-${type.name}-local"
187+
val subjectName = "parameterized-${type.name}-local-$subjectId"
185188
val extension = type.extension
186189

187190
val userPath = "$type/user.$extension"
@@ -236,7 +239,7 @@ class RegisterTaskIT : KafkaTestContainersUtils() {
236239
// Also, when all format support mixed local + remote, we will keep only this test.
237240
folderRule.create()
238241
folderRule.newFolder(type.name)
239-
val subjectName = "parameterized-${type.name}-mixed"
242+
val subjectName = "parameterized-${type.name}-mixed-$subjectId"
240243
val extension = type.extension
241244

242245
// Local
@@ -334,7 +337,7 @@ class RegisterTaskIT : KafkaTestContainersUtils() {
334337
outputDirectory = '${resultFolder.absolutePath}'
335338
rootDir = 'src/main/avro'
336339
register {
337-
subject('user', 'User.avsc', 'AVRO')
340+
subject('user-$subjectId', 'User.avsc', 'AVRO')
338341
.addLocalReference('Address', 'Address.avsc')
339342
}
340343
}
@@ -401,7 +404,7 @@ class RegisterTaskIT : KafkaTestContainersUtils() {
401404
outputDirectory = '${resultFolder.absolutePath}'
402405
rootDir = 'src/main/json'
403406
register {
404-
subject('user', 'User.json', 'JSON')
407+
subject('user-$subjectId', 'User.json', 'JSON')
405408
.addLocalReference('Address', 'Address.json')
406409
}
407410
}
@@ -458,7 +461,7 @@ class RegisterTaskIT : KafkaTestContainersUtils() {
458461
outputDirectory = '${resultFolder.absolutePath}'
459462
rootDir = 'src/main/avro'
460463
register {
461-
subject('user', 'User.avsc', 'AVRO')
464+
subject('user-$subjectId', 'User.avsc', 'AVRO')
462465
.setMetadata('metadata.json')
463466
.setRuleSet('ruleSet.json')
464467
}
@@ -522,8 +525,7 @@ class RegisterTaskIT : KafkaTestContainersUtils() {
522525
outputDirectory = '${resultFolder.absolutePath}'
523526
rootDir = 'src/main/proto'
524527
register {
525-
subject('address', 'com/example/address.proto', 'PROTOBUF')
526-
subject('user', 'com/example/user.proto', 'PROTOBUF')
528+
subject('user-$subjectId', 'com/example/user.proto', 'PROTOBUF')
527529
.addLocalReference('com/example/address.proto', 'com/example/address.proto')
528530
}
529531
}

0 commit comments

Comments
 (0)