Skip to content

Commit 84a5487

Browse files
authored
Replace usage of MapPropertySource as DynamicPropertyRegistrar (#2398)
1 parent 2c03c83 commit 84a5487

File tree

170 files changed

+2304
-2262
lines changed

Some content is hidden

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

170 files changed

+2304
-2262
lines changed

embedded-aerospike-enterprise/README.adoc

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,7 @@ purposes only during the Evaluation Period**. See https://github.com/aerospike/a
4545
* `embedded.aerospike.networkAlias`
4646
* `embedded.aerospike.internalPort`
4747
* Bean `AerospikeTestOperations aerospikeTestOperations`
48-
* Bean `ToxiproxyContainer.ContainerProxy aerospikeContainerProxy`
48+
* Bean `ToxiproxyClientProxy aerospikeContainerProxy`
4949

5050
==== Example
5151

embedded-aerospike-enterprise/src/main/java/com/playtika/testcontainers/aerospike/enterprise/SetupEnterpriseAerospikeBootstrapConfiguration.java

Lines changed: 3 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -6,12 +6,12 @@
66
import lombok.extern.slf4j.Slf4j;
77
import org.springframework.beans.factory.annotation.Autowired;
88
import org.springframework.beans.factory.annotation.Qualifier;
9+
import org.springframework.beans.factory.annotation.Value;
910
import org.springframework.boot.autoconfigure.AutoConfiguration;
1011
import org.springframework.boot.autoconfigure.condition.ConditionalOnExpression;
1112
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
1213
import org.springframework.boot.context.properties.EnableConfigurationProperties;
1314
import org.springframework.context.annotation.PropertySource;
14-
import org.springframework.core.env.Environment;
1515
import org.testcontainers.containers.GenericContainer;
1616

1717
import java.io.IOException;
@@ -34,12 +34,8 @@ public class SetupEnterpriseAerospikeBootstrapConfiguration {
3434
private GenericContainer<?> aerospikeContainer;
3535
private AerospikeProperties aerospikeProperties;
3636
private AerospikeEnterpriseProperties aerospikeEnterpriseProperties;
37-
private Environment environment;
38-
39-
@Autowired
40-
public void setEnvironment(Environment environment) {
41-
this.environment = environment;
42-
}
37+
@Value("${embedded.aerospike.dockerImage:}")
38+
private String dockerImage;
4339

4440
@Autowired
4541
@Qualifier(BEAN_NAME_AEROSPIKE)
@@ -67,7 +63,6 @@ public void setupEnterpriseAerospike() throws IOException, InterruptedException
6763
private void verifyAerospikeImage() {
6864
log.info("Verify Aerospike Enterprise Image");
6965

70-
String dockerImage = environment.getProperty(AEROSPIKE_DOCKER_IMAGE_PROPERTY);
7166
if (dockerImage == null) {
7267
throw new IllegalStateException("Aerospike enterprise docker image not provided, set up 'embedded.aerospike.dockerImage' property.\n"
7368
+ TEXT_TO_DOCUMENTATION);

embedded-aerospike/README.adoc

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@ ToxiProxy is a great tool for simulating network conditions, meaning that you ca
3737
* `embedded.aerospike.networkAlias`
3838
* `embedded.aerospike.internalPort`
3939
* Bean `AerospikeTestOperations aerospikeTestOperations`
40-
* Bean `ToxiproxyContainer.ContainerProxy aerospikeContainerProxy`
40+
* Bean `ToxiproxyClientProxy aerospikeContainerProxy`
4141

4242
==== Example
4343

@@ -92,7 +92,7 @@ public AerospikeClient aerospikeToxicClient(@Value("${embedded.aerospike.toxipro
9292
String namespace;
9393
9494
@Autowired
95-
ToxiproxyContainer.ContainerProxy aerospikeContainerProxy;
95+
ToxiproxyClientProxy aerospikeContainerProxy;
9696
9797
@Qualifier("aerospikeToxicClient")
9898
@Autowired
@@ -150,5 +150,5 @@ To manipulate ToxiProxy inject the following bean into your tests:
150150
[source,java]
151151
----
152152
@Autowired
153-
ToxiproxyContainer.ContainerProxy aerospikeContainerProxy;
153+
ToxiproxyClientProxy aerospikeContainerProxy;
154154
----

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

Lines changed: 22 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99
import com.playtika.testcontainer.toxiproxy.condition.ConditionalOnToxiProxyEnabled;
1010
import eu.rekawek.toxiproxy.ToxiproxyClient;
1111
import lombok.extern.slf4j.Slf4j;
12+
import org.springframework.beans.factory.annotation.Qualifier;
1213
import org.springframework.boot.autoconfigure.AutoConfigureAfter;
1314
import org.springframework.boot.autoconfigure.condition.ConditionalOnClass;
1415
import org.springframework.boot.autoconfigure.condition.ConditionalOnExpression;
@@ -17,16 +18,14 @@
1718
import org.springframework.boot.context.properties.EnableConfigurationProperties;
1819
import org.springframework.context.annotation.Bean;
1920
import org.springframework.context.annotation.Configuration;
20-
import org.springframework.core.env.ConfigurableEnvironment;
21-
import org.springframework.core.env.MapPropertySource;
21+
import org.springframework.test.context.DynamicPropertyRegistrar;
2222
import org.testcontainers.containers.GenericContainer;
2323
import org.testcontainers.containers.Network;
2424
import org.testcontainers.containers.ToxiproxyContainer;
2525
import org.testcontainers.containers.wait.strategy.HostPortWaitStrategy;
2626
import org.testcontainers.containers.wait.strategy.WaitAllStrategy;
2727
import org.testcontainers.containers.wait.strategy.WaitStrategy;
2828

29-
import java.util.LinkedHashMap;
3029
import java.util.Optional;
3130

3231
import static com.playtika.testcontainer.aerospike.AerospikeProperties.BEAN_NAME_AEROSPIKE;
@@ -54,24 +53,35 @@ public AerospikeWaitStrategy aerospikeStartupCheckStrategy(AerospikeProperties p
5453
ToxiproxyClientProxy aerospikeContainerProxy(ToxiproxyClient toxiproxyClient,
5554
ToxiproxyContainer toxiproxyContainer,
5655
GenericContainer<?> aerospike,
57-
AerospikeProperties properties,
58-
ConfigurableEnvironment environment) {
59-
ToxiproxyClientProxy proxy = ToxiproxyHelper.createProxy(
56+
AerospikeProperties properties) {
57+
return ToxiproxyHelper.createProxy(
6058
toxiproxyClient,
6159
toxiproxyContainer,
6260
aerospike,
6361
properties.port,
6462
"aerospike");
63+
}
6564

66-
ToxiproxyHelper.registerProxyEnvironment(proxy, "embedded.aerospike", "embeddedAerospikeToxiProxyInfo", environment);
67-
68-
return proxy;
65+
@Bean
66+
public DynamicPropertyRegistrar aerospikeDynamicPropertyRegistrar(GenericContainer<?> aerospike, AerospikeProperties properties) {
67+
return registry -> {
68+
registry.add("embedded.aerospike.host", aerospike::getHost);
69+
registry.add("embedded.aerospike.port", () -> aerospike.getMappedPort(properties.port));
70+
registry.add("embedded.aerospike.namespace", () -> properties.namespace);
71+
registry.add("embedded.aerospike.networkAlias", () -> AEROSPIKE_NETWORK_ALIAS);
72+
registry.add("embedded.aerospike.internalPort", () -> properties.port);
73+
};
6974
}
7075

76+
@Bean
77+
@ConditionalOnToxiProxyEnabled(module = "aerospike")
78+
public DynamicPropertyRegistrar aerospikeToxiProxyDynamicPropertyRegistrar(
79+
@Qualifier("aerospikeContainerProxy") ToxiproxyClientProxy proxy) {
80+
return ToxiproxyHelper.createToxiProxyDynamicPropertyRegistrar(proxy, "embedded.aerospike");
81+
}
7182

7283
@Bean(name = BEAN_NAME_AEROSPIKE, destroyMethod = "stop")
7384
public GenericContainer<?> aerospike(AerospikeWaitStrategy aerospikeWaitStrategy,
74-
ConfigurableEnvironment environment,
7585
AerospikeProperties properties,
7686
Optional<Network> network) {
7787
WaitStrategy waitStrategy = new WaitAllStrategy()
@@ -98,26 +108,8 @@ public GenericContainer<?> aerospike(AerospikeWaitStrategy aerospikeWaitStrategy
98108
.withEnv("FEATURE_KEY_FILE", "env-b64:FEATURES");
99109
}
100110
aerospike = configureCommonsAndStart(aerospike, properties, log);
101-
registerAerospikeEnvironment(aerospike, environment, properties);
111+
log.info("Started aerospike server. Connection details host={}, port={}, namespace={}, networkAlias={}, internalPort={}",
112+
aerospike.getHost(), aerospike.getMappedPort(properties.port), properties.namespace, AEROSPIKE_NETWORK_ALIAS, properties.port);
102113
return aerospike;
103114
}
104-
105-
private void registerAerospikeEnvironment(GenericContainer<?> aerospike,
106-
ConfigurableEnvironment environment,
107-
AerospikeProperties properties) {
108-
Integer mappedPort = aerospike.getMappedPort(properties.port);
109-
String host = aerospike.getHost();
110-
111-
LinkedHashMap<String, Object> map = new LinkedHashMap<>();
112-
map.put("embedded.aerospike.host", host);
113-
map.put("embedded.aerospike.port", mappedPort);
114-
map.put("embedded.aerospike.namespace", properties.namespace);
115-
map.put("embedded.aerospike.networkAlias", AEROSPIKE_NETWORK_ALIAS);
116-
map.put("embedded.aerospike.internalPort", properties.port);
117-
118-
log.info("Started aerospike server. Connection details {}", map);
119-
120-
MapPropertySource propertySource = new MapPropertySource("embeddedAerospikeInfo", map);
121-
environment.getPropertySources().addFirst(propertySource);
122-
}
123115
}

embedded-artifactory/README.adoc

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,4 +34,4 @@
3434
* `embedded.artifactory.staticNetworkAlias`
3535
* `embedded.artifactory.internalRestApiPort`
3636
* `embedded.artifactory.internalGeneralPort`
37-
* Bean `ToxiproxyContainer.ContainerProxy artifactoryContainerProxy`
37+
* Bean `ToxiproxyClientProxy artifactoryContainerProxy`

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

Lines changed: 24 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -15,15 +15,13 @@
1515
import org.springframework.boot.context.properties.EnableConfigurationProperties;
1616
import org.springframework.context.annotation.Bean;
1717
import org.springframework.context.annotation.Configuration;
18-
import org.springframework.core.env.ConfigurableEnvironment;
19-
import org.springframework.core.env.MapPropertySource;
18+
import org.springframework.test.context.DynamicPropertyRegistrar;
2019
import org.testcontainers.containers.GenericContainer;
2120
import org.testcontainers.containers.Network;
2221
import org.testcontainers.containers.ToxiproxyContainer;
2322
import org.testcontainers.containers.wait.strategy.HttpWaitStrategy;
2423
import org.testcontainers.containers.wait.strategy.WaitStrategy;
2524

26-
import java.util.LinkedHashMap;
2725
import java.util.Optional;
2826

2927
import static com.playtika.testcontainer.artifactory.ArtifactoryProperties.ARTIFACTORY_BEAN_NAME;
@@ -53,60 +51,50 @@ public WaitStrategy artifactoryWaitStrategy(ArtifactoryProperties properties) {
5351
ToxiproxyClientProxy artifactoryContainerProxy(ToxiproxyClient toxiproxyClient,
5452
ToxiproxyContainer toxiproxyContainer,
5553
@Qualifier(ARTIFACTORY_BEAN_NAME) GenericContainer<?> artifactory,
56-
ArtifactoryProperties properties,
57-
ConfigurableEnvironment environment) {
58-
ToxiproxyClientProxy proxy = ToxiproxyHelper.createProxy(
54+
ArtifactoryProperties properties) {
55+
return ToxiproxyHelper.createProxy(
5956
toxiproxyClient,
6057
toxiproxyContainer,
6158
artifactory,
6259
properties.getRestApiPort(),
6360
"artifactory");
61+
}
6462

65-
ToxiproxyHelper.registerProxyEnvironment(proxy, "embedded.artifactory", "embeddedArtifactoryToxiproxyInfo", environment);
66-
67-
return proxy;
63+
@Bean
64+
@ConditionalOnToxiProxyEnabled(module = "artifactory")
65+
public DynamicPropertyRegistrar artifactoryToxiProxyDynamicPropertyRegistrar(@Qualifier("artifactoryContainerProxy") ToxiproxyClientProxy proxy) {
66+
return ToxiproxyHelper.createToxiProxyDynamicPropertyRegistrar(proxy, "embedded.artifactory");
6867
}
6968

7069
@Bean(name = ARTIFACTORY_BEAN_NAME, destroyMethod = "stop")
71-
public GenericContainer<?> artifactory(ConfigurableEnvironment environment,
72-
ArtifactoryProperties properties,
70+
public GenericContainer<?> artifactory(ArtifactoryProperties properties,
7371
WaitStrategy artifactoryWaitStrategy,
7472
Optional<Network> network) {
75-
7673
GenericContainer<?> container =
7774
new GenericContainer<>(ContainerUtils.getDockerImageName(properties))
7875
.withExposedPorts(properties.getRestApiPort(), properties.getGeneralPort())
7976
.withNetwork(Network.SHARED)
8077
.withNetworkAliases(properties.getNetworkAlias(), ARTIFACTORY_NETWORK_ALIAS)
8178
.waitingFor(artifactoryWaitStrategy);
82-
8379
network.ifPresent(container::withNetwork);
8480
configureCommonsAndStart(container, properties, log);
85-
86-
registerEnvironment(container, environment, properties);
87-
81+
Integer mappedPort = container.getMappedPort(properties.generalPort);
82+
String host = container.getHost();
83+
log.info("Started Artifactory server. Connection details: host={}, port={}, username={}, password={}, staticNetworkAlias={}, internalRestApiPort={}, internalGeneralPort={}",
84+
host, mappedPort, properties.getUsername(), properties.getPassword(), ARTIFACTORY_NETWORK_ALIAS, properties.getRestApiPort(), properties.getGeneralPort());
8885
return container;
8986
}
9087

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

embedded-azurite/README.adoc

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -38,9 +38,9 @@ Account name and account key are hardcoded as of https://github.com/Azure/Azurit
3838
* `embedded.azurite.toxiproxy.queueStoragePort`
3939
* `embedded.azurite.toxiproxy.tableStoragePort`
4040
* `embedded.azurite.networkAlias`
41-
* Bean `ToxiproxyContainer.ContainerProxy azuriteBlobContainerProxy`
42-
* Bean `ToxiproxyContainer.ContainerProxy azuriteQueueContainerProxy`
43-
* Bean `ToxiproxyContainer.ContainerProxy azuriteTableContainerProxy`
41+
* Bean `ToxiproxyClientProxy azuriteBlobContainerProxy`
42+
* Bean `ToxiproxyClientProxy azuriteQueueContainerProxy`
43+
* Bean `ToxiproxyClientProxy azuriteTableContainerProxy`
4444
==== Example
4545

4646
Use `com.azure.spring:spring-cloud-azure-starter-storage-blob` (see https://docs.microsoft.com/en-us/azure/developer/java/spring-framework/configure-spring-boot-starter-java-app-with-azure-storage)

0 commit comments

Comments
 (0)