geode-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From dschnei...@apache.org
Subject [2/4] incubator-geode git commit: fixed testEntryIdleTimeout3
Date Wed, 22 Jul 2015 00:29:11 GMT
fixed testEntryIdleTimeout3


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

Branch: refs/heads/feature/GEODE-148
Commit: e82c4d39358563e7bc4559e7a2944abdce2f0820
Parents: 190b136
Author: Darrel Schneider <dschneider@pivotal.io>
Authored: Tue Jul 21 14:51:10 2015 -0700
Committer: Darrel Schneider <dschneider@pivotal.io>
Committed: Tue Jul 21 14:51:10 2015 -0700

----------------------------------------------------------------------
 .../gemfire/cache30/RegionTestCase.java         | 151 +++++++------------
 1 file changed, 55 insertions(+), 96 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/e82c4d39/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 acf071c..ff24434 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
@@ -3167,17 +3167,18 @@ public abstract class RegionTestCase extends CacheTestCase {
   }
 
   /**
-   * Expire an entry with a given idle time.  Set a new idle time, create the
-   * same entry again, make sure it observes the <em>new</em> idle time.
+   * Configure entry expiration with a idle time.
+   * Create an entry and records its scheduled expiration time.
+   * Then mutate the region expiration configuration and confirm
+   * that the entry's expiration time is rescheduled.
    */
   public void testEntryIdleTimeout3() {
-
     final String name = this.getUniqueName();
-    final int timeout1 = 200; // ms
-    final int timeout2 = 2000;
+    // test no longer waits for this expiration to happen
+    final int timeout1 = 500 * 1000; // ms
+    final int timeout2 = 2000 * 1000; // ms
     final String key1 = "KEY1";
     final String value1 = "VALUE1";
-    final String value2 = "VALUE2";
     
     AttributesFactory factory = new AttributesFactory(getRegionAttributes());
     ExpirationAttributes expire1 =
@@ -3193,104 +3194,62 @@ public abstract class RegionTestCase extends CacheTestCase {
     factory.addCacheListener(list);
     RegionAttributes attrs = factory.create();
     
-    Region region = null;
+    LocalRegion region;
     System.setProperty(LocalRegion.EXPIRY_MS_PROPERTY, "true");
     try {
-      region = createRegion(name, attrs);
-    } 
-    finally {
-      if(region.getAttributes().getPartitionAttributes() == null)
-        System.getProperties().remove(LocalRegion.EXPIRY_MS_PROPERTY);
+      region = (LocalRegion) createRegion(name, attrs);
+    } finally {
+      System.getProperties().remove(LocalRegion.EXPIRY_MS_PROPERTY);
     }
 
-    // DebuggerSupport.waitForJavaDebugger(getLogWriter(), "Set breakpoint in invalidate");
-    ExpiryTask.suspendExpiration();
-    Region.Entry entry = null;
-    long tilt;
-    try {
-      region.create(key1, value1);
-      tilt = System.currentTimeMillis() + timeout1;
-      assertTrue(list.waitForInvocation(5000));
-      entry = region.getEntry(key1);
-      Assert.assertTrue(value1.equals(entry.getValue()));
-    } 
-    finally {
-      ExpiryTask.permitExpiration();
-    }
-    waitForInvalidate(entry, tilt);
-    if (!getRegionAttributes().getDataPolicy().withPartitioning()) {
-      // Disk regions are VERY slow, so we need to wait for the event...
-      WaitCriterion wc = new WaitCriterion() {
-        public boolean done() {
-          return eventCount == 1;
-        }
-        public String description() {
-          return "eventCount never became 1";
-        }
-      };
-      DistributedTestCase.waitForCriterion(wc, 10 * 1000, 100, true);
-    }
-    eventCount = 0;
+    region.create(key1, value1);
+    EntryExpiryTask eet = region.getEntryExpiryTask(key1);
+    final long firstExpiryTime = eet.getExpirationTime();
 
-    // Do it again with a put (I guess)
-    ExpiryTask.suspendExpiration();
-    try {
-      region.put(key1, value1);
-      tilt = System.currentTimeMillis() + timeout1;
-      entry = region.getEntry(key1);
-      Assert.assertTrue(value1.equals(entry.getValue()));
-      assertTrue(list.waitForInvocation(5000));
-    } 
-    finally {
-      ExpiryTask.permitExpiration();
-    }
-    waitForInvalidate(entry, tilt);
-    if (!getRegionAttributes().getDataPolicy().withPartitioning()) {
-      // Disk regions are VERY slow, so we need to wait for the event...
-      WaitCriterion wc = new WaitCriterion() {
-        public boolean done() {
-          return eventCount == 1;
-        }
-        public String description() {
-          return "eventCount never became 1";
-        }
-      };
-      DistributedTestCase.waitForCriterion(wc, 10 * 1000, 100, true);
-    }
-    eventCount = 0;
-    
-    // Change expiry for this region now...
     AttributesMutator mutt = region.getAttributesMutator();
-    ExpirationAttributes expire2 =
-      new ExpirationAttributes(timeout2, ExpirationAction.INVALIDATE);
+    ExpirationAttributes expire2 = new ExpirationAttributes(timeout2, ExpirationAction.INVALIDATE);
     mutt.setEntryIdleTimeout(expire2);
-    
-    ExpiryTask.suspendExpiration();
-    try {
-      region.put(key1, value2);
-      tilt = System.currentTimeMillis() + timeout2;
-      entry = region.getEntry(key1);
-      Assert.assertTrue(value2.equals(entry.getValue()));
-      assertTrue(list.waitForInvocation(5000));
-    } 
-    finally {
-      ExpiryTask.permitExpiration();
-      if(region.getAttributes().getPartitionAttributes() != null)
-        System.getProperties().remove(LocalRegion.EXPIRY_MS_PROPERTY);
-    }
-    waitForInvalidate(entry, tilt);
-    if (!region.getAttributes().getDataPolicy().withPartitioning()) {
-      // Disk regions are VERY slow, so we need to wait for the event...
-      WaitCriterion wc = new WaitCriterion() {
-        public boolean done() {
-          return eventCount == 1;
-        }
-        public String description() {
-          return "eventCount never became 1";
-        }
-      };
-      DistributedTestCase.waitForCriterion(wc, 10 * 1000, 100, true);
+    eet = region.getEntryExpiryTask(key1);
+    final long secondExpiryTime = eet.getExpirationTime();
+    if ((secondExpiryTime - firstExpiryTime) <= 0) {
+      fail("expiration time should have been greater after changing region config from 500
to 2000. firstExpiryTime=" + firstExpiryTime + " secondExpiryTime=" + secondExpiryTime);
     }
+    
+    // now set back to be more recent
+    mutt = region.getAttributesMutator();
+    ExpirationAttributes expire3 = new ExpirationAttributes(timeout1, ExpirationAction.INVALIDATE);
+    mutt.setEntryIdleTimeout(expire3);
+    eet = region.getEntryExpiryTask(key1);
+    final long thirdExpiryTime = eet.getExpirationTime();
+    assertEquals(firstExpiryTime, thirdExpiryTime);
+    // confirm that it still has not expired
+    assertEquals(0, eventCount);
+    
+    // now set it to a really short time and make sure it expires immediately
+    waitForExpiryClockToChange(region);
+    final Region.Entry entry = region.getEntry(key1);
+    mutt = region.getAttributesMutator();
+    ExpirationAttributes expire4 = new ExpirationAttributes(1, ExpirationAction.INVALIDATE);
+    mutt.setEntryIdleTimeout(expire4);
+    WaitCriterion wc = new WaitCriterion() {
+      public boolean done() {
+        return fetchEntryValue(entry) == null;
+      }
+      public String description() {
+        return "entry never became invalid";
+      }
+    };
+    DistributedTestCase.waitForCriterion(wc, 10 * 1000, 10, true);
+
+    WaitCriterion waitForEventCountToBeOne = new WaitCriterion() {
+      public boolean done() {
+        return eventCount == 1;
+      }
+      public String description() {
+        return "eventCount never became 1";
+      }
+    };
+    DistributedTestCase.waitForCriterion(waitForEventCountToBeOne, 10 * 1000, 10, true);
     eventCount = 0;
   }
 


Mime
View raw message