This is an automated email from the ASF dual-hosted git repository.
alberto pushed a commit to branch develop
in repository https://gitbox.apache.org/repos/asf/geode.git
The following commit(s) were added to refs/heads/develop by this push:
new 9f32d72 GEODE-9971: Fix test case after switching from docker-compose
to testcontainers (#7277)
9f32d72 is described below
commit 9f32d7215df70d0ca926c0fd058fdf682965b790
Author: Alberto Gomez <[email protected]>
AuthorDate: Wed Jan 19 08:03:52 2022 +0100
GEODE-9971: Fix test case after switching from docker-compose to
testcontainers (#7277)
---
...iversWithSamePortAndHostnameForSendersTest.java | 29 +++++++++++++++++++++-
.../org/apache/geode/rules/DockerComposeRule.java | 22 ++++++++++++++++
.../cache/wan/scripts/geode-starter-create.gfsh | 1 -
3 files changed, 50 insertions(+), 2 deletions(-)
diff --git
a/geode-assembly/src/acceptanceTest/java/org/apache/geode/cache/wan/SeveralGatewayReceiversWithSamePortAndHostnameForSendersTest.java
b/geode-assembly/src/acceptanceTest/java/org/apache/geode/cache/wan/SeveralGatewayReceiversWithSamePortAndHostnameForSendersTest.java
index 95280f9..aeddb08 100644
---
a/geode-assembly/src/acceptanceTest/java/org/apache/geode/cache/wan/SeveralGatewayReceiversWithSamePortAndHostnameForSendersTest.java
+++
b/geode-assembly/src/acceptanceTest/java/org/apache/geode/cache/wan/SeveralGatewayReceiversWithSamePortAndHostnameForSendersTest.java
@@ -19,6 +19,8 @@ import static org.apache.geode.cache.Region.SEPARATOR;
import static
org.apache.geode.distributed.ConfigurationProperties.DISTRIBUTED_SYSTEM_ID;
import static org.apache.geode.distributed.ConfigurationProperties.LOCATORS;
import static
org.apache.geode.distributed.ConfigurationProperties.REMOTE_LOCATORS;
+import static org.apache.geode.test.awaitility.GeodeAwaitility.await;
+import static org.assertj.core.api.Assertions.assertThat;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertThrows;
@@ -49,6 +51,7 @@ import org.apache.geode.distributed.Locator;
import org.apache.geode.internal.cache.ForceReattemptException;
import org.apache.geode.internal.cache.PoolStats;
import org.apache.geode.internal.cache.wan.AbstractGatewaySender;
+import org.apache.geode.internal.cache.wan.GatewaySenderStats;
import org.apache.geode.internal.cache.wan.InternalGatewaySenderFactory;
import org.apache.geode.rules.DockerComposeRule;
import org.apache.geode.test.dunit.IgnoredException;
@@ -105,9 +108,15 @@ public class
SeveralGatewayReceiversWithSamePortAndHostnameForSendersTest {
// Start server2
docker.execForService("server2", "gfsh", "run",
"--file=/geode/scripts/geode-starter-server2.gfsh");
- // Create partition region and gateway receiver
+
+ // Create partition region
docker.execForService("locator", "gfsh", "run",
"--file=/geode/scripts/geode-starter-create.gfsh");
+
+ // Create gateway receiver
+ String createGatewayReceiverCommand = createGatewayReceiverCommand();
+ docker.execForService("locator", "gfsh", "-e",
+ "connect --locator=locator[20334]", "-e",
createGatewayReceiverCommand);
}
public SeveralGatewayReceiversWithSamePortAndHostnameForSendersTest() {
@@ -146,6 +155,10 @@ public class
SeveralGatewayReceiversWithSamePortAndHostnameForSendersTest {
putKeyValues(vm1, NUM_PUTS, regionName);
+ await()
+ .untilAsserted(() -> assertThat(getQueuedEvents(vm1,
senderId)).isEqualTo(0));
+
+
// Wait longer than the value set in the receivers for
// maximum-time-between-pings: 10000 (see geode-starter-create.gfsh)
// to verify that connections are not closed
@@ -325,6 +338,14 @@ public class
SeveralGatewayReceiversWithSamePortAndHostnameForSendersTest {
});
}
+ private static int getQueuedEvents(VM vm, String senderId) {
+ return vm.invoke(() -> {
+ AbstractGatewaySender sender = (AbstractGatewaySender)
cache.getGatewaySender(senderId);
+ GatewaySenderStats statistics = sender.getStatistics();
+ return statistics.getEventQueueSize();
+ });
+ }
+
private static int getSenderPoolDisconnects(VM vm, String senderId) {
return vm.invoke(() -> {
AbstractGatewaySender sender =
@@ -351,4 +372,10 @@ public class
SeveralGatewayReceiversWithSamePortAndHostnameForSendersTest {
}
}
+ private static String createGatewayReceiverCommand() {
+ String ipAddress = docker.getIpAddressForService("haproxy",
"geode-wan-test");
+ return "create gateway-receiver --hostname-for-senders=" + ipAddress
+ + " --start-port=2324 --end-port=2324
--maximum-time-between-pings=10000";
+ }
+
}
diff --git
a/geode-assembly/src/acceptanceTest/java/org/apache/geode/rules/DockerComposeRule.java
b/geode-assembly/src/acceptanceTest/java/org/apache/geode/rules/DockerComposeRule.java
index f799077..93cf342 100644
---
a/geode-assembly/src/acceptanceTest/java/org/apache/geode/rules/DockerComposeRule.java
+++
b/geode-assembly/src/acceptanceTest/java/org/apache/geode/rules/DockerComposeRule.java
@@ -23,6 +23,7 @@ import java.util.Map;
import com.github.dockerjava.api.DockerClient;
import com.github.dockerjava.api.command.ExecCreateCmdResponse;
+import com.github.dockerjava.api.model.ContainerNetwork;
import org.apache.logging.log4j.Logger;
import org.junit.rules.ExternalResource;
import org.junit.rules.RuleChain;
@@ -200,6 +201,27 @@ public class DockerComposeRule extends ExternalResource {
}
/**
+ * Get the ip address for a service using a compose network.
+ *
+ * @param serviceName the service
+ * @param network the network used by the service
+ * @return the ip address
+ */
+ public String getIpAddressForService(String serviceName, String network) {
+ Map networks = composeContainer.getContainerByServiceName(serviceName +
"_1").get()
+ .getCurrentContainerInfo().getNetworkSettings().getNetworks();
+ for (Object object : networks.entrySet()) {
+ String key = (String) ((Map.Entry<?, ?>) object).getKey();
+ if (key.contains(network)) {
+ ContainerNetwork containerNetwork =
+ (ContainerNetwork) ((Map.Entry<?, ?>) object).getValue();
+ return containerNetwork.getIpAddress();
+ }
+ }
+ return null;
+ }
+
+ /**
* Pause a service. This is helpful to test failure conditions.
*
* @see <a href=
diff --git
a/geode-assembly/src/acceptanceTest/resources/org/apache/geode/cache/wan/scripts/geode-starter-create.gfsh
b/geode-assembly/src/acceptanceTest/resources/org/apache/geode/cache/wan/scripts/geode-starter-create.gfsh
index c7ee35e..7c4b227 100644
---
a/geode-assembly/src/acceptanceTest/resources/org/apache/geode/cache/wan/scripts/geode-starter-create.gfsh
+++
b/geode-assembly/src/acceptanceTest/resources/org/apache/geode/cache/wan/scripts/geode-starter-create.gfsh
@@ -17,5 +17,4 @@
connect --locator=locator[20334]
create region --name=region-wan --type=PARTITION
-create gateway-receiver --hostname-for-senders=localhost --start-port=2324
--end-port=2324 --maximum-time-between-pings=10000