Skip to content

Commit 59e624f

Browse files
author
admitrov
committed
replace usage of MapPropertySource as DynamicPropertyRegistrar
1 parent 76e9cf8 commit 59e624f

File tree

99 files changed

+1695
-2206
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

99 files changed

+1695
-2206
lines changed

embedded-aerospike/pom.xml

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -40,5 +40,9 @@
4040
<groupId>org.assertj</groupId>
4141
<artifactId>assertj-core</artifactId>
4242
</dependency>
43+
<dependency>
44+
<groupId>org.springframework</groupId>
45+
<artifactId>spring-test</artifactId>
46+
</dependency>
4347
</dependencies>
4448
</project>

embedded-aerospike/src/main/java/com/playtika/testcontainer/aerospike/EmbeddedAerospikeBootstrapConfiguration.java

Lines changed: 28 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
import com.playtika.testcontainer.toxiproxy.EmbeddedToxiProxyBootstrapConfiguration;
77
import com.playtika.testcontainer.toxiproxy.condition.ConditionalOnToxiProxyEnabled;
88
import lombok.extern.slf4j.Slf4j;
9+
import org.springframework.beans.factory.annotation.Qualifier;
910
import org.springframework.boot.autoconfigure.AutoConfigureAfter;
1011
import org.springframework.boot.autoconfigure.condition.ConditionalOnClass;
1112
import org.springframework.boot.autoconfigure.condition.ConditionalOnExpression;
@@ -14,17 +15,14 @@
1415
import org.springframework.boot.context.properties.EnableConfigurationProperties;
1516
import org.springframework.context.annotation.Bean;
1617
import org.springframework.context.annotation.Configuration;
17-
import org.springframework.core.env.ConfigurableEnvironment;
18-
import org.springframework.core.env.MapPropertySource;
18+
import org.springframework.test.context.DynamicPropertyRegistrar;
1919
import org.testcontainers.containers.GenericContainer;
2020
import org.testcontainers.containers.Network;
2121
import org.testcontainers.containers.ToxiproxyContainer;
2222
import org.testcontainers.containers.wait.strategy.HostPortWaitStrategy;
2323
import org.testcontainers.containers.wait.strategy.WaitAllStrategy;
2424
import org.testcontainers.containers.wait.strategy.WaitStrategy;
2525

26-
import java.util.LinkedHashMap;
27-
import java.util.Map;
2826
import java.util.Optional;
2927

