You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@geode.apache.org by ds...@apache.org on 2015/08/11 01:30:04 UTC

incubator-geode git commit: GEODE-138: remove race condition from testEventDelivery

Repository: incubator-geode
Updated Branches:
  refs/heads/develop e255c75e9 -> bd84581e3


GEODE-138: remove race condition from testEventDelivery

The race due to the test expecting local event delivery to be synchronous
but the implementation of off-heap resource manager events being async.
The test has been changed to always use a wait criteria when waiting
for a memory event to arrive.


Project: http://git-wip-us.apache.org/repos/asf/incubator-geode/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-geode/commit/bd84581e
Tree: http://git-wip-us.apache.org/repos/asf/incubator-geode/tree/bd84581e
Diff: http://git-wip-us.apache.org/repos/asf/incubator-geode/diff/bd84581e

Branch: refs/heads/develop
Commit: bd84581e3d5a93cbbb3fcdf06ebe60bb9460e702
Parents: e255c75
Author: Darrel Schneider <ds...@pivotal.io>
Authored: Mon Aug 10 14:24:58 2015 -0700
Committer: Darrel Schneider <ds...@pivotal.io>
Committed: Mon Aug 10 16:29:09 2015 -0700

----------------------------------------------------------------------
 .../MemoryThresholdsOffHeapDUnitTest.java       | 42 ++++++++++----------
 1 file changed, 22 insertions(+), 20 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/bd84581e/gemfire-core/src/test/java/com/gemstone/gemfire/cache/management/MemoryThresholdsOffHeapDUnitTest.java
