fixed tests to work with PRs and invalidates to work with concurrency check 
regions


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

Branch: refs/heads/feature/GEODE-77
Commit: 620aa08ece867aef947c4af5bc40480e36b00a63
Parents: 77daa48
Author: Darrel Schneider <dschnei...@pivotal.io>
Authored: Tue Jul 21 11:03:12 2015 -0700
Committer: Darrel Schneider <dschnei...@pivotal.io>
Committed: Thu Jul 23 17:14:07 2015 -0700

----------------------------------------------------------------------
 .../internal/cache/PartitionedRegion.java       |  8 +++++
 .../gemfire/cache30/MultiVMRegionTestCase.java  | 33 ++++++++++++--------
 .../gemfire/cache30/RegionTestCase.java         | 10 ++++--
 3 files changed, 36 insertions(+), 15 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/620aa08e/gemfire-core/src/main/java/com/gemstone/gemfire/internal/cache/PartitionedRegion.java
----------------------------------------------------------------------
diff --git 
a/gemfire-core/src/main/java/com/gemstone/gemfire/internal/cache/PartitionedRegion.java
 
b/gemfire-core/src/main/java/com/gemstone/gemfire/internal/cache/PartitionedRegion.java
index 003b691..b11d7f6 100644
--- 
a/gemfire-core/src/main/java/com/gemstone/gemfire/internal/cache/PartitionedRegion.java
+++ 
b/gemfire-core/src/main/java/com/gemstone/gemfire/internal/cache/PartitionedRegion.java
@@ -11450,5 +11450,13 @@ public class PartitionedRegion extends LocalRegion 
implements
     return this.getLocalMaxMemory() != 0;
   }
   
+  @Override
+  public EntryExpiryTask getEntryExpiryTask(Object key) {
+    BucketRegion br = this.getDataStore().getLocalBucketByKey(key);
+    if (br == null) {
+      throw new EntryNotFoundException("Bucket for key " + key + " does not 
exist.");
+    }
+    return br.getEntryExpiryTask(key);
+  }
 }
 

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/620aa08e/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 8f0c522..d0acc4d 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
@@ -73,6 +73,7 @@ import com.gemstone.gemfire.cache.TimeoutException;
 import com.gemstone.gemfire.cache.TransactionEvent;
 import com.gemstone.gemfire.cache.TransactionId;
 import com.gemstone.gemfire.cache.TransactionListener;
+import com.gemstone.gemfire.cache.partition.PartitionRegionHelper;
 import com.gemstone.gemfire.cache.server.CacheServer;
 import com.gemstone.gemfire.cache.util.CacheListenerAdapter;
 import com.gemstone.gemfire.distributed.internal.DMStats;
@@ -4086,7 +4087,7 @@ public abstract class MultiVMRegionTestCase extends 
RegionTestCase {
       VM vm1 = host.getVM(1);
 
 
-      vm1.invoke(new CacheSerializableRunnable("Create Region " + name) {
+      vm0.invoke(new CacheSerializableRunnable("Create with Idle") {
         public void run2() throws CacheException {
           AttributesFactory factory = new 
AttributesFactory(getRegionAttributes());
           factory.setStatisticsEnabled(true);
@@ -4094,15 +4095,22 @@ public abstract class MultiVMRegionTestCase extends 
RegionTestCase {
               new ExpirationAttributes(timeout,
                   ExpirationAction.DESTROY);
           factory.setEntryIdleTimeout(expire);
-          if(getRegionAttributes().getPartitionAttributes() != null){
-            createRegion(name, factory.create());  
-          } else {
-            createRegion(name);
-          }          
+          LocalRegion region =
+              (LocalRegion) createRegion(name, factory.create());
+          if (region.getDataPolicy().withPartitioning()) {
+            // Force all buckets to be created locally so the
+            // test will know that the create happens in this vm
+            // and the update (in vm1) is remote.
+            PartitionRegionHelper.assignBucketsToPartitions(region);
+          }
+          region.create(key, null);
+          EntryExpiryTask eet = region.getEntryExpiryTask(key);
+          region.create("createExpiryTime", eet.getExpirationTime());
+          waitForExpiryClockToChange(region);
         }
       });
 
-      vm0.invoke(new CacheSerializableRunnable("Create with Idle") {
+      vm1.invoke(new CacheSerializableRunnable("Create Region " + name) {
         public void run2() throws CacheException {
           AttributesFactory factory = new 
AttributesFactory(getRegionAttributes());
           factory.setStatisticsEnabled(true);
@@ -4110,12 +4118,11 @@ public abstract class MultiVMRegionTestCase extends 
RegionTestCase {
               new ExpirationAttributes(timeout,
                   ExpirationAction.DESTROY);
           factory.setEntryIdleTimeout(expire);
-          LocalRegion region =
-              (LocalRegion) createRegion(name, factory.create());
-          region.create(key, null);
-          EntryExpiryTask eet = region.getEntryExpiryTask(key);
-          region.create("createExpiryTime", eet.getExpirationTime());
-          waitForExpiryClockToChange(region);
+          if(getRegionAttributes().getPartitionAttributes() != null){
+            createRegion(name, factory.create());  
+          } else {
+            createRegion(name);
+          }          
         }
       });
 

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/620aa08e/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 1c1b59c..8f20e12 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
@@ -3778,8 +3778,14 @@ public abstract class RegionTestCase extends 
CacheTestCase {
     region.invalidate(key); // touch
     assertSame(eet, region.getEntryExpiryTask(key));
     long invalidateExpiryTime = eet.getExpirationTime();
-    if (invalidateExpiryTime != putExpiryTime) {
-      fail("invalidate did reset the expiration time. putExpiryTime=" + 
putExpiryTime + " invalidateExpiryTime=" + invalidateExpiryTime);
+    if (region.getConcurrencyChecksEnabled()) {
+      if (putExpiryTime - getExpiryTime <= 0L) {
+        fail("invalidate did not reset the expiration time. putExpiryTime=" + 
putExpiryTime + " invalidateExpiryTime=" + invalidateExpiryTime);
+      }
+    } else {
+      if (invalidateExpiryTime != putExpiryTime) {
+        fail("invalidate did reset the expiration time. putExpiryTime=" + 
putExpiryTime + " invalidateExpiryTime=" + invalidateExpiryTime);
+      }
     }
   }
   

Reply via email to