Skip to content

Commit 0bdf4c6

Browse files
committed
Add Azure Event Hubs Emulator container to Azure module
- Rename container - Remove Kafka Signed-off-by: Esta Nagy <[email protected]>
1 parent 69d2b6f commit 0bdf4c6

File tree

5 files changed

+93
-201
lines changed

5 files changed

+93
-201
lines changed

docs/modules/azure.md

Lines changed: 4 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -82,31 +82,23 @@ Build Azure Table client:
8282
Start Azure Event Hubs Emulator during a test:
8383

8484
<!--codeinclude-->
85-
[Setting up a network](../../modules/azure/src/test/java/org/testcontainers/azure/AzureEventHubsEmulatorContainerTest.java) inside_block:network
85+
[Setting up a network](../../modules/azure/src/test/java/org/testcontainers/azure/AzureEventHubsContainerTest.java) inside_block:network
8686
<!--/codeinclude-->
8787

8888
<!--codeinclude-->
89-
[Starting an Azurite container as dependency](../../modules/azure/src/test/java/org/testcontainers/azure/AzureEventHubsEmulatorContainerTest.java) inside_block:azuriteContainer
89+
[Starting an Azurite container as dependency](../../modules/azure/src/test/java/org/testcontainers/azure/AzureEventHubsContainerTest.java) inside_block:azuriteContainer
9090
<!--/codeinclude-->
9191

9292
<!--codeinclude-->
93-
[Starting an Azure Event Hubs Emulator container](../../modules/azure/src/test/java/org/testcontainers/azure/AzureEventHubsEmulatorContainerTest.java) inside_block:emulatorContainer
93+
[Starting an Azure Event Hubs Emulator container](../../modules/azure/src/test/java/org/testcontainers/azure/AzureEventHubsContainerTest.java) inside_block:emulatorContainer
9494
<!--/codeinclude-->
9595

9696
#### Using Azure Event Hubs clients
9797

9898
Configure the consumer and the producer clients:
9999

100100
<!--codeinclude-->
101-
[Configuring the clients](../../modules/azure/src/test/java/org/testcontainers/azure/AzureEventHubsEmulatorContainerTest.java) inside_block:createProducerAndConsumer
102-
<!--/codeinclude-->
103-
104-
#### Using Kafka clients
105-
106-
Configure the consumer and the producer clients:
107-
108-
<!--codeinclude-->
109-
[Obtaining the Kafka connection properties](../../modules/azure/src/test/java/org/testcontainers/azure/AzureEventHubsEmulatorContainerTest.java) inside_block:kafkaProperties
101+
[Configuring the clients](../../modules/azure/src/test/java/org/testcontainers/azure/AzureEventHubsContainerTest.java) inside_block:createProducerAndConsumer
110102
<!--/codeinclude-->
111103

112104
### CosmosDB

modules/azure/build.gradle

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,5 +11,4 @@ dependencies {
1111
testImplementation 'com.azure:azure-storage-queue:12.24.0'
1212
testImplementation 'com.azure:azure-data-tables:12.5.0'
1313
testImplementation 'com.azure:azure-messaging-eventhubs:5.19.2'
14-
testImplementation 'org.apache.kafka:kafka-clients:3.8.0'
1514
}

modules/azure/src/main/java/org/testcontainers/azure/AzureEventHubsEmulatorContainer.java renamed to modules/azure/src/main/java/org/testcontainers/azure/AzureEventHubsContainer.java