3028
import static com.playtika.testcontainer.aerospike.AerospikeProperties.BEAN_NAME_AEROSPIKE;
@@ -51,26 +49,37 @@ public AerospikeWaitStrategy aerospikeStartupCheckStrategy(AerospikeProperties p
5149
@ConditionalOnToxiProxyEnabled(module = "aerospike")
5250
ToxiproxyContainer.ContainerProxy aerospikeContainerProxy(ToxiproxyContainer toxiproxyContainer,
5351
GenericContainer<?> aerospike,
54-
AerospikeProperties properties,
55-
ConfigurableEnvironment environment) {
52+
AerospikeProperties properties) {
5653
ToxiproxyContainer.ContainerProxy proxy = toxiproxyContainer.getProxy(aerospike, properties.port);
57-
58-
Map<String, Object> map = new LinkedHashMap<>();
59-
map.put("embedded.aerospike.toxiproxy.host", proxy.getContainerIpAddress());
60-
map.put("embedded.aerospike.toxiproxy.port", proxy.getProxyPort());
61-
map.put("embedded.aerospike.toxiproxy.proxyName", proxy.getName());
62-
63-
MapPropertySource propertySource = new MapPropertySource("embeddedAerospikeToxiProxyInfo", map);
64-
environment.getPropertySources().addFirst(propertySource);
65-
log.info("Started Aerospike ToxiProxy connection details {}", map);
66-
54+
log.info("Started Aerospike ToxiProxy connection details host={}, port={}, proxyName={}", proxy.getContainerIpAddress(), proxy.getProxyPort(), proxy.getName());
6755
return proxy;
6856
}
6957

58+
@Bean
59+
public DynamicPropertyRegistrar aerospikeDynamicPropertyRegistrar(GenericContainer<?> aerospike, AerospikeProperties properties) {
60+
return registry -> {
61+
registry.add("embedded.aerospike.host", aerospike::getHost);
62+
registry.add("embedded.aerospike.port", () -> aerospike.getMappedPort(properties.port));
63+
registry.add("embedded.aerospike.namespace", () -> properties.namespace);
64+
registry.add("embedded.aerospike.networkAlias", () -> AEROSPIKE_NETWORK_ALIAS);
65+
registry.add("embedded.aerospike.internalPort", () -> properties.port);
66+
};
67+
}
68+
69+
@Bean
70+
@ConditionalOnToxiProxyEnabled(module = "aerospike")
71+
public DynamicPropertyRegistrar aerospikeToxiProxyDynamicPropertyRegistrar(
72+
@Qualifier("aerospikeContainerProxy") ToxiproxyContainer.ContainerProxy proxy) {
73+
return registry -> {
74+
registry.add("embedded.aerospike.toxiproxy.host", proxy::getContainerIpAddress);
75+
registry.add("embedded.aerospike.toxiproxy.port", proxy::getProxyPort);
76+
registry.add("embedded.aerospike.toxiproxy.proxyName", proxy::getName);
77+
log.info("Started Aerospike ToxiProxy connection details host={}, port={}, proxyName={}", proxy.getContainerIpAddress(), proxy.getProxyPort(), proxy.getName());
78+
};
79+
}
7080

7181
@Bean(name = BEAN_NAME_AEROSPIKE, destroyMethod = "stop")
7282
public GenericContainer<?> aerospike(AerospikeWaitStrategy aerospikeWaitStrategy,
73-
ConfigurableEnvironment environment,
7483
AerospikeProperties properties,
7584
Optional<Network> network) {
7685
WaitStrategy waitStrategy = new WaitAllStrategy()
@@ -97,26 +106,8 @@ public GenericContainer<?> aerospike(AerospikeWaitStrategy aerospikeWaitStrategy
97106
.withEnv("FEATURE_KEY_FILE", "env-b64:FEATURES");
98107
}
99108
aerospike = configureCommonsAndStart(aerospike, properties, log);
100-
registerAerospikeEnvironment(aerospike, environment, properties);
109+
log.info("Started aerospike server. Connection details host={}, port={}, namespace={}, networkAlias={}, internalPort={}",
110+
aerospike.getHost(), aerospike.getMappedPort(properties.port), properties.namespace, AEROSPIKE_NETWORK_ALIAS, properties.port);
101111
return aerospike;
102112
}
103-
104-
private void registerAerospikeEnvironment(GenericContainer<?> aerospike,
105-
ConfigurableEnvironment environment,
106-
AerospikeProperties properties) {
107-
Integer mappedPort = aerospike.getMappedPort(properties.port);
108-
String host = aerospike.getHost();
109-
110-
LinkedHashMap<String, Object> map = new LinkedHashMap<>();
111-
map.put("embedded.aerospike.host", host);
112-
map.put("embedded.aerospike.port", mappedPort);
113-
map.put("embedded.aerospike.namespace", properties.namespace);
114-
map.put("embedded.aerospike.networkAlias", AEROSPIKE_NETWORK_ALIAS);
115-
map.put("embedded.aerospike.internalPort", properties.port);
116-
117-
log.info("Started aerospike server. Connection details {}", map);
118-
119-
MapPropertySource propertySource = new MapPropertySource("embeddedAerospikeInfo", map);
120-
environment.getPropertySources().addFirst(propertySource);
121-
}
122113
}

embedded-artifactory/pom.xml

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -45,5 +45,9 @@
4545
</exclusion>
4646
</exclusions>
4747
</dependency>
48+
<dependency>
49+
<groupId>org.springframework</groupId>
50+
<artifactId>spring-test</artifactId>
51+
</dependency>
4852
</dependencies>
4953
</project>

