Skip to content

Commit 764dac9

Browse files
author
Marius Posta
committed
fix integration test
1 parent fe2dff3 commit 764dac9

File tree

1 file changed

+23
-9
lines changed

1 file changed

+23
-9
lines changed

airbyte-integrations/connectors/source-kafka/src/test-integration/java/io/airbyte/integrations/source/kafka/KafkaSourceAcceptanceTest.java

Lines changed: 23 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -10,9 +10,11 @@
1010
import com.google.common.collect.ImmutableMap;
1111
import io.airbyte.cdk.integrations.standardtest.source.SourceAcceptanceTest;
1212
import io.airbyte.cdk.integrations.standardtest.source.TestDestinationEnv;
13+
import io.airbyte.cdk.integrations.util.HostPortResolver;
1314
import io.airbyte.commons.jackson.MoreMappers;
1415
import io.airbyte.commons.json.Jsons;
1516
import io.airbyte.commons.resources.MoreResources;
17+
import io.airbyte.commons.string.Strings;
1618
import io.airbyte.protocol.models.Field;
1719
import io.airbyte.protocol.models.JsonSchemaType;
1820
import io.airbyte.protocol.models.v0.CatalogHelpers;
@@ -22,6 +24,7 @@
2224
import io.airbyte.protocol.models.v0.SyncMode;
2325
import java.util.Collections;
2426
import java.util.HashMap;
27+
import java.util.List;
2528
import java.util.Map;
2629
import java.util.concurrent.ExecutionException;
2730
import org.apache.kafka.clients.admin.AdminClient;
@@ -32,16 +35,18 @@
3235
import org.apache.kafka.clients.producer.ProducerRecord;
3336
import org.apache.kafka.common.serialization.StringSerializer;
3437
import org.apache.kafka.connect.json.JsonSerializer;
38+
import org.junit.jupiter.api.BeforeAll;
3539
import org.testcontainers.containers.KafkaContainer;
3640
import org.testcontainers.utility.DockerImageName;
3741

3842
public class KafkaSourceAcceptanceTest extends SourceAcceptanceTest {
3943

4044
private static final ObjectMapper mapper = MoreMappers.initMapper();
41-
private static final String TOPIC_NAME = "test.topic";
4245

4346
private static KafkaContainer KAFKA;
4447

48+
private String topicName;
49+
4550
@Override
4651
protected String getImageName() {
4752
return "airbyte/source-kafka:dev";
@@ -53,10 +58,11 @@ protected JsonNode getConfig() {
5358
final ObjectNode subscriptionConfig = mapper.createObjectNode();
5459
protocolConfig.put("security_protocol", KafkaProtocol.PLAINTEXT.toString());
5560
subscriptionConfig.put("subscription_type", "subscribe");
56-
subscriptionConfig.put("topic_pattern", TOPIC_NAME);
61+
subscriptionConfig.put("topic_pattern", topicName);
5762

63+
var bootstrapServers = String.format("PLAINTEXT://%s:%s", HostPortResolver.resolveHost(KAFKA), HostPortResolver.resolvePort(KAFKA));
5864
return Jsons.jsonNode(ImmutableMap.builder()
59-
.put("bootstrap_servers", KAFKA.getBootstrapServers())
65+
.put("bootstrap_servers", bootstrapServers)
6066
.put("subscription", subscriptionConfig)
6167
.put("client_dns_lookup", "use_all_dns_ips")
6268
.put("enable_auto_commit", false)
@@ -67,11 +73,15 @@ protected JsonNode getConfig() {
6773
.build());
6874
}
6975

70-
@Override
71-
protected void setupEnvironment(final TestDestinationEnv environment) throws Exception {
76+
@BeforeAll
77+
static public void setupContainer() {
7278
KAFKA = new KafkaContainer(DockerImageName.parse("confluentinc/cp-kafka:6.2.0"));
7379
KAFKA.start();
80+
}
7481

82+
@Override
83+
protected void setupEnvironment(final TestDestinationEnv environment) throws Exception {
84+
topicName = Strings.addRandomSuffix("topic.test", "_", 10);
7585
createTopic();
7686
sendEvent();
7787
}
@@ -87,7 +97,7 @@ private void sendEvent() throws ExecutionException, InterruptedException {
8797
final ObjectNode event = mapper.createObjectNode();
8898
event.put("test", "value");
8999

90-
producer.send(new ProducerRecord<>(TOPIC_NAME, event), (recordMetadata, exception) -> {
100+
producer.send(new ProducerRecord<>(topicName, event), (recordMetadata, exception) -> {
91101
if (exception != null) {
92102
throw new RuntimeException("Cannot send message to Kafka. Error: " + exception.getMessage(), exception);
93103
}
@@ -96,14 +106,18 @@ private void sendEvent() throws ExecutionException, InterruptedException {
96106

97107
private void createTopic() throws Exception {
98108
try (final var admin = AdminClient.create(Map.of(AdminClientConfig.BOOTSTRAP_SERVERS_CONFIG, KAFKA.getBootstrapServers()))) {
99-
final NewTopic topic = new NewTopic(TOPIC_NAME, 1, (short) 1);
109+
final NewTopic topic = new NewTopic(topicName, 1, (short) 1);
100110
admin.createTopics(Collections.singletonList(topic)).all().get();
101111
}
102112
}
103113

104114
@Override
105115
protected void tearDown(final TestDestinationEnv testEnv) {
106-
KAFKA.close();
116+
try (final var admin = AdminClient.create(Map.of(AdminClientConfig.BOOTSTRAP_SERVERS_CONFIG, KAFKA.getBootstrapServers()))) {
117+
admin.deleteTopics(List.of(topicName)).all().get();
118+
} catch (Exception e) {
119+
throw new RuntimeException(e);
120+
}
107121
}
108122

109123
@Override
@@ -114,7 +128,7 @@ protected ConnectorSpecification getSpec() throws Exception {
114128
@Override
115129
protected ConfiguredAirbyteCatalog getConfiguredCatalog() throws Exception {
116130
final ConfiguredAirbyteStream streams =
117-
CatalogHelpers.createConfiguredAirbyteStream(TOPIC_NAME, null, Field.of("value", JsonSchemaType.STRING));
131+
CatalogHelpers.createConfiguredAirbyteStream(topicName, null, Field.of("value", JsonSchemaType.STRING));
118132
streams.setSyncMode(SyncMode.FULL_REFRESH);
119133
return new ConfiguredAirbyteCatalog().withStreams(Collections.singletonList(streams));
120134
}

0 commit comments

Comments
 (0)