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/07/24 20:44:58 UTC
incubator-geode git commit: GEODE-156: fix unit tests that call
pauseIfNecessary
Repository: incubator-geode
Updated Branches:
refs/heads/feature/GEODE-156 [created] cd232e1a1
GEODE-156: fix unit tests that call pauseIfNecessary
all calls to pauseIfNecessary have been changed to flushIfNecessary.
The new flushIfNecessary method uses StateFlushOperation.
Project: http://git-wip-us.apache.org/repos/asf/incubator-geode/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-geode/commit/cd232e1a
Tree: http://git-wip-us.apache.org/repos/asf/incubator-geode/tree/cd232e1a
Diff: http://git-wip-us.apache.org/repos/asf/incubator-geode/diff/cd232e1a
Branch: refs/heads/feature/GEODE-156
Commit: cd232e1a12103466dd578d2d7442fed6eed70a13
Parents: 3bfee73
Author: Darrel Schneider <ds...@pivotal.io>
Authored: Fri Jul 24 11:39:40 2015 -0700
Committer: Darrel Schneider <ds...@pivotal.io>
Committed: Fri Jul 24 11:39:40 2015 -0700
----------------------------------------------------------------------
.../gemfire/cache30/CacheLoaderTestCase.java | 2 +-
.../DistributedNoAckRegionDUnitTest.java | 14 +++
.../gemfire/cache30/MultiVMRegionTestCase.java | 122 +++++++++----------
.../gemfire/cache30/RegionTestCase.java | 8 ++
4 files changed, 80 insertions(+), 66 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/cd232e1a/gemfire-core/src/test/java/com/gemstone/gemfire/cache30/CacheLoaderTestCase.java
----------------------------------------------------------------------
diff --git a/gemfire-core/src/test/java/com/gemstone/gemfire/cache30/CacheLoaderTestCase.java b/gemfire-core/src/test/java/com/gemstone/gemfire/cache30/CacheLoaderTestCase.java
index 5262ed2..ea06e13 100644
--- a/gemfire-core/src/test/java/com/gemstone/gemfire/cache30/CacheLoaderTestCase.java
+++ b/gemfire-core/src/test/java/com/gemstone/gemfire/cache30/CacheLoaderTestCase.java
@@ -153,9 +153,9 @@ public abstract class CacheLoaderTestCase
//// factory.setCacheLoader(remoteloader);
// Region rgn = createRegion(name);
// rgn.put(key, value);
+// flushIfNecessary(rgn);
// }
// });
-// pauseIfNecessary();
//
//
// assertEquals(value, region.get(key));
http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/cd232e1a/gemfire-core/src/test/java/com/gemstone/gemfire/cache30/DistributedNoAckRegionDUnitTest.java
----------------------------------------------------------------------
diff --git a/gemfire-core/src/test/java/com/gemstone/gemfire/cache30/DistributedNoAckRegionDUnitTest.java b/gemfire-core/src/test/java/com/gemstone/gemfire/cache30/DistributedNoAckRegionDUnitTest.java
index 733ba81..b9f5104 100644
--- a/gemfire-core/src/test/java/com/gemstone/gemfire/cache30/DistributedNoAckRegionDUnitTest.java
+++ b/gemfire-core/src/test/java/com/gemstone/gemfire/cache30/DistributedNoAckRegionDUnitTest.java
@@ -8,7 +8,11 @@
package com.gemstone.gemfire.cache30;
import java.util.*;
+
import com.gemstone.gemfire.cache.*;
+import com.gemstone.gemfire.distributed.internal.membership.InternalDistributedMember;
+import com.gemstone.gemfire.internal.cache.DistributedRegion;
+import com.gemstone.gemfire.internal.cache.StateFlushOperation;
import dunit.*;
@@ -254,20 +258,30 @@ public class DistributedNoAckRegionDUnitTest
}
}
+ @Override
protected void pauseIfNecessary(int ms) {
pause(ms);
}
+ @Override
protected void pauseIfNecessary() {
pause();
}
+ @Override
+ protected void flushIfNecessary(Region r) {
+ DistributedRegion dr = (DistributedRegion)r;
+ Set<InternalDistributedMember> targets = dr.getDistributionAdvisor().adviseCacheOp();
+ StateFlushOperation.flushTo(targets, dr);
+ }
+
/**
* The number of milliseconds to try repeating validation code in the
* event that AssertionFailedError is thrown. For DISTRIBUTED_NO_ACK
* scopes, a repeat timeout is used to account for the fact that a
* previous operation may have not yet completed.
*/
+ @Override
protected long getRepeatTimeoutMs() {
return 5000;
}
http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/cd232e1a/gemfire-core/src/test/java/com/gemstone/gemfire/cache30/MultiVMRegionTestCase.java
----------------------------------------------------------------------
diff --git a/gemfire-core/src/test/java/com/gemstone/gemfire/cache30/MultiVMRegionTestCase.java b/gemfire-core/src/test/java/com/gemstone/gemfire/cache30/MultiVMRegionTestCase.java
index 97208ca..40f7bab 100644
--- a/gemfire-core/src/test/java/com/gemstone/gemfire/cache30/MultiVMRegionTestCase.java
+++ b/gemfire-core/src/test/java/com/gemstone/gemfire/cache30/MultiVMRegionTestCase.java
@@ -368,23 +368,21 @@ public abstract class MultiVMRegionTestCase extends RegionTestCase {
Region region =
getRootRegion().getSubregion(name);
region.put(key, oldValue);
+ flushIfNecessary(region);
}
};
vm0.invoke(put);
vm1.invoke(put);
- pauseIfNecessary();
-
vm0.invoke(new CacheSerializableRunnable("Update") {
public void run2() throws CacheException {
Region region = getRootRegion().getSubregion(name);
region.put(key, newValue);
+ flushIfNecessary(region);
}
});
- pauseIfNecessary();
-
vm1.invoke(new CacheSerializableRunnable("Validate update") {
public void run2() throws CacheException {
Region region = getRootRegion().getSubregion(name);
@@ -453,6 +451,7 @@ public abstract class MultiVMRegionTestCase extends RegionTestCase {
}
}
});
+ flushIfNecessary(region);
}
});
AsyncInvocation ai1 =
@@ -476,8 +475,6 @@ public abstract class MultiVMRegionTestCase extends RegionTestCase {
}
});
- pauseIfNecessary();
-
AsyncInvocation ai0 =
vm0.invokeAsync(new CacheSerializableRunnable("Populate") {
public void run2() throws CacheException {
@@ -675,13 +672,8 @@ public abstract class MultiVMRegionTestCase extends RegionTestCase {
vm0.invoke(create);
vm1.invoke(create);
-
- // vm2 is on a different gemfire system
vm2.invoke(create);
-
- Thread.sleep(250);
-
final Object key = "KEY";
final Object value = "VALUE";
@@ -694,6 +686,7 @@ public abstract class MultiVMRegionTestCase extends RegionTestCase {
region.put(key, value);
assertTrue(!region.isDestroyed());
assertTrue(!region.getParentRegion().isDestroyed());
+ flushIfNecessary(region);
}
};
@@ -717,13 +710,12 @@ public abstract class MultiVMRegionTestCase extends RegionTestCase {
vm1.invoke(verifyPut);
vm2.invoke(verifyPut);
- pauseIfNecessary(500);
-
vm0.invoke(new CacheSerializableRunnable("Destroy Entry") {
public void run2() throws CacheException {
Region region =
getRootRegion().getSubregion(name);
region.destroy(key);
+ flushIfNecessary(region);
}
});
@@ -737,9 +729,9 @@ public abstract class MultiVMRegionTestCase extends RegionTestCase {
assertNull(region.getEntry(key));
}
};
- invokeRepeatingIfNecessary(vm0, verifyDestroy);
- invokeRepeatingIfNecessary(vm1, verifyDestroy);
- invokeRepeatingIfNecessary(vm2, verifyDestroy);
+ vm0.invoke(verifyDestroy);
+ vm1.invoke(verifyDestroy);
+ vm2.invoke(verifyDestroy);
}
/**
@@ -770,11 +762,10 @@ public abstract class MultiVMRegionTestCase extends RegionTestCase {
Region region =
getRootRegion().getSubregion(name);
region.destroyRegion();
+ flushIfNecessary(region);
}
});
- pauseIfNecessary(400);
-
invokeInEveryVM(new CacheSerializableRunnable("Verify region destruction") {
public void run2() throws CacheException {
WaitCriterion ev = new WaitCriterion() {
@@ -785,7 +776,7 @@ public abstract class MultiVMRegionTestCase extends RegionTestCase {
return "Waiting for region " + name + " to be destroyed";
}
};
- DistributedTestCase.waitForCriterion(ev, 60 * 1000, 200, true);
+ DistributedTestCase.waitForCriterion(ev, 60 * 1000, 10, true);
Region region = getRootRegion().getSubregion(name);
assertNull(region);
}
@@ -945,6 +936,7 @@ public abstract class MultiVMRegionTestCase extends RegionTestCase {
Region region =
getRootRegion().getSubregion(name);
region.put(key, value);
+ flushIfNecessary(region);
}
};
@@ -952,13 +944,12 @@ public abstract class MultiVMRegionTestCase extends RegionTestCase {
vm1.invoke(put);
vm2.invoke(put);
- pauseIfNecessary(500);
-
vm0.invoke(new CacheSerializableRunnable("Invalidate Entry") {
public void run2() throws CacheException {
Region region =
getRootRegion().getSubregion(name);
region.invalidate(key);
+ flushIfNecessary(region);
}
});
@@ -980,8 +971,8 @@ public abstract class MultiVMRegionTestCase extends RegionTestCase {
};
- invokeRepeatingIfNecessary(vm1, verify);
- invokeRepeatingIfNecessary(vm2, verify);
+ vm1.invoke(verify);
+ vm2.invoke(verify);
}
/**
@@ -998,8 +989,7 @@ public abstract class MultiVMRegionTestCase extends RegionTestCase {
SerializableRunnable create =
new CacheSerializableRunnable("Create Region") {
public void run2() throws CacheException {
- Region region = createRegion(name);
- region.put(key, value);
+ createRegion(name);
}
};
@@ -1010,14 +1000,28 @@ public abstract class MultiVMRegionTestCase extends RegionTestCase {
vm.invoke(create);
}
- pause();
+ SerializableRunnable put =
+ new CacheSerializableRunnable("put entry") {
+ public void run2() throws CacheException {
+ Region region =
+ getRootRegion().getSubregion(name);
+ region.put(key, value);
+ flushIfNecessary(region);
+ }
+ };
+
+ for (int i = 0; i < vmCount; i++) {
+ VM vm = host.getVM(i);
+ vm.invoke(put);
+ }
- SerializableRunnable invalidate =
+ SerializableRunnable invalidate =
new CacheSerializableRunnable("Invalidate Entry") {
public void run2() throws CacheException {
Region region =
getRootRegion().getSubregion(name);
region.invalidate(key);
+ flushIfNecessary(region);
}
};
@@ -1041,10 +1045,6 @@ public abstract class MultiVMRegionTestCase extends RegionTestCase {
VM vm = host.getVM(i);
vm.invoke(verify);
}
-
- // Why is this long 2.5 second pause needed on no-ack?
- pauseIfNecessary(2500); // wait for messages to acquiesce before tearing down
- getLogWriter().info("Tearing down...");
}
/**
@@ -1085,20 +1085,19 @@ public abstract class MultiVMRegionTestCase extends RegionTestCase {
getRootRegion().getSubregion(name);
region.put(key, value);
region.put(key2, value2);
+ flushIfNecessary(region);
if (useSubs) {
Region subregion = region.getSubregion(subname);
subregion.put(key, value);
subregion.put(key2, value2);
+ flushIfNecessary(subregion);
}
}
};
invokeInEveryVM(put);
- // wait for update messages to all be propagated
- pauseIfNecessary(1000);
-
Host host = Host.getHost(0);
VM vm0 = host.getVM(0);
@@ -1215,6 +1214,7 @@ public abstract class MultiVMRegionTestCase extends RegionTestCase {
// a listener but for this test it does not matter.
// So I'm commenting out the following pause:
//pauseIfNecessary();
+ // If needed then do a flushIfNecessary(region) after adding the cache listener
vm0.invoke(new CacheSerializableRunnable("Update") {
public void run2() throws CacheException {
@@ -1580,13 +1580,10 @@ public abstract class MultiVMRegionTestCase extends RegionTestCase {
}
};
region.getAttributesMutator().setCacheLoader(loader);
+ flushIfNecessary(region);
}
});
- pauseIfNecessary();
-
- pauseIfNecessary();
-
vm0.invoke(new CacheSerializableRunnable("Remote load") {
public void run2() throws CacheException {
Region region =
@@ -1660,11 +1657,10 @@ public abstract class MultiVMRegionTestCase extends RegionTestCase {
}
};
region.getAttributesMutator().setCacheLoader(loader);
+ flushIfNecessary(region);
}
});
- pauseIfNecessary();
-
vm0.invoke(new CacheSerializableRunnable("Remote load") {
public void run2() throws CacheException {
Region region =
@@ -1722,9 +1718,9 @@ public abstract class MultiVMRegionTestCase extends RegionTestCase {
// factory.setCacheLoader(remoteloader);
Region rgn = createRegion(name);
rgn.put(key, value);
+ flushIfNecessary(rgn);
}
});
- pauseIfNecessary();
final TestCacheLoader loader1 = new TestCacheLoader() {
public Object load2(LoaderHelper helper)
@@ -2034,12 +2030,10 @@ public abstract class MultiVMRegionTestCase extends RegionTestCase {
}
};
region.getAttributesMutator().setCacheWriter(writer);
+ flushIfNecessary(region);
}
});
- // give no-ack time to propagate bookkeeping info
- pauseIfNecessary();
-
vm0.invoke(new CacheSerializableRunnable("Create with Exception") {
public void run2() throws CacheException {
Region region =
@@ -2478,6 +2472,7 @@ public abstract class MultiVMRegionTestCase extends RegionTestCase {
}
};
region.getAttributesMutator().setCacheLoader(loader);
+ flushIfNecessary(region);
}
};
@@ -2515,11 +2510,10 @@ public abstract class MultiVMRegionTestCase extends RegionTestCase {
}
};
region.getAttributesMutator().setCacheWriter(writer);
+ flushIfNecessary(region);
}
});
- pauseIfNecessary();
-
vm0.invoke(new CacheSerializableRunnable("Create entry") {
public void run2() throws CacheException {
Region region =
@@ -2849,7 +2843,7 @@ public abstract class MultiVMRegionTestCase extends RegionTestCase {
if (!supportsReplication()) {
return;
}
- pauseIfNecessary(100); // wait for previous tearDown to complete
+ //pauseIfNecessary(100); // wait for previous tearDown to complete
final String name = this.getUniqueName();
final Object key1 = "KEY1";
@@ -2883,9 +2877,7 @@ public abstract class MultiVMRegionTestCase extends RegionTestCase {
};
vm0.invoke(create);
- Thread.sleep(250);
vm2.invoke(create);
- Thread.sleep(250);
vm0.invoke(new CacheSerializableRunnable("Put data") {
public void run2() throws CacheException {
@@ -2894,7 +2886,8 @@ public abstract class MultiVMRegionTestCase extends RegionTestCase {
region.put(key1, value1);
region.put(key2, value2);
region.put(key3, value3);
- }
+ flushIfNecessary(region);
+ }
});
invokeRepeatingIfNecessary(vm2, new CacheSerializableRunnable("Wait for update") {
@@ -2913,6 +2906,7 @@ public abstract class MultiVMRegionTestCase extends RegionTestCase {
Region region =
getRootRegion().getSubregion(name);
region.localDestroyRegion();
+ flushIfNecessary(region);
}
});
@@ -2977,7 +2971,7 @@ public abstract class MultiVMRegionTestCase extends RegionTestCase {
if (!supportsReplication()) {
return;
}
- pauseIfNecessary(100); // wait for previous tearDown to complete
+ //pauseIfNecessary(100); // wait for previous tearDown to complete
final String name = this.getUniqueName();
final Object key1 = "KEY1";
@@ -3278,6 +3272,7 @@ public abstract class MultiVMRegionTestCase extends RegionTestCase {
region.put(key1, value1);
region.put(key2, value2);
region.put(key3, value3);
+ flushIfNecessary(region);
}
};
@@ -3325,11 +3320,10 @@ public abstract class MultiVMRegionTestCase extends RegionTestCase {
region.localDestroy(key1);
region.localDestroy(key2);
region.localDestroy(key3);
+ flushIfNecessary(region);
}
});
- pauseIfNecessary(500);
-
vm0.invoke(new CacheSerializableRunnable("Verify keys/values and listener") {
public void run2() throws CacheException {
Region region =
@@ -3402,15 +3396,12 @@ public abstract class MultiVMRegionTestCase extends RegionTestCase {
region.put(key1, value1);
region.put(key2, value2);
region.put(key3, value3);
+ flushIfNecessary(region);
}
};
- pauseIfNecessary();
-
vm2.invoke(create);
- pauseIfNecessary();
-
// Make sure that data wasn't pushed
vm0.invoke(new CacheSerializableRunnable("Verify keys/values") {
public void run2() throws CacheException {
@@ -4925,9 +4916,10 @@ public abstract class MultiVMRegionTestCase extends RegionTestCase {
// as before
if (i == 301) {
// DebuggerSupport.waitForJavaDebugger(getLogWriter(), "About to invalidate region");
- pauseIfNecessary(300); // wait for previous updates to be processed
+ // wait for previous updates to be processed
+ flushIfNecessary(region);
region.invalidateRegion();
- pauseIfNecessary(500);
+ flushIfNecessary(region);
}
Object key = new Integer(i);
@@ -5402,7 +5394,7 @@ public abstract class MultiVMRegionTestCase extends RegionTestCase {
Region region = getRootRegion().getSubregion(name);
region.put(key, new IntWrapper(intValue));
- pauseIfNecessary();
+ flushIfNecessary(region);
assertTrue(serializer.wasInvoked);
}
});
@@ -5453,7 +5445,7 @@ public abstract class MultiVMRegionTestCase extends RegionTestCase {
Region region = getRootRegion().getSubregion(name);
region.put(key2, new LongWrapper(longValue));
- pauseIfNecessary();
+ flushIfNecessary(region);
LongWrapper.LongWrapperSerializer serializer =
(LongWrapper.LongWrapperSerializer)
@@ -5535,7 +5527,7 @@ public abstract class MultiVMRegionTestCase extends RegionTestCase {
Region region = getRootRegion().getSubregion(name);
region.put(key, new DSIntWrapper(intValue));
- pauseIfNecessary();
+ flushIfNecessary(region);
}
});
@@ -5569,7 +5561,7 @@ public abstract class MultiVMRegionTestCase extends RegionTestCase {
Region region = getRootRegion().getSubregion(name);
region.put(key2, new DSLongWrapper(longValue));
- pauseIfNecessary();
+ flushIfNecessary(region);
}
});
vm2.invoke(get);
@@ -6269,6 +6261,7 @@ public abstract class MultiVMRegionTestCase extends RegionTestCase {
Object value = rgn.get("key");
assertEquals("LV 1", value);
getSystem().getLogWriter().info("testTXUpdateLoadNoConflict: loaded Key");
+ flushIfNecessary(rgn);
}
catch (CacheException e) {
fail("While creating region", e);
@@ -6293,7 +6286,6 @@ public abstract class MultiVMRegionTestCase extends RegionTestCase {
vm0.invoke(create);
- pauseIfNecessary(); // give us a chance to get the update
{
TXStateProxy tx = ((TXManagerImpl)txMgr).internalSuspend();
assertTrue(rgn.containsKey("key"));
@@ -6411,7 +6403,7 @@ public abstract class MultiVMRegionTestCase extends RegionTestCase {
assertEquals("new txValue", rgn.getEntry("key").getValue());
txMgr.commit();
- pauseIfNecessary(); // give other side change to process commit
+ flushIfNecessary(rgn); // give other side change to process commit
getSystem().getLogWriter().info("testTXUpdateLoadNoConflict: did commit");
assertEquals("new txValue", rgn.getEntry("key").getValue());
{
http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/cd232e1a/gemfire-core/src/test/java/com/gemstone/gemfire/cache30/RegionTestCase.java
----------------------------------------------------------------------
diff --git a/gemfire-core/src/test/java/com/gemstone/gemfire/cache30/RegionTestCase.java b/gemfire-core/src/test/java/com/gemstone/gemfire/cache30/RegionTestCase.java
index c24791b..c084352 100644
--- a/gemfire-core/src/test/java/com/gemstone/gemfire/cache30/RegionTestCase.java
+++ b/gemfire-core/src/test/java/com/gemstone/gemfire/cache30/RegionTestCase.java
@@ -152,6 +152,14 @@ public abstract class RegionTestCase extends CacheTestCase {
protected void pauseIfNecessary(int ms) {
}
+ /**
+ * Make sure all messages done on region r have
+ * been processed on the remote side.
+ */
+ protected void flushIfNecessary(Region r) {
+ // Only needed for no-ack regions
+ }
+
////////////////////// Test Methods //////////////////////
/**