Skip to content

Commit fb0f6e7

Browse files
Periecleijusti
authored andcommitted
Fix additional toxiproxy regressions (#3004)
1 parent 80b97d9 commit fb0f6e7

6 files changed

Lines changed: 184 additions & 7 deletions

File tree

embedded-azurite/src/main/java/com/playtika/testcontainer/azurite/EmbeddedAzuriteBootstrapConfiguration.java

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -54,7 +54,7 @@ ToxiproxyClientProxy azuriteBlobContainerProxy(ToxiproxyClient toxiproxyClient,
5454
toxiproxyContainer,
5555
azurite,
5656
properties.getBlobStoragePort(),
57-
"azurite");
57+
"azurite-blob");
5858

5959
ToxiproxyHelper.registerProxyEnvironment(proxy, "embedded.azurite", "embeddedAzuriteBlobToxiproxyInfo", environment, "blobStoragePort");
6060

@@ -73,9 +73,9 @@ ToxiproxyClientProxy azuriteQueueContainerProxy(ToxiproxyClient toxiproxyClient,
7373
toxiproxyContainer,
7474
azurite,
7575
properties.getQueueStoragePort(),
76-
"azurite");
76+
"azurite-queue");
7777

78-
ToxiproxyHelper.registerProxyEnvironment(proxy, "embedded.azurite", "embeddedAzuriteQueueToxiproxyInfo", environment, "queueStoragePor");
78+
ToxiproxyHelper.registerProxyEnvironment(proxy, "embedded.azurite", "embeddedAzuriteQueueToxiproxyInfo", environment, "queueStoragePort");
7979

8080
return proxy;
8181
}
@@ -92,7 +92,7 @@ ToxiproxyClientProxy azuriteTableContainerProxy(ToxiproxyClient toxiproxyClient,
9292
toxiproxyContainer,
9393
azurite,
9494
properties.getTableStoragePort(),
95-
"azurite");
95+
"azurite-table");
9696

9797
ToxiproxyHelper.registerProxyEnvironment(proxy, "embedded.azurite", "embeddedAzuriteTableToxiproxyInfo", environment, "tableStoragePort");
9898