----------------------------------------------------------------------
diff --git a/gemfire-core/src/test/java/com/gemstone/gemfire/cache/management/MemoryThresholdsOffHeapDUnitTest.java b/gemfire-core/src/test/java/com/gemstone/gemfire/cache/management/MemoryThresholdsOffHeapDUnitTest.java
index 0b704a6..83b8608 100644
--- a/gemfire-core/src/test/java/com/gemstone/gemfire/cache/management/MemoryThresholdsOffHeapDUnitTest.java
+++ b/gemfire-core/src/test/java/com/gemstone/gemfire/cache/management/MemoryThresholdsOffHeapDUnitTest.java
@@ -146,14 +146,14 @@ public class MemoryThresholdsOffHeapDUnitTest extends BridgeTestCase {
     // NORMAL -> EVICTION
     setUsageAboveEvictionThreshold(server2, regionName);
     verifyListenerValue(server1, MemoryState.EVICTION, 1, true);
-    verifyListenerValue(server2, MemoryState.EVICTION, 1, false);
+    verifyListenerValue(server2, MemoryState.EVICTION, 1, true);
     
     // EVICTION -> CRITICAL
     setUsageAboveCriticalThreshold(server2, regionName);
     verifyListenerValue(server1, MemoryState.CRITICAL, 1, true);
-    verifyListenerValue(server2, MemoryState.CRITICAL, 1, false);
+    verifyListenerValue(server2, MemoryState.CRITICAL, 1, true);
     verifyListenerValue(server1, MemoryState.EVICTION, 2, true);
-    verifyListenerValue(server2, MemoryState.EVICTION, 2, false);
+    verifyListenerValue(server2, MemoryState.EVICTION, 2, true);
     
     // CRITICAL -> CRITICAL
     server2.invoke(new SerializableCallable() {
@@ -168,9 +168,9 @@ public class MemoryThresholdsOffHeapDUnitTest extends BridgeTestCase {
       }
     });
     verifyListenerValue(server1, MemoryState.CRITICAL, 1, true);
-    verifyListenerValue(server2, MemoryState.CRITICAL, 1, false);
+    verifyListenerValue(server2, MemoryState.CRITICAL, 1, true);
     verifyListenerValue(server1, MemoryState.EVICTION, 2, true);
-    verifyListenerValue(server2, MemoryState.EVICTION, 2, false);
+    verifyListenerValue(server2, MemoryState.EVICTION, 2, true);
     
     // CRITICAL -> EVICTION
     server2.invoke(new SerializableCallable() {
@@ -185,7 +185,7 @@ public class MemoryThresholdsOffHeapDUnitTest extends BridgeTestCase {
       }
     });
     verifyListenerValue(server1, MemoryState.EVICTION, 3, true);
-    verifyListenerValue(server2, MemoryState.EVICTION, 3, false);
+    verifyListenerValue(server2, MemoryState.EVICTION, 3, true);
 
     // EVICTION -> EVICTION
     server2.invoke(new SerializableCallable() {
@@ -198,7 +198,7 @@ public class MemoryThresholdsOffHeapDUnitTest extends BridgeTestCase {
       }
     });
     verifyListenerValue(server1, MemoryState.EVICTION, 3, true);
-    verifyListenerValue(server2, MemoryState.EVICTION, 3, false);
+    verifyListenerValue(server2, MemoryState.EVICTION, 3, true);
 
     // EVICTION -> NORMAL
     server2.invoke(new SerializableCallable() {
@@ -215,9 +215,9 @@ public class MemoryThresholdsOffHeapDUnitTest extends BridgeTestCase {
     verifyListenerValue(server1, MemoryState.EVICTION, 3, true);
     verifyListenerValue(server1, MemoryState.NORMAL, 1, true);
     
-    verifyListenerValue(server2, MemoryState.CRITICAL, 1, false);
-    verifyListenerValue(server2, MemoryState.EVICTION, 3, false);
-    verifyListenerValue(server2, MemoryState.NORMAL, 1, false);
+    verifyListenerValue(server2, MemoryState.CRITICAL, 1, true);
+    verifyListenerValue(server2, MemoryState.EVICTION, 3, true);
+    verifyListenerValue(server2, MemoryState.NORMAL, 1, true);
   }
   
   /**
@@ -245,23 +245,23 @@ public class MemoryThresholdsOffHeapDUnitTest extends BridgeTestCase {
     registerTestMemoryThresholdListener(server2);
     
     setUsageAboveEvictionThreshold(server1, regionName);
-    verifyListenerValue(server1, MemoryState.EVICTION, 0, false);
+    verifyListenerValue(server1, MemoryState.EVICTION, 0, true);
     verifyListenerValue(server2, MemoryState.EVICTION, 0, true);
 
     setThresholds(server1, 70f, 0f);
-    verifyListenerValue(server1, MemoryState.EVICTION, 1, false);
+    verifyListenerValue(server1, MemoryState.EVICTION, 1, true);
     verifyListenerValue(server2, MemoryState.EVICTION, 1, true);
 
     setUsageAboveCriticalThreshold(server1, regionName);
-    verifyListenerValue(server1, MemoryState.CRITICAL, 0, false);
+    verifyListenerValue(server1, MemoryState.CRITICAL, 0, true);
     verifyListenerValue(server2, MemoryState.CRITICAL, 0, true);
 
     setThresholds(server1, 0f, 0f);
-    verifyListenerValue(server1, MemoryState.EVICTION_DISABLED, 1, false);
+    verifyListenerValue(server1, MemoryState.EVICTION_DISABLED, 1, true);
     verifyListenerValue(server2, MemoryState.EVICTION_DISABLED, 1, true);
 
     setThresholds(server1, 0f, 90f);
-    verifyListenerValue(server1, MemoryState.CRITICAL, 1, false);
+    verifyListenerValue(server1, MemoryState.CRITICAL, 1, true);
     verifyListenerValue(server2, MemoryState.CRITICAL, 1, true);
 
     //verify that stats on server2 are not changed by events on server1
@@ -373,7 +373,7 @@ public class MemoryThresholdsOffHeapDUnitTest extends BridgeTestCase {
     setUsageAboveCriticalThreshold(server2, regionName);
 
     verifyListenerValue(server1, MemoryState.CRITICAL, 1, true);
-    verifyListenerValue(server2, MemoryState.CRITICAL, 1, false);
+    verifyListenerValue(server2, MemoryState.CRITICAL, 1, true);
 
     //make sure that client puts are rejected
     doPuts(client, regionName, true/*catchRejectedException*/,
@@ -448,7 +448,7 @@ public class MemoryThresholdsOffHeapDUnitTest extends BridgeTestCase {
     setUsageAboveCriticalThreshold(server2, regionName);
 
     verifyListenerValue(server1, MemoryState.CRITICAL, 1, true);
-    verifyListenerValue(server2, MemoryState.CRITICAL, 1, false);
+    verifyListenerValue(server2, MemoryState.CRITICAL, 1, true);
 
     //make sure that local server1 puts are rejected
     doPuts(server1, regionName, false/*catchRejectedException*/,
@@ -1552,7 +1552,9 @@ public class MemoryThresholdsOffHeapDUnitTest extends BridgeTestCase {
 
   /**
    * Verifies that the test listener value on the given vm is what is expected
-   * Note that for remote events useWaitCriterion must be true
+   * Note that for remote events useWaitCriterion must be true.
+   * Note also that since off-heap local events are async local events must also
+   * set useWaitCriterion to true.
    * 
    * @param vm
    *          the vm where verification should take place
@@ -1562,7 +1564,7 @@ public class MemoryThresholdsOffHeapDUnitTest extends BridgeTestCase {
    * @param value
    *          the expected value
    * @param useWaitCriterion
-   *          must be true for remote events
+   *          must be true for both local and remote events (see GEODE-138)
    */
   private void verifyListenerValue(VM vm, final MemoryState state, final int value, final boolean useWaitCriterion) {
     vm.invoke(new SerializableCallable() {
@@ -1672,7 +1674,7 @@ public class MemoryThresholdsOffHeapDUnitTest extends BridgeTestCase {
           throw new IllegalStateException("Unknown memory state");
         }
         if (useWaitCriterion) {
-          waitForCriterion(wc, 5000, 100, true);
+          waitForCriterion(wc, 5000, 10, true);
         }
         return null;
       }