Skip to content

Commit 359a5c9

Browse files
committed
add support for HZ_CLUSTERNAME env variable
1 parent 1430fb3 commit 359a5c9

File tree

5 files changed

+51
-7
lines changed

5 files changed

+51
-7
lines changed

spring-boot-project/spring-boot-docker-compose/src/dockerTest/java/org/springframework/boot/docker/compose/service/connection/hazelcast/HazelcastDockerComposeConnectionDetailsFactoryIntegrationTests.java

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,12 @@
1616

1717
package org.springframework.boot.docker.compose.service.connection.hazelcast;
1818

19+
import java.util.UUID;
20+
import java.util.function.Consumer;
21+
1922
import com.hazelcast.client.HazelcastClient;
23+
import com.hazelcast.client.config.ClientConfig;
24+
import com.hazelcast.client.impl.clientside.HazelcastClientProxy;
2025
import com.hazelcast.core.HazelcastInstance;
2126
import com.hazelcast.map.IMap;
2227

@@ -37,14 +42,22 @@ class HazelcastDockerComposeConnectionDetailsFactoryIntegrationTests {
3742
void runCreatesConnectionDetails(HazelcastConnectionDetails connectionDetails) {
3843
HazelcastInstance hazelcastInstance = HazelcastClient.newHazelcastClient(connectionDetails.getClientConfig());
3944
try {
40-
IMap<Object, Object> map = hazelcastInstance.getMap("spring-boot");
45+
assertThat(hazelcastInstance).satisfies(clusterName("spring-boot"));
46+
IMap<String, String> map = hazelcastInstance.getMap(UUID.randomUUID().toString());
4147
map.put("docker", "compose");
4248
assertThat(map.get("docker")).isEqualTo("compose");
4349
}
4450
finally {
4551
hazelcastInstance.shutdown();
4652
}
53+
}
4754

55+
private static Consumer<HazelcastInstance> clusterName(String name) {
56+
return (hazelcastInstance) -> {
57+
assertThat(hazelcastInstance).isInstanceOf(HazelcastClientProxy.class);
58+
HazelcastClientProxy proxy = (HazelcastClientProxy) hazelcastInstance;
59+
assertThat(proxy.getClientConfig()).extracting(ClientConfig::getClusterName).isEqualTo(name);
60+
};
4861
}
4962

5063
}
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
services:
22
hazelcast:
33
image: '{imageName}'
4+
environment:
5+
HZ_CLUSTERNAME: "spring-boot"
46
ports:
57
- '5701'

spring-boot-project/spring-boot-docker-compose/src/main/java/org/springframework/boot/docker/compose/service/connection/hazelcast/HazelcastDockerComposeConnectionDetailsFactory.java

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,9 @@
1616

1717
package org.springframework.boot.docker.compose.service.connection.hazelcast;
1818

19+
import java.util.Map;
20+
import java.util.Optional;
21+
1922
import com.hazelcast.client.config.ClientConfig;
2023

2124
import org.springframework.boot.autoconfigure.hazelcast.HazelcastConnectionDetails;
@@ -34,6 +37,8 @@ class HazelcastDockerComposeConnectionDetailsFactory
3437

3538
private static final int DEFAULT_PORT = 5701;
3639

40+
private static final String CLUSTER_NAME_ENV = "HZ_CLUSTERNAME";
41+
3742
protected HazelcastDockerComposeConnectionDetailsFactory() {
3843
super("hazelcast/hazelcast", "com.hazelcast.client.config.ClientConfig");
3944
}
@@ -58,8 +63,10 @@ static class HazelcastDockerComposeConnectionDetails extends DockerComposeConnec
5863

5964
}
6065