@@ -165,7 +165,7 @@ private void registerEnvironment(AzuriteContainer azurite,
165165
LinkedHashMap<String, Object> map = new LinkedHashMap<>();
166166
map.put("embedded.azurite.host", host);
167167
map.put("embedded.azurite.blobStoragePort", mappedBlobStoragePort);
168-
map.put("embedded.azurite.queueStoragePor", mappedQueueStoragePort);
168+
map.put("embedded.azurite.queueStoragePort", mappedQueueStoragePort);
169169
map.put("embedded.azurite.tableStoragePort", mappedTableStoragePort);
170170
map.put("embedded.azurite.account-name", AzuriteProperties.ACCOUNT_NAME);
171171
map.put("embedded.azurite.account-key", AzuriteProperties.ACCOUNT_KEY);
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,71 @@
1+
package com.playtika.testcontainer.azurite;
2+
3+
import com.playtika.testcontainer.toxiproxy.ToxiproxyClientProxy;
4+
import eu.rekawek.toxiproxy.Proxy;
5+
import eu.rekawek.toxiproxy.ToxiproxyClient;
6+
import org.junit.jupiter.api.Test;
7+
import org.springframework.mock.env.MockEnvironment;
8+
import org.testcontainers.azure.AzuriteContainer;
9+
import org.testcontainers.toxiproxy.ToxiproxyContainer;
10+
11+
import java.io.IOException;
12+
import java.util.List;
13+
14+
import static org.assertj.core.api.Assertions.assertThat;
15+
import static org.mockito.ArgumentMatchers.anyInt;
16+
import static org.mockito.ArgumentMatchers.anyString;
17+
import static org.mockito.ArgumentMatchers.eq;
18+
import static org.mockito.Mockito.mock;
19+
import static org.mockito.Mockito.verify;
20+
import static org.mockito.Mockito.when;
21+
22+
class EmbeddedAzuriteBootstrapConfigurationToxiproxyTest {
23+
24+
@Test
25+
void azuriteToxiproxyUsesUniqueProxyNamesAndRegistersQueueStoragePort() throws IOException {
26+
ToxiproxyClient toxiproxyClient = mock(ToxiproxyClient.class);
27+
ToxiproxyContainer toxiproxyContainer = mock(ToxiproxyContainer.class);
28+
AzuriteContainer azuriteContainer = mock(AzuriteContainer.class);
29+
MockEnvironment environment = new MockEnvironment();
30+
AzuriteProperties properties = new AzuriteProperties();
31+
32+
when(azuriteContainer.getNetworkAliases()).thenReturn(List.of("azurite-blob.testcontainer.docker"));
33+
when(toxiproxyContainer.getMappedPort(anyInt())).thenReturn(18666);
34+
when(toxiproxyContainer.getHost()).thenReturn("localhost");
35+
when(toxiproxyClient.createProxy(anyString(), anyString(), anyString())).thenAnswer(invocation -> {
36+
Proxy proxy = mock(Proxy.class);
37+
when(proxy.getName()).thenReturn(invocation.getArgument(0));
38+
return proxy;
39+
});
40+
41+
EmbeddedAzuriteBootstrapConfiguration configuration = new EmbeddedAzuriteBootstrapConfiguration();
42+
ToxiproxyClientProxy blobProxy = configuration.azuriteBlobContainerProxy(
43+
toxiproxyClient,
44+
toxiproxyContainer,
45+
azuriteContainer,
46+
properties,
47+
environment);
48+
ToxiproxyClientProxy queueProxy = configuration.azuriteQueueContainerProxy(
49+
toxiproxyClient,
50+
toxiproxyContainer,
51+
azuriteContainer,
52+
properties,
53+
environment);
54+
ToxiproxyClientProxy tableProxy = configuration.azuriteTableContainerProxy(
55+
toxiproxyClient,
56+
toxiproxyContainer,
57+
azuriteContainer,
58+
properties,
59+
environment);
60+
61+
verify(toxiproxyClient).createProxy(eq("azurite-blob"), anyString(), eq("azurite-blob.testcontainer.docker:10000"));
62+
verify(toxiproxyClient).createProxy(eq("azurite-queue"), anyString(), eq("azurite-blob.testcontainer.docker:10001"));
63+
verify(toxiproxyClient).createProxy(eq("azurite-table"), anyString(), eq("azurite-blob.testcontainer.docker:10002"));
64+
assertThat(blobProxy.getName()).isEqualTo("azurite-blob");
65+
assertThat(queueProxy.getName()).isEqualTo("azurite-queue");
66+
assertThat(tableProxy.getName()).isEqualTo("azurite-table");
67+
assertThat(environment.getProperty("embedded.azurite.toxiproxy.blobStoragePort", Integer.class)).isEqualTo(18666);
68+
assertThat(environment.getProperty("embedded.azurite.toxiproxy.queueStoragePort", Integer.class)).isEqualTo(18666);
69+
assertThat(environment.getProperty("embedded.azurite.toxiproxy.tableStoragePort", Integer.class)).isEqualTo(18666);
70+
}
71+
}

embedded-couchbase/src/main/java/com/playtika/testcontainer/couchbase/EmbeddedCouchbaseBootstrapConfiguration.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,7 @@
3636
public class EmbeddedCouchbaseBootstrapConfiguration {
3737

3838
private static final String COUCHBASE_NETWORK_ALIAS = "couchbase.testcontainer.docker";
39+
private static final int COUCHBASE_INTERNAL_HTTP_PORT = 8091;
3940

4041
@Bean
4142
@ConditionalOnToxiProxyEnabled(module = "couchbase")
@@ -47,7 +48,7 @@ ToxiproxyClientProxy couchbaseContainerProxy(ToxiproxyClient toxiproxyClient,
4748
toxiproxyClient,
4849
toxiproxyContainer,
4950
couchbase,
50-
couchbase.getBootstrapHttpDirectPort(),
51+
COUCHBASE_INTERNAL_HTTP_PORT,
5152
"couchbase");
5253

5354
ToxiproxyHelper.registerProxyEnvironment(proxy, "embedded.couchbase", "embeddedCouchbaseToxiProxyInfo", environment);
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,52 @@
1+
package com.playtika.testcontainer.couchbase;
2+
3+
import com.playtika.testcontainer.toxiproxy.ToxiproxyClientProxy;
4+
import eu.rekawek.toxiproxy.Proxy;
5+
import eu.rekawek.toxiproxy.ToxiproxyClient;
6+
import org.junit.jupiter.api.Test;
7+
import org.springframework.mock.env.MockEnvironment;
8+
import org.testcontainers.couchbase.CouchbaseContainer;
9+
import org.testcontainers.toxiproxy.ToxiproxyContainer;
10+
11+
import java.io.IOException;
12+
import java.util.List;
13+
14+
import static org.assertj.core.api.Assertions.assertThat;
15+
import static org.mockito.ArgumentMatchers.anyInt;
16+
import static org.mockito.ArgumentMatchers.anyString;
17+
import static org.mockito.ArgumentMatchers.eq;
18+
import static org.mockito.Mockito.mock;
19+
import static org.mockito.Mockito.never;
20+
import static org.mockito.Mockito.verify;
21+
import static org.mockito.Mockito.when;
22+
23+
class EmbeddedCouchbaseBootstrapConfigurationToxiproxyTest {
24+
25+
@Test
26+
void couchbaseToxiproxyUsesInternalHttpPortForDockerNetworkUpstream() throws IOException {
27+
ToxiproxyClient toxiproxyClient = mock(ToxiproxyClient.class);
28+
ToxiproxyContainer toxiproxyContainer = mock(ToxiproxyContainer.class);
29+
CouchbaseContainer couchbaseContainer = mock(CouchbaseContainer.class);
30+
Proxy proxy = mock(Proxy.class);
31+
MockEnvironment environment = new MockEnvironment();
32+
33+
when(couchbaseContainer.getNetworkAliases()).thenReturn(List.of("couchbase.testcontainer.docker"));
34+
when(toxiproxyContainer.getMappedPort(anyInt())).thenReturn(18666);
35+
when(toxiproxyContainer.getHost()).thenReturn("localhost");
36+
when(proxy.getName()).thenReturn("couchbase");
37+
when(toxiproxyClient.createProxy(eq("couchbase"), anyString(), eq("couchbase.testcontainer.docker:8091")))
38+
.thenReturn(proxy);
39+
40+
ToxiproxyClientProxy clientProxy = new EmbeddedCouchbaseBootstrapConfiguration().couchbaseContainerProxy(
41+
toxiproxyClient,
42+
toxiproxyContainer,
43+
couchbaseContainer,
44+
environment);
45+
46+
verify(toxiproxyClient).createProxy(eq("couchbase"), anyString(), eq("couchbase.testcontainer.docker:8091"));
47+
verify(couchbaseContainer, never()).getBootstrapHttpDirectPort();
48+
assertThat(clientProxy.getProxyPort()).isEqualTo(18666);
49+
assertThat(environment.getProperty("embedded.couchbase.toxiproxy.host")).isEqualTo("localhost");
50+
assertThat(environment.getProperty("embedded.couchbase.toxiproxy.port", Integer.class)).isEqualTo(18666);
51+
}
52+
}

embedded-keycloak/src/main/java/com/playtika/testcontainer/keycloak/EmbeddedKeycloakBootstrapConfiguration.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,7 @@ ToxiproxyClientProxy keycloakContainerProxy(ToxiproxyClient toxiproxyClient,
5151
toxiproxyClient,
5252
toxiproxyContainer,
5353
keycloakContainer,
54-
keycloakContainer.getHttpPort(),
54+
KEYCLOAK_INTERNAL_HTTP_PORT,
5555
"keycloak");
5656

5757
ToxiproxyHelper.registerProxyEnvironment(proxy, "embedded.keycloak", "embeddedKeycloakToxiproxyInfo", environment);
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,53 @@
1+
package com.playtika.testcontainer.keycloak;
2+
3+
import com.playtika.testcontainer.toxiproxy.ToxiproxyClientProxy;
4+
import dasniko.testcontainers.keycloak.KeycloakContainer;
5+
import eu.rekawek.toxiproxy.Proxy;
6+
import eu.rekawek.toxiproxy.ToxiproxyClient;
7+
import org.junit.jupiter.api.Test;
8+
import org.springframework.mock.env.MockEnvironment;
9+
import org.testcontainers.toxiproxy.ToxiproxyContainer;
10+
11+
import java.io.IOException;
12+
import java.util.List;
13+
14+
import static org.assertj.core.api.Assertions.assertThat;
15+
import static org.mockito.ArgumentMatchers.anyInt;
16+
import static org.mockito.ArgumentMatchers.anyString;
17+
import static org.mockito.ArgumentMatchers.eq;
18+
import static org.mockito.Mockito.mock;
19+
import static org.mockito.Mockito.never;
20+
import static org.mockito.Mockito.verify;
21+
import static org.mockito.Mockito.when;
22+
23+
class EmbeddedKeycloakBootstrapConfigurationToxiproxyTest {
24+
25+
@Test
26+
void keycloakToxiproxyUsesInternalHttpPortForDockerNetworkUpstream() throws IOException {
27+
ToxiproxyClient toxiproxyClient = mock(ToxiproxyClient.class);
28+
ToxiproxyContainer toxiproxyContainer = mock(ToxiproxyContainer.class);
29+
KeycloakContainer keycloakContainer = mock(KeycloakContainer.class);
30+
Proxy proxy = mock(Proxy.class);
31+
MockEnvironment environment = new MockEnvironment();
32+
33+
when(keycloakContainer.getNetworkAliases()).thenReturn(List.of("keycloak.testcontainer.docker"));
34+
when(toxiproxyContainer.getMappedPort(anyInt())).thenReturn(18666);
35+
when(toxiproxyContainer.getHost()).thenReturn("localhost");
36+
when(proxy.getName()).thenReturn("keycloak");
37+
when(toxiproxyClient.createProxy(eq("keycloak"), anyString(), eq("keycloak.testcontainer.docker:8080")))
38+
.thenReturn(proxy);
39+
40+
ToxiproxyClientProxy clientProxy = new EmbeddedKeycloakBootstrapConfiguration().keycloakContainerProxy(
41+
toxiproxyClient,
42+
toxiproxyContainer,
43+
keycloakContainer,
44+
new KeycloakProperties(),
45+
environment);
46+
47+
verify(toxiproxyClient).createProxy(eq("keycloak"), anyString(), eq("keycloak.testcontainer.docker:8080"));
48+
verify(keycloakContainer, never()).getHttpPort();
49+
assertThat(clientProxy.getProxyPort()).isEqualTo(18666);
50+
assertThat(environment.getProperty("embedded.keycloak.toxiproxy.host")).isEqualTo("localhost");
51+
assertThat(environment.getProperty("embedded.keycloak.toxiproxy.port", Integer.class)).isEqualTo(18666);
52+
}
53+
}

0 commit comments

Comments
 (0)