embedded-artifactory/src/main/java/com/playtika/testcontainer/artifactory/EmbeddedArtifactoryBootstrapConfiguration.java

Lines changed: 31 additions & 45 deletions
Original file line numberDiff line numberDiff line change
@@ -12,16 +12,13 @@
1212
import org.springframework.boot.context.properties.EnableConfigurationProperties;
1313
import org.springframework.context.annotation.Bean;
1414
import org.springframework.context.annotation.Configuration;
15-
import org.springframework.core.env.ConfigurableEnvironment;
16-
import org.springframework.core.env.MapPropertySource;
15+
import org.springframework.test.context.DynamicPropertyRegistrar;
1716
import org.testcontainers.containers.GenericContainer;
1817
import org.testcontainers.containers.Network;
1918
import org.testcontainers.containers.ToxiproxyContainer;
2019
import org.testcontainers.containers.wait.strategy.HttpWaitStrategy;
2120
import org.testcontainers.containers.wait.strategy.WaitStrategy;
2221

23-
import java.util.LinkedHashMap;
24-
import java.util.Map;
2522
import java.util.Optional;
2623

2724
import static com.playtika.testcontainer.artifactory.ArtifactoryProperties.ARTIFACTORY_BEAN_NAME;
@@ -48,64 +45,53 @@ public WaitStrategy artifactoryWaitStrategy(ArtifactoryProperties properties) {
4845

4946
@Bean
5047
@ConditionalOnToxiProxyEnabled(module = "artifactory")
51-
ToxiproxyContainer.ContainerProxy artifactoryContainerProxy(ToxiproxyContainer toxiproxyContainer,
52-
@Qualifier(ARTIFACTORY_BEAN_NAME) GenericContainer<?> artifactory,
53-
ArtifactoryProperties properties,
54-
ConfigurableEnvironment environment) {
48+
public ToxiproxyContainer.ContainerProxy artifactoryContainerProxy(ToxiproxyContainer toxiproxyContainer,
49+
@Qualifier(ARTIFACTORY_BEAN_NAME) GenericContainer<?> artifactory,
50+
ArtifactoryProperties properties) {
5551
ToxiproxyContainer.ContainerProxy proxy = toxiproxyContainer.getProxy(artifactory, properties.getRestApiPort());
56-
57-
Map<String, Object> map = new LinkedHashMap<>();
58-
map.put("embedded.artifactory.toxiproxy.host", proxy.getContainerIpAddress());
59-
map.put("embedded.artifactory.toxiproxy.port", proxy.getProxyPort());
60-
map.put("embedded.artifactory.toxiproxy.proxyName", proxy.getName());
61-
62-
MapPropertySource propertySource = new MapPropertySource("embeddedArtifactoryToxiproxyInfo", map);
63-
environment.getPropertySources().addFirst(propertySource);
64-
log.info("Started Artifactory ToxiProxy connection details {}", map);
65-
52+
log.info("Started Artifactory ToxiProxy connection details host={}, port={}, proxyName={}", proxy.getContainerIpAddress(), proxy.getProxyPort(), proxy.getName());
6653
return proxy;
6754
}
6855

56+
@Bean
57+
@ConditionalOnToxiProxyEnabled(module = "artifactory")
58+
public DynamicPropertyRegistrar artifactoryToxiProxyDynamicPropertyRegistrar(@Qualifier("artifactoryContainerProxy") ToxiproxyContainer.ContainerProxy proxy) {
59+
return registry -> {
60+
registry.add("embedded.artifactory.toxiproxy.host", proxy::getContainerIpAddress);
61+
registry.add("embedded.artifactory.toxiproxy.port", proxy::getProxyPort);
62+
registry.add("embedded.artifactory.toxiproxy.proxyName", proxy::getName);
63+
};
64+
}
65+
6966
@Bean(name = ARTIFACTORY_BEAN_NAME, destroyMethod = "stop")
70-
public GenericContainer<?> artifactory(ConfigurableEnvironment environment,
71-
ArtifactoryProperties properties,
67+
public GenericContainer<?> artifactory(ArtifactoryProperties properties,
7268
WaitStrategy artifactoryWaitStrategy,
7369
Optional<Network> network) {
74-
7570
GenericContainer<?> container =
7671
new GenericContainer<>(ContainerUtils.getDockerImageName(properties))
7772
.withExposedPorts(properties.getRestApiPort(), properties.getGeneralPort())
7873
.withNetwork(Network.SHARED)
7974
.withNetworkAliases(properties.getNetworkAlias(), ARTIFACTORY_NETWORK_ALIAS)
8075
.waitingFor(artifactoryWaitStrategy);
81-
8276
network.ifPresent(container::withNetwork);
8377
configureCommonsAndStart(container, properties, log);
84-
85-
registerEnvironment(container, environment, properties);
86-
78+
Integer mappedPort = container.getMappedPort(properties.generalPort);
79+
String host = container.getHost();
80+
log.info("Started Artifactory server. Connection details: host={}, port={}, username={}, password={}, staticNetworkAlias={}, internalRestApiPort={}, internalGeneralPort={}",
81+
host, mappedPort, properties.getUsername(), properties.getPassword(), ARTIFACTORY_NETWORK_ALIAS, properties.getRestApiPort(), properties.getGeneralPort());
8782
return container;
8883
}
8984

90-
private void registerEnvironment(GenericContainer<?> artifactory,
91-
ConfigurableEnvironment environment,
92-
ArtifactoryProperties properties) {
93-
94-
Integer mappedPort = artifactory.getMappedPort(properties.generalPort);
95-
String host = artifactory.getHost();
96-
97-
LinkedHashMap<String, Object> map = new LinkedHashMap<>();
98-
map.put("embedded.artifactory.host", host);
99-
map.put("embedded.artifactory.port", mappedPort);
100-
map.put("embedded.artifactory.username", properties.getUsername());
101-
map.put("embedded.artifactory.password", properties.getPassword());
102-
map.put("embedded.artifactory.staticNetworkAlias", ARTIFACTORY_NETWORK_ALIAS);
103-
map.put("embedded.artifactory.internalRestApiPort", properties.getRestApiPort());
104-
map.put("embedded.artifactory.internalGeneralPort", properties.getGeneralPort());
105-
106-
log.info("Started Artifactory server. Connection details: {}", map);
107-
108-
MapPropertySource propertySource = new MapPropertySource("embeddedArtifactoryInfo", map);
109-
environment.getPropertySources().addFirst(propertySource);
85+
@Bean
86+
public DynamicPropertyRegistrar artifactoryDynamicPropertyRegistrar(@Qualifier(ARTIFACTORY_BEAN_NAME) GenericContainer<?> artifactory, ArtifactoryProperties properties) {
87+
return registry -> {
88+
registry.add("embedded.artifactory.host", artifactory::getHost);
89+
registry.add("embedded.artifactory.port", () -> artifactory.getMappedPort(properties.generalPort));
90+
registry.add("embedded.artifactory.username", properties::getUsername);
91+
registry.add("embedded.artifactory.password", properties::getPassword);
92+
registry.add("embedded.artifactory.staticNetworkAlias", () -> ARTIFACTORY_NETWORK_ALIAS);
93+
registry.add("embedded.artifactory.internalRestApiPort", properties::getRestApiPort);
94+
registry.add("embedded.artifactory.internalGeneralPort", properties::getGeneralPort);
95+
};
11096
}
11197
}

embedded-azurite/pom.xml

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,10 @@
3434
<groupId>com.playtika.testcontainers</groupId>
3535
<artifactId>embedded-toxiproxy</artifactId>
3636
</dependency>
37+
<dependency>
38+
<groupId>org.springframework</groupId>
39+
<artifactId>spring-test</artifactId>
40+
</dependency>
3741
</dependencies>
3842

3943
</project>

0 commit comments

Comments
 (0)