61-
private ClientConfig buildClientConfig(RunningService service) {
66+
private static ClientConfig buildClientConfig(RunningService service) {
6267
ClientConfig config = new ClientConfig();
68+
Map<String, String> env = service.env();
69+
Optional.ofNullable(env.get(CLUSTER_NAME_ENV)).ifPresent(config::setClusterName);
6370
config.getNetworkConfig().addAddress(service.host() + ":" + service.ports().get(DEFAULT_PORT));
6471
return config;
6572
}

spring-boot-project/spring-boot-testcontainers/src/dockerTest/java/org/springframework/boot/testcontainers/service/connection/hazelcast/HazelcastContainerConnectionDetailsFactoryIntegrationTests.java

Lines changed: 19 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,11 @@
1616

1717
package org.springframework.boot.testcontainers.service.connection.hazelcast;
1818

19+
import java.util.UUID;
20+
import java.util.function.Consumer;
21+
22+
import com.hazelcast.client.config.ClientConfig;
23+
import com.hazelcast.client.impl.clientside.HazelcastClientProxy;
1924
import com.hazelcast.core.HazelcastInstance;
2025
import com.hazelcast.map.IMap;
2126
import org.junit.jupiter.api.Test;
@@ -45,7 +50,8 @@ class HazelcastContainerConnectionDetailsFactoryIntegrationTests {
4550

4651
@Container
4752
@ServiceConnection
48-
static final HazelcastContainer hazelcast = TestImage.container(HazelcastContainer.class);
53+
static final HazelcastContainer hazelcast = TestImage.container(HazelcastContainer.class)
54+
.withEnv("HZ_CLUSTERNAME", "spring-boot");
4955

5056
@Autowired(required = false)
5157
private HazelcastConnectionDetails connectionDetails;
@@ -56,9 +62,18 @@ class HazelcastContainerConnectionDetailsFactoryIntegrationTests {
5662
@Test
5763
void connectionCanBeMadeToHazelcastContainer() {
5864
assertThat(this.connectionDetails).isNotNull();
59-
IMap<String, String> map = this.hazelcastInstance.getMap("spring-boot");
60-
map.put("hazelcast", "container");
61-
assertThat(map.get("hazelcast")).isEqualTo("container");
65+
assertThat(this.hazelcastInstance).satisfies(clusterName("spring-boot"));
66+
IMap<String, String> map = this.hazelcastInstance.getMap(UUID.randomUUID().toString());
67+
map.put("test", "containers");
68+
assertThat(map.get("test")).isEqualTo("containers");
69+
}
70+
71+
private static Consumer<HazelcastInstance> clusterName(String name) {
72+
return (hazelcastInstance) -> {
73+
assertThat(hazelcastInstance).isInstanceOf(HazelcastClientProxy.class);
74+
HazelcastClientProxy proxy = (HazelcastClientProxy) hazelcastInstance;
75+
assertThat(proxy.getClientConfig()).extracting(ClientConfig::getClusterName).isEqualTo(name);
76+
};
6277
}
6378

6479
@Configuration(proxyBeanMethods = false)

spring-boot-project/spring-boot-testcontainers/src/main/java/org/springframework/boot/testcontainers/service/connection/hazelcast/HazelcastContainerConnectionDetailsFactory.java

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,9 @@
1616

1717
package org.springframework.boot.testcontainers.service.connection.hazelcast;
1818

19+
import java.util.Map;
20+
import java.util.Optional;
21+
1922
import com.hazelcast.client.config.ClientConfig;
2023
import org.testcontainers.containers.Container;
2124
import org.testcontainers.containers.GenericContainer;
@@ -37,6 +40,8 @@ class HazelcastContainerConnectionDetailsFactory
3740

3841
private static final int DEFAULT_PORT = 5701;
3942

43+
private static final String CLUSTER_NAME_ENV = "HZ_CLUSTERNAME";
44+
4045
HazelcastContainerConnectionDetailsFactory() {
4146
super("hazelcast/hazelcast", "com.hazelcast.client.config.ClientConfig");
4247
}
@@ -58,8 +63,10 @@ private HazelcastContainerConnectionDetails(ContainerConnectionSource<Container<
5863

5964
@Override
6065
public ClientConfig getClientConfig() {
61-
Container<?> container = getContainer();
6266
ClientConfig config = new ClientConfig();
67+
Container<?> container = getContainer();
68+
Map<String, String> env = container.getEnvMap();
69+
Optional.ofNullable(env.get(CLUSTER_NAME_ENV)).ifPresent(config::setClusterName);
6370
config.getNetworkConfig().addAddress(container.getHost() + ":" + container.getMappedPort(DEFAULT_PORT));
6471
return config;
6572
}

0 commit comments

Comments
 (0)