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
 

Reply via email to