You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@geode.apache.org by up...@apache.org on 2018/08/07 20:48:59 UTC

[geode] branch develop updated: GEODE-5499: Changing testTxRmtMirror to use awaitility, not 200 ms sleep

This is an automated email from the ASF dual-hosted git repository.

upthewaterspout 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 946ec0e  GEODE-5499: Changing testTxRmtMirror to use awaitility, not 200 ms sleep
946ec0e is described below

commit 946ec0ebf5553a4e5dbf45cbf08c29dbfc1bd68d
Author: Dan Smith <ds...@pivotal.io>
AuthorDate: Tue Aug 7 13:48:55 2018 -0700

    GEODE-5499: Changing testTxRmtMirror to use awaitility, not 200 ms sleep
---
 .../geode/cache30/MultiVMRegionTestCase.java       | 69 ++++++++++------------
 1 file changed, 31 insertions(+), 38 deletions(-)

diff --git a/geode-core/src/integrationTest/java/org/apache/geode/cache30/MultiVMRegionTestCase.java b/geode-core/src/integrationTest/java/org/apache/geode/cache30/MultiVMRegionTestCase.java
index 7338eb7..b63a6ef 100644
--- a/geode-core/src/integrationTest/java/org/apache/geode/cache30/MultiVMRegionTestCase.java
+++ b/geode-core/src/integrationTest/java/org/apache/geode/cache30/MultiVMRegionTestCase.java
@@ -47,8 +47,10 @@ import java.util.Properties;
 import java.util.Random;
 import java.util.Set;
 import java.util.concurrent.LinkedBlockingQueue;
+import java.util.concurrent.TimeUnit;
 
 import org.apache.logging.log4j.Logger;
+import org.awaitility.Awaitility;
 import org.junit.AfterClass;
 import org.junit.Ignore;
 import org.junit.Test;
@@ -7306,6 +7308,33 @@ public abstract class MultiVMRegionTestCase extends RegionTestCase {
             }
           }
         };
+
+
+
+    Region region;
+
+    // Make sure that a remote create done in a tx is created in a remote mirror
+    // and dropped in a remote non-mirror
+    VM vm0 = VM.getVM(0);
+    VM vm1 = VM.getVM(1);
+    vm0.invoke(createMirror);
+    vm1.invoke(createNonMirror);
+    region = createRegion(rgnName);
+
+    txMgr.begin();
+    region.create("key", "value");
+    getSystem().getLogWriter().info("textTXRmtMirror: create mirror and non-mirror");
+    txMgr.commit();
+
+    if (!region.getAttributes().getScope().isAck()) {
+      Awaitility.await().atMost(5, TimeUnit.MINUTES)
+          .until(() -> validateTXRmtMirror(rgnName, vm0, vm1));
+    } else {
+      validateTXRmtMirror(rgnName, vm0, vm1);
+    }
+  }
+
+  private void validateTXRmtMirror(String rgnName, VM vm0, VM vm1) {
     SerializableRunnable checkExists = new SerializableRunnable("textTXRmtMirror: checkExists") {
       @Override
       public void run() {
@@ -7360,44 +7389,8 @@ public abstract class MultiVMRegionTestCase extends RegionTestCase {
         assertEquals(rgn.getCache(), tl.lastEvent.getCache());
       }
     };
-
-
-    // GemFireVersion.waitForJavaDebugger(getLogWriter(), "CTRLR WAITING AFTER CREATE");
-
-    try {
-      Region rgn;
-
-      // Make sure that a remote create done in a tx is created in a remote mirror
-      // and dropped in a remote non-mirror
-      Host.getHost(0).getVM(0).invoke(createMirror);
-      Host.getHost(0).getVM(1).invoke(createNonMirror);
-      rgn = createRegion(rgnName);
-
-      txMgr.begin();
-      rgn.create("key", "value");
-      // TransactionId txId = txMgr.getTransactionId();
-      getSystem().getLogWriter().info("textTXRmtMirror: create mirror and non-mirror");
-      txMgr.commit();
-      if (!rgn.getAttributes().getScope().isAck()) {
-        // pause to give cmt message a chance to be processed
-        try {
-          Thread.sleep(200);
-        } catch (InterruptedException chomp) {
-          fail("interrupted");
-        }
-      }
-      Host.getHost(0).getVM(0).invoke(checkExists);
-      Host.getHost(0).getVM(1).invoke(checkNoKey);
-      rgn.destroyRegion();
-
-      // @todo darrel/mitch: how do a get rid of the entry remotely
-      // Make sure that a remote put, that modifies an existing entry,
-      // done in a tx is dropped in a remote mirror that does not have the entry.
-    } catch (Exception e) {
-      getCache().close();
-      getSystem().getLogWriter().fine("textTXRmtMirror: Caused exception in createRegion");
-      throw e;
-    }
+    vm0.invoke(checkExists);
+    vm1.invoke(checkNoKey);
   }
 
   @Ignore("TODO: test is disabled")