Return-Path: X-Original-To: apmail-geode-commits-archive@minotaur.apache.org Delivered-To: apmail-geode-commits-archive@minotaur.apache.org Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by minotaur.apache.org (Postfix) with SMTP id C0A8018743 for ; Wed, 22 Jul 2015 00:29:22 +0000 (UTC) Received: (qmail 5790 invoked by uid 500); 22 Jul 2015 00:29:19 -0000 Delivered-To: apmail-geode-commits-archive@geode.apache.org Received: (qmail 5758 invoked by uid 500); 22 Jul 2015 00:29:19 -0000 Mailing-List: contact commits-help@geode.incubator.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: dev@geode.incubator.apache.org Delivered-To: mailing list commits@geode.incubator.apache.org Received: (qmail 5749 invoked by uid 99); 22 Jul 2015 00:29:19 -0000 Received: from Unknown (HELO spamd3-us-west.apache.org) (209.188.14.142) by apache.org (qpsmtpd/0.29) with ESMTP; Wed, 22 Jul 2015 00:29:19 +0000 Received: from localhost (localhost [127.0.0.1]) by spamd3-us-west.apache.org (ASF Mail Server at spamd3-us-west.apache.org) with ESMTP id 3FA7D18B265 for ; Wed, 22 Jul 2015 00:29:19 +0000 (UTC) X-Virus-Scanned: Debian amavisd-new at spamd3-us-west.apache.org X-Spam-Flag: NO X-Spam-Score: 1.771 X-Spam-Level: * X-Spam-Status: No, score=1.771 tagged_above=-999 required=6.31 tests=[KAM_ASCII_DIVIDERS=0.8, KAM_LAZY_DOMAIN_SECURITY=1, RCVD_IN_MSPIKE_H3=-0.01, RCVD_IN_MSPIKE_WL=-0.01, T_RP_MATCHES_RCVD=-0.01, URIBL_BLOCKED=0.001] autolearn=disabled Received: from mx1-us-east.apache.org ([10.40.0.8]) by localhost (spamd3-us-west.apache.org [10.40.0.10]) (amavisd-new, port 10024) with ESMTP id wKDbmt8XwCz6 for ; Wed, 22 Jul 2015 00:29:11 +0000 (UTC) Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by mx1-us-east.apache.org (ASF Mail Server at mx1-us-east.apache.org) with SMTP id 0D9164C0DB for ; Wed, 22 Jul 2015 00:29:10 +0000 (UTC) Received: (qmail 5705 invoked by uid 99); 22 Jul 2015 00:29:10 -0000 Received: from git1-us-west.apache.org (HELO git1-us-west.apache.org) (140.211.11.23) by apache.org (qpsmtpd/0.29) with ESMTP; Wed, 22 Jul 2015 00:29:10 +0000 Received: by git1-us-west.apache.org (ASF Mail Server at git1-us-west.apache.org, from userid 33) id 5950FE08E0; Wed, 22 Jul 2015 00:29:10 +0000 (UTC) Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit From: dschneider@apache.org To: commits@geode.incubator.apache.org Date: Wed, 22 Jul 2015 00:29:11 -0000 Message-Id: <88f19de547ab45f58bf1e95edfe96da0@git.apache.org> In-Reply-To: <220bc299edab41b1bd6fc1442d0c6822@git.apache.org> References: <220bc299edab41b1bd6fc1442d0c6822@git.apache.org> X-Mailer: ASF-Git Admin Mailer Subject: [2/4] incubator-geode git commit: fixed testEntryIdleTimeout3 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 Authored: Tue Jul 21 14:51:10 2015 -0700 Committer: Darrel Schneider 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 new 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; }