Skip to content

Commit 31d489f

Browse files
authored
Fix live tests for Event Hubs (Azure#23310)
* Fix live tests for Event Hubs
1 parent cd6b288 commit 31d489f

File tree

5 files changed

+81
-77
lines changed

5 files changed

+81
-77
lines changed

sdk/eventhubs/azure-messaging-eventhubs/src/main/java/com/azure/messaging/eventhubs/EventHubClientBuilder.java

Lines changed: 13 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -736,10 +736,12 @@ private EventHubConnectionProcessor buildConnectionProcessor(MessageSerializer m
736736
}
737737

738738
private ConnectionOptions getConnectionOptions() {
739-
configuration = configuration == null ? Configuration.getGlobalConfiguration().clone() : configuration;
739+
Configuration buildConfiguration = configuration == null
740+
? Configuration.getGlobalConfiguration().clone()
741+
: configuration;
740742

741743
if (credentials == null) {
742-
final String connectionString = configuration.get(AZURE_EVENT_HUBS_CONNECTION_STRING);
744+
final String connectionString = buildConfiguration.get(AZURE_EVENT_HUBS_CONNECTION_STRING);
743745

744746
if (CoreUtils.isNullOrEmpty(connectionString)) {
745747
throw logger.logExceptionAsError(new IllegalArgumentException("Credentials have not been set. "
@@ -752,7 +754,7 @@ private ConnectionOptions getConnectionOptions() {
752754
}
753755

754756
if (proxyOptions == null) {
755-
proxyOptions = getDefaultProxyConfiguration(configuration);
757+
proxyOptions = getDefaultProxyConfiguration(buildConfiguration);
756758
}
757759

758760
// If the proxy has been configured by the user but they have overridden the TransportType with something that
@@ -800,10 +802,11 @@ private ProxyOptions getDefaultProxyConfiguration(Configuration configuration) {
800802
return ProxyOptions.SYSTEM_DEFAULTS;
801803
}
802804

803-
return getProxyOptions(authentication, proxyAddress);
805+
return getProxyOptions(authentication, proxyAddress, configuration);
804806
}
805807

806-
private ProxyOptions getProxyOptions(ProxyAuthenticationType authentication, String proxyAddress) {
808+
private ProxyOptions getProxyOptions(ProxyAuthenticationType authentication, String proxyAddress,
809+
Configuration configuration) {
807810
String host;
808811
int port;
809812
if (HOST_PORT_PATTERN.matcher(proxyAddress.trim()).find()) {
@@ -817,8 +820,11 @@ private ProxyOptions getProxyOptions(ProxyAuthenticationType authentication, Str
817820
} else {
818821
com.azure.core.http.ProxyOptions coreProxyOptions = com.azure.core.http.ProxyOptions
819822
.fromConfiguration(configuration);
820-
return new ProxyOptions(authentication, new Proxy(coreProxyOptions.getType().toProxyType(),
821-
coreProxyOptions.getAddress()), coreProxyOptions.getUsername(), coreProxyOptions.getPassword());
823+
Proxy.Type proxyType = coreProxyOptions.getType().toProxyType();
824+
InetSocketAddress coreProxyAddress = coreProxyOptions.getAddress();
825+
String username = coreProxyOptions.getUsername();
826+
String password = coreProxyOptions.getPassword();
827+
return new ProxyOptions(authentication, new Proxy(proxyType, coreProxyAddress), username, password);
822828
}
823829
}
824830
}

sdk/eventhubs/azure-messaging-eventhubs/src/test/java/com/azure/messaging/eventhubs/EventHubAsyncClientIntegrationTest.java

Lines changed: 61 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,9 +4,13 @@
44
package com.azure.messaging.eventhubs;
55

66
import com.azure.core.amqp.AmqpTransportType;
7+
import com.azure.core.amqp.implementation.ConnectionStringProperties;
8+
import com.azure.core.credential.AzureNamedKeyCredential;
9+
import com.azure.core.credential.AzureSasCredential;
710
import com.azure.core.util.logging.ClientLogger;
811
import com.azure.messaging.eventhubs.models.EventPosition;
912
import org.junit.jupiter.api.Assertions;
13+
import org.junit.jupiter.api.Assumptions;
1014
import org.junit.jupiter.api.Tag;
1115
import org.junit.jupiter.api.Test;
1216
import org.junit.jupiter.params.ParameterizedTest;
@@ -20,6 +24,8 @@
2024

2125
import static com.azure.messaging.eventhubs.EventHubClientBuilder.DEFAULT_CONSUMER_GROUP_NAME;
2226
import static com.azure.messaging.eventhubs.TestUtils.isMatchingEvent;
27+
import static java.nio.charset.StandardCharsets.UTF_8;
28+
import static org.junit.jupiter.api.Assertions.assertTrue;
2329

2430
/**
2531
* Tests scenarios on {@link EventHubAsyncClient}.
@@ -29,6 +35,7 @@ class EventHubAsyncClientIntegrationTest extends IntegrationTestBase {
2935
private static final int NUMBER_OF_EVENTS = 5;
3036
private static final String PARTITION_ID = "1";
3137
private IntegrationTestEventData testEventData;
38+
private static final String TEST_CONTENTS = "SSLorem ipsum dolor sit amet, consectetur adipiscing elit. Donec vehicula posuere lobortis. Aliquam finibus volutpat dolor, faucibus pellentesque ipsum bibendum vitae. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Ut sit amet urna hendrerit, dapibus justo a, sodales justo. Mauris finibus augue id pulvinar congue. Nam maximus luctus ipsum, at commodo ligula euismod ac. Phasellus vitae lacus sit amet diam porta placerat. \nUt sodales efficitur sapien ut posuere. Morbi sed tellus est. Proin eu erat purus. Proin massa nunc, condimentum id iaculis dignissim, consectetur et odio. Cras suscipit sem eu libero aliquam tincidunt. Nullam ut arcu suscipit, eleifend velit in, cursus libero. Ut eleifend facilisis odio sit amet feugiat. Phasellus at nunc sit amet elit sagittis commodo ac in nisi. Fusce vitae aliquam quam. Integer vel nibh euismod, tempus elit vitae, pharetra est. Duis vulputate enim a elementum dignissim. Morbi dictum enim id elit scelerisque, in elementum nulla pharetra. \nAenean aliquet aliquet condimentum. Proin dapibus dui id libero tempus feugiat. Sed commodo ligula a lectus mattis, vitae tincidunt velit auctor. Fusce quis semper dui. Phasellus eu efficitur sem. Ut non sem sit amet enim condimentum venenatis id dictum massa. Nullam sagittis lacus a neque sodales, et ultrices arcu mattis. Aliquam erat volutpat. \nAenean fringilla quam elit, id mattis purus vestibulum nec. Praesent porta eros in dapibus molestie. Vestibulum orci libero, tincidunt et turpis eget, condimentum lobortis enim. Fusce suscipit ante et mauris consequat cursus nec laoreet lorem. Maecenas in sollicitudin diam, non tincidunt purus. Nunc mauris purus, laoreet eget interdum vitae, placerat a sapien. In mi risus, blandit eu facilisis nec, molestie suscipit leo. Pellentesque molestie urna vitae dui faucibus bibendum. \nDonec quis ipsum ultricies, imperdiet ex vel, scelerisque eros. Ut at urna arcu. Vestibulum rutrum odio dolor, vitae cursus nunc pulvinar vel. Donec accumsan sapien in malesuada tempor. Maecenas in condimentum eros. Sed vestibulum facilisis massa a iaculis. Etiam et nibh felis. Donec maximus, sem quis vestibulum gravida, turpis risus congue dolor, pharetra tincidunt lectus nisi at velit.";
3239

3340
EventHubAsyncClientIntegrationTest() {
3441
super(new ClientLogger(EventHubAsyncClientIntegrationTest.class));
@@ -140,4 +147,58 @@ void getPropertiesWithCredentials() {
140147
.verify(TIMEOUT);
141148
}
142149
}
150+
151+
@Test
152+
public void sendAndReceiveEventByAzureNameKeyCredential() {
153+
ConnectionStringProperties properties = getConnectionStringProperties();
154+
String fullyQualifiedNamespace = getFullyQualifiedDomainName();
155+
String sharedAccessKeyName = properties.getSharedAccessKeyName();
156+
String sharedAccessKey = properties.getSharedAccessKey();
157+
String eventHubName = getEventHubName();
158+
159+
final EventData testData = new EventData(TEST_CONTENTS.getBytes(UTF_8));
160+
161+
EventHubProducerAsyncClient asyncProducerClient = new EventHubClientBuilder()
162+
.credential(fullyQualifiedNamespace, eventHubName,
163+
new AzureNamedKeyCredential(sharedAccessKeyName, sharedAccessKey))
164+
.buildAsyncProducerClient();
165+
try {
166+
StepVerifier.create(
167+
asyncProducerClient.createBatch().flatMap(batch -> {
168+
assertTrue(batch.tryAdd(testData));
169+
return asyncProducerClient.send(batch);
170+
})
171+
).verifyComplete();
172+
} finally {
173+
asyncProducerClient.close();
174+
}
175+
}
176+
177+
@Test
178+
public void sendAndReceiveEventByAzureSasCredential() {
179+
Assumptions.assumeTrue(getConnectionString(true) != null,
180+
"SAS was not set. Can't run test scenario.");
181+
182+
ConnectionStringProperties properties = getConnectionStringProperties(true);
183+
String fullyQualifiedNamespace = getFullyQualifiedDomainName();
184+
String sharedAccessSignature = properties.getSharedAccessSignature();
185+
String eventHubName = getEventHubName();
186+
187+
final EventData testData = new EventData(TEST_CONTENTS.getBytes(UTF_8));
188+
189+
EventHubProducerAsyncClient asyncProducerClient = new EventHubClientBuilder()
190+
.credential(fullyQualifiedNamespace, eventHubName,
191+
new AzureSasCredential(sharedAccessSignature))
192+
.buildAsyncProducerClient();
193+
try {
194+
StepVerifier.create(
195+
asyncProducerClient.createBatch().flatMap(batch -> {
196+
assertTrue(batch.tryAdd(testData));
197+
return asyncProducerClient.send(batch);
198+
})
199+
).verifyComplete();
200+
} finally {
201+
asyncProducerClient.close();
202+
}
203+
}
143204
}

sdk/eventhubs/azure-messaging-eventhubs/src/test/java/com/azure/messaging/eventhubs/EventHubClientBuilderTest.java

Lines changed: 5 additions & 68 deletions
Original file line numberDiff line numberDiff line change
@@ -6,19 +6,16 @@
66
import com.azure.core.amqp.AmqpTransportType;
77
import com.azure.core.amqp.ProxyAuthenticationType;
88
import com.azure.core.amqp.ProxyOptions;
9-
import com.azure.core.amqp.implementation.ConnectionStringProperties;
109
import com.azure.core.credential.AzureNamedKeyCredential;
1110
import com.azure.core.credential.AzureSasCredential;
1211
import com.azure.core.util.Configuration;
1312
import com.azure.core.util.logging.ClientLogger;
1413
import com.azure.messaging.eventhubs.implementation.ClientConstants;
1514
import org.junit.jupiter.api.Assertions;
16-
import org.junit.jupiter.api.Assumptions;
1715
import org.junit.jupiter.api.Test;
1816
import org.junit.jupiter.params.ParameterizedTest;
1917
import org.junit.jupiter.params.provider.Arguments;
2018
import org.junit.jupiter.params.provider.MethodSource;
21-
import reactor.test.StepVerifier;
2219

2320
import java.net.InetSocketAddress;
2421
import java.net.Proxy;
@@ -27,12 +24,10 @@
2724
import java.util.Locale;
2825
import java.util.stream.Stream;
2926

30-
import static java.nio.charset.StandardCharsets.UTF_8;
3127
import static org.junit.jupiter.api.Assertions.assertNotNull;
3228
import static org.junit.jupiter.api.Assertions.assertThrows;
33-
import static org.junit.jupiter.api.Assertions.assertTrue;
3429

35-
public class EventHubClientBuilderTest extends IntegrationTestBase {
30+
public class EventHubClientBuilderTest {
3631
private static final String NAMESPACE_NAME = "dummyNamespaceName";
3732
private static final String DEFAULT_DOMAIN_NAME = "servicebus.windows.net/";
3833

@@ -47,12 +42,8 @@ public class EventHubClientBuilderTest extends IntegrationTestBase {
4742
private static final String CORRECT_CONNECTION_STRING = String.format("Endpoint=%s;SharedAccessKeyName=%s;SharedAccessKey=%s;EntityPath=%s",
4843
ENDPOINT, SHARED_ACCESS_KEY_NAME, SHARED_ACCESS_KEY, EVENT_HUB_NAME);
4944
private static final Proxy PROXY_ADDRESS = new Proxy(Proxy.Type.HTTP, new InetSocketAddress(PROXY_HOST, Integer.parseInt(PROXY_PORT)));
50-
51-
private static final String TEST_CONTENTS = "SSLorem ipsum dolor sit amet, consectetur adipiscing elit. Donec vehicula posuere lobortis. Aliquam finibus volutpat dolor, faucibus pellentesque ipsum bibendum vitae. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Ut sit amet urna hendrerit, dapibus justo a, sodales justo. Mauris finibus augue id pulvinar congue. Nam maximus luctus ipsum, at commodo ligula euismod ac. Phasellus vitae lacus sit amet diam porta placerat. \nUt sodales efficitur sapien ut posuere. Morbi sed tellus est. Proin eu erat purus. Proin massa nunc, condimentum id iaculis dignissim, consectetur et odio. Cras suscipit sem eu libero aliquam tincidunt. Nullam ut arcu suscipit, eleifend velit in, cursus libero. Ut eleifend facilisis odio sit amet feugiat. Phasellus at nunc sit amet elit sagittis commodo ac in nisi. Fusce vitae aliquam quam. Integer vel nibh euismod, tempus elit vitae, pharetra est. Duis vulputate enim a elementum dignissim. Morbi dictum enim id elit scelerisque, in elementum nulla pharetra. \nAenean aliquet aliquet condimentum. Proin dapibus dui id libero tempus feugiat. Sed commodo ligula a lectus mattis, vitae tincidunt velit auctor. Fusce quis semper dui. Phasellus eu efficitur sem. Ut non sem sit amet enim condimentum venenatis id dictum massa. Nullam sagittis lacus a neque sodales, et ultrices arcu mattis. Aliquam erat volutpat. \nAenean fringilla quam elit, id mattis purus vestibulum nec. Praesent porta eros in dapibus molestie. Vestibulum orci libero, tincidunt et turpis eget, condimentum lobortis enim. Fusce suscipit ante et mauris consequat cursus nec laoreet lorem. Maecenas in sollicitudin diam, non tincidunt purus. Nunc mauris purus, laoreet eget interdum vitae, placerat a sapien. In mi risus, blandit eu facilisis nec, molestie suscipit leo. Pellentesque molestie urna vitae dui faucibus bibendum. \nDonec quis ipsum ultricies, imperdiet ex vel, scelerisque eros. Ut at urna arcu. Vestibulum rutrum odio dolor, vitae cursus nunc pulvinar vel. Donec accumsan sapien in malesuada tempor. Maecenas in condimentum eros. Sed vestibulum facilisis massa a iaculis. Etiam et nibh felis. Donec maximus, sem quis vestibulum gravida, turpis risus congue dolor, pharetra tincidunt lectus nisi at velit.";
52-
53-
EventHubClientBuilderTest() {
54-
super(new ClientLogger(EventHubClientBuilderTest.class));
55-
}
45+
public static final String JAVA_NET_USE_SYSTEM_PROXIES = "java.net.useSystemProxies";
46+
private ClientLogger logger = new ClientLogger(EventHubClientBuilderTest.class);
5647

5748
@Test
5849
public void missingConnectionString() {
@@ -125,6 +116,8 @@ public void testConnectionStringWithSas() {
125116
public void testProxyOptionsConfiguration(String proxyConfiguration, boolean expectedClientCreation) {
126117
Configuration configuration = Configuration.getGlobalConfiguration().clone();
127118
configuration = configuration.put(Configuration.PROPERTY_HTTP_PROXY, proxyConfiguration);
119+
configuration = configuration.put(JAVA_NET_USE_SYSTEM_PROXIES, "true");
120+
128121
boolean clientCreated = false;
129122
try {
130123
EventHubConsumerAsyncClient asyncClient = new EventHubClientBuilder()
@@ -136,64 +129,9 @@ public void testProxyOptionsConfiguration(String proxyConfiguration, boolean exp
136129
clientCreated = true;
137130
} catch (Exception ex) {
138131
}
139-
140132
Assertions.assertEquals(expectedClientCreation, clientCreated);
141133
}
142134

143-
@Test
144-
public void sendAndReceiveEventByAzureNameKeyCredential() {
145-
ConnectionStringProperties properties = getConnectionStringProperties();
146-
String fullyQualifiedNamespace = getFullyQualifiedDomainName();
147-
String sharedAccessKeyName = properties.getSharedAccessKeyName();
148-
String sharedAccessKey = properties.getSharedAccessKey();
149-
String eventHubName = getEventHubName();
150-
151-
final EventData testData = new EventData(TEST_CONTENTS.getBytes(UTF_8));
152-
153-
EventHubProducerAsyncClient asyncProducerClient = new EventHubClientBuilder()
154-
.credential(fullyQualifiedNamespace, eventHubName,
155-
new AzureNamedKeyCredential(sharedAccessKeyName, sharedAccessKey))
156-
.buildAsyncProducerClient();
157-
try {
158-
StepVerifier.create(
159-
asyncProducerClient.createBatch().flatMap(batch -> {
160-
assertTrue(batch.tryAdd(testData));
161-
return asyncProducerClient.send(batch);
162-
})
163-
).verifyComplete();
164-
} finally {
165-
asyncProducerClient.close();
166-
}
167-
}
168-
169-
@Test
170-
public void sendAndReceiveEventByAzureSasCredential() {
171-
Assumptions.assumeTrue(getConnectionString(true) != null,
172-
"SAS was not set. Can't run test scenario.");
173-
174-
ConnectionStringProperties properties = getConnectionStringProperties(true);
175-
String fullyQualifiedNamespace = getFullyQualifiedDomainName();
176-
String sharedAccessSignature = properties.getSharedAccessSignature();
177-
String eventHubName = getEventHubName();
178-
179-
final EventData testData = new EventData(TEST_CONTENTS.getBytes(UTF_8));
180-
181-
EventHubProducerAsyncClient asyncProducerClient = new EventHubClientBuilder()
182-
.credential(fullyQualifiedNamespace, eventHubName,
183-
new AzureSasCredential(sharedAccessSignature))
184-
.buildAsyncProducerClient();
185-
try {
186-
StepVerifier.create(
187-
asyncProducerClient.createBatch().flatMap(batch -> {
188-
assertTrue(batch.tryAdd(testData));
189-
return asyncProducerClient.send(batch);
190-
})
191-
).verifyComplete();
192-
} finally {
193-
asyncProducerClient.close();
194-
}
195-
}
196-
197135
@Test
198136
public void testConnectionWithAzureNameKeyCredential() {
199137
String fullyQualifiedNamespace = "sb-name.servicebus.windows.net";
@@ -258,7 +196,6 @@ private static Stream<Arguments> getProxyConfigurations() {
258196
Arguments.of("https://username:[email protected]:8080", true),
259197
Arguments.of("https://username:[email protected]", true)
260198
);
261-
262199
}
263200

264201
private static URI getURI(String endpointFormat, String namespace, String domainName) {

sdk/eventhubs/azure-messaging-eventhubs/src/test/java/com/azure/messaging/eventhubs/IntegrationTestBase.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -54,7 +54,7 @@ public abstract class IntegrationTestBase extends TestBase {
5454
protected static final List<String> EXPECTED_PARTITION_IDS = IntStream.range(0, NUMBER_OF_PARTITIONS)
5555
.mapToObj(String::valueOf)
5656
.collect(Collectors.toList());
57-
protected static final Duration TIMEOUT = Duration.ofSeconds(30);
57+
protected static final Duration TIMEOUT = Duration.ofMinutes(1);
5858
protected static final AmqpRetryOptions RETRY_OPTIONS = new AmqpRetryOptions().setTryTimeout(TIMEOUT);
5959

6060
protected final ClientLogger logger;

sdk/eventhubs/tests.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,6 @@ stages:
1212
groupId: com.azure
1313
safeName: azuremessagingeventhubscheckpointstoreblob
1414
TimeoutInMinutes: 120
15-
Clouds: 'Public,Canary'
15+
Clouds: 'Public'
1616
EnvVars:
1717
AZURE_LOG_LEVEL: 2

0 commit comments

Comments
 (0)