Lines changed: 6 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -14,15 +14,12 @@
1414
* Exposed ports:
1515
* <ul>
1616
* <li>AMQP: 5672</li>
17-
* <li>Kafka: 9092</li>
1817
* </ul>
1918
*/
20-
public class AzureEventHubsEmulatorContainer extends GenericContainer<AzureEventHubsEmulatorContainer> {
19+
public class AzureEventHubsContainer extends GenericContainer<AzureEventHubsContainer> {
2120

2221
private static final int DEFAULT_AMQP_PORT = 5672;
2322

24-
private static final int DEFAULT_KAFKA_PORT = 9092;
25-
2623
private static final String CONNECTION_STRING_FORMAT =
2724
"Endpoint=sb://%s:%d;SharedAccessKeyName=RootManageSharedAccessKey;SharedAccessKey=SAS_KEY_VALUE;UseDevelopmentEmulator=true;";
2825

@@ -34,19 +31,17 @@ public class AzureEventHubsEmulatorContainer extends GenericContainer<AzureEvent
3431

3532
private AzuriteContainer azuriteContainer;
3633

37-
private boolean useKafka;
38-
3934
/**
4035
* @param dockerImageName specified docker image name to run
4136
*/
42-
public AzureEventHubsEmulatorContainer(final String dockerImageName) {
37+
public AzureEventHubsContainer(final String dockerImageName) {
4338
this(DockerImageName.parse(dockerImageName));
4439
}
4540

4641
/**
4742
* @param dockerImageName specified docker image name to run
4843
*/
49-
public AzureEventHubsEmulatorContainer(final DockerImageName dockerImageName) {
44+
public AzureEventHubsContainer(final DockerImageName dockerImageName) {
5045
super(dockerImageName);
5146
dockerImageName.assertCompatibleWith(DEFAULT_IMAGE_NAME);
5247
waitingFor(Wait.forLogMessage(".*Emulator Service is Successfully Up!.*", 1));
@@ -59,7 +54,7 @@ public AzureEventHubsEmulatorContainer(final DockerImageName dockerImageName) {
5954
* @param azuriteContainer The Azurite container used by Event HUbs as a dependency
6055
* @return this
6156
*/
62-
public AzureEventHubsEmulatorContainer withAzuriteContainer(final AzuriteContainer azuriteContainer) {
57+
public AzureEventHubsContainer withAzuriteContainer(final AzuriteContainer azuriteContainer) {
6358
this.azuriteContainer = azuriteContainer;
6459
dependsOn(this.azuriteContainer);
6560
return this;
@@ -71,7 +66,7 @@ public AzureEventHubsEmulatorContainer withAzuriteContainer(final AzuriteContain
7166
* @param config The file containing the broker configuration
7267
* @return this
7368
*/
74-
public AzureEventHubsEmulatorContainer withConfig(final Transferable config) {
69+
public AzureEventHubsContainer withConfig(final Transferable config) {
7570
withCopyToContainer(config, "/Eventhubs_Emulator/ConfigFiles/Config.json");
7671
return this;
7772
}
@@ -81,20 +76,10 @@ public AzureEventHubsEmulatorContainer withConfig(final Transferable config) {
8176
*
8277
* @return this
8378
*/
84-
public AzureEventHubsEmulatorContainer acceptLicense() {
79+
public AzureEventHubsContainer acceptLicense() {
8580
return withEnv("ACCEPT_EULA", "Y");
8681
}
8782

88-
/**
89-
* Enables Kafka support.
90-
*
91-
* @return this
92-
*/
93-
public AzureEventHubsEmulatorContainer enableKafka() {
94-
this.useKafka = true;
95-
return this;
96-
}
97-
9883
@Override
9984
protected void configure() {
10085
if (azuriteContainer == null) {
@@ -112,10 +97,6 @@ protected void configure() {
11297
LicenseAcceptance.assertLicenseAccepted(this.getDockerImageName());
11398
acceptLicense();
11499
}
115-
if (this.useKafka) {
116-
//Kafka must expose with the fixed default port or the broker's advertised port won't match
117-
this.addFixedExposedPort(DEFAULT_KAFKA_PORT, DEFAULT_KAFKA_PORT);
118-
}
119100
}
120101

121102
/**
@@ -126,13 +107,4 @@ protected void configure() {
126107
public String getConnectionString() {
127108
return String.format(CONNECTION_STRING_FORMAT, getHost(), getMappedPort(DEFAULT_AMQP_PORT));
128109
}
129-
130-
/**
131-
* Returns the kafka bootstrap servers
132-
*
133-
* @return bootstrap servers
134-
*/
135-
public String getBootstrapServers() {
136-
return String.format(BOOTSTRAP_SERVERS_FORMAT, getHost(), getMappedPort(DEFAULT_KAFKA_PORT));
137-
}
138110
}
Lines changed: 83 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,83 @@
1+
package org.testcontainers.azure;
2+
3+
import com.azure.core.util.IterableStream;
4+
import com.azure.messaging.eventhubs.EventData;
5+
import com.azure.messaging.eventhubs.EventHubClientBuilder;
6+
import com.azure.messaging.eventhubs.EventHubConsumerClient;
7+
import com.azure.messaging.eventhubs.EventHubProducerClient;
8+
import com.azure.messaging.eventhubs.models.EventPosition;
9+
import com.azure.messaging.eventhubs.models.PartitionEvent;
10+
import org.junit.Rule;
11+
import org.junit.Test;
12+
import org.testcontainers.containers.Network;
13+
import org.testcontainers.utility.MountableFile;
14+
15+
import java.time.Duration;
16+
import java.util.Collections;
17+
import java.util.Optional;
18+
19+
import static org.assertj.core.api.Assertions.assertThat;
20+
import static org.awaitility.Awaitility.waitAtMost;
21+
22+
public class AzureEventHubsContainerTest {
23+
24+
@Rule
25+
// network {
26+
public Network network = Network.newNetwork();
27+
28+
// }
29+
30+
@Rule
31+
// azuriteContainer {
32+
public AzuriteContainer azuriteContainer = new AzuriteContainer("mcr.microsoft.com/azure-storage/azurite:3.33.0")
33+
.withNetwork(network);
34+
35+
// }
36+
37+
@Rule
38+
// emulatorContainer {
39+
public AzureEventHubsContainer emulator = new AzureEventHubsContainer(
40+
"mcr.microsoft.com/azure-messaging/eventhubs-emulator:2.0.1"
41+
)
42+
.acceptLicense()
43+
.withNetwork(network)
44+
.withConfig(MountableFile.forClasspathResource("/eventhubs_config.json"))
45+
.withAzuriteContainer(azuriteContainer);
46+
47+
// }
48+
49+
@Test
50+
public void testWithEventHubsClient() {
51+
try (
52+
// createProducerAndConsumer {
53+
EventHubProducerClient producer = new EventHubClientBuilder()
54+
.connectionString(emulator.getConnectionString())
55+
.fullyQualifiedNamespace("emulatorNs1")
56+
.eventHubName("eh1")
57+
.buildProducerClient();
58+
EventHubConsumerClient consumer = new EventHubClientBuilder()
59+
.connectionString(emulator.getConnectionString())
60+
.fullyQualifiedNamespace("emulatorNs1")
61+
.eventHubName("eh1")
62+
.consumerGroup("cg1")
63+
.buildConsumerClient()
64+
// }
65+
) {
66+
producer.send(Collections.singletonList(new EventData("test")));
67+
68+
waitAtMost(Duration.ofSeconds(30))
69+
.pollDelay(Duration.ofSeconds(5))
70+
.untilAsserted(() -> {
71+
IterableStream<PartitionEvent> events = consumer.receiveFromPartition(
72+
"0",
73+
1,
74+
EventPosition.earliest(),
75+
Duration.ofSeconds(2)
76+
);
77+
Optional<PartitionEvent> event = events.stream().findFirst();
78+
assertThat(event).isPresent();
79+
assertThat(event.get().getData().getBodyAsString()).isEqualTo("test");
80+
});
81+
}
82+
}
83+
}

modules/azure/src/test/java/org/testcontainers/azure/AzureEventHubsEmulatorContainerTest.java

Lines changed: 0 additions & 154 deletions
This file was deleted.

0 commit comments

Comments
 (0)