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 E0AEA18F57 for ; Thu, 23 Jul 2015 16:19:15 +0000 (UTC) Received: (qmail 35495 invoked by uid 500); 23 Jul 2015 16:19:15 -0000 Delivered-To: apmail-geode-commits-archive@geode.apache.org Received: (qmail 35465 invoked by uid 500); 23 Jul 2015 16:19:15 -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 35456 invoked by uid 99); 23 Jul 2015 16:19:15 -0000 Received: from Unknown (HELO spamd2-us-west.apache.org) (209.188.14.142) by apache.org (qpsmtpd/0.29) with ESMTP; Thu, 23 Jul 2015 16:19:15 +0000 Received: from localhost (localhost [127.0.0.1]) by spamd2-us-west.apache.org (ASF Mail Server at spamd2-us-west.apache.org) with ESMTP id 221931A75EB for ; Thu, 23 Jul 2015 16:19:15 +0000 (UTC) X-Virus-Scanned: Debian amavisd-new at spamd2-us-west.apache.org X-Spam-Flag: NO X-Spam-Score: 1.791 X-Spam-Level: * X-Spam-Status: No, score=1.791 tagged_above=-999 required=6.31 tests=[KAM_ASCII_DIVIDERS=0.8, KAM_LAZY_DOMAIN_SECURITY=1, 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 (spamd2-us-west.apache.org [10.40.0.9]) (amavisd-new, port 10024) with ESMTP id U24VPN68_EaH for ; Thu, 23 Jul 2015 16:18:42 +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 091DF50619 for ; Thu, 23 Jul 2015 16:18:39 +0000 (UTC) Received: (qmail 31132 invoked by uid 99); 23 Jul 2015 16:18:39 -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; Thu, 23 Jul 2015 16:18:39 +0000 Received: by git1-us-west.apache.org (ASF Mail Server at git1-us-west.apache.org, from userid 33) id D4943E6842; Thu, 23 Jul 2015 16:18:38 +0000 (UTC) Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit From: jasonhuynh@apache.org To: commits@geode.incubator.apache.org Date: Thu, 23 Jul 2015 16:19:08 -0000 Message-Id: In-Reply-To: References: X-Mailer: ASF-Git Admin Mailer Subject: [31/37] incubator-geode git commit: GEODE-108: Fix up HAInterestPart*DUnitTests GEODE-108: Fix up HAInterestPart*DUnitTests Reformat, fix timeouts, reduce interval for checking asynchronous criteria. Move tearDown2 up by setUp. Null out static fields during closeCache so other dunit JVMs don't leak Cache/DS instances. Remove sleep call. Add @SuppressWarning and @Override annotations. Use addExpectedExceptions to fix suspect string failures (including the one that Jenkins hit). Fix typos. Add JUnit 4 TestCase for testing these tests together in isolation. Project: http://git-wip-us.apache.org/repos/asf/incubator-geode/repo Commit: http://git-wip-us.apache.org/repos/asf/incubator-geode/commit/a336e81c Tree: http://git-wip-us.apache.org/repos/asf/incubator-geode/tree/a336e81c Diff: http://git-wip-us.apache.org/repos/asf/incubator-geode/diff/a336e81c Branch: refs/heads/feature/GEODE-9 Commit: a336e81c2fe7666f8e866d3d22f58adcd4a01c18 Parents: a1abe19 Author: Kirk Lund Authored: Wed Jul 15 11:11:36 2015 -0700 Committer: Kirk Lund Committed: Fri Jul 17 11:01:06 2015 -0700 ---------------------------------------------------------------------- .../cache/tier/sockets/HAInterestBaseTest.java | 1435 ++++++++---------- .../sockets/HAInterestDistributedTestCase.java | 15 + .../tier/sockets/HAInterestPart1DUnitTest.java | 210 ++- .../tier/sockets/HAInterestPart2DUnitTest.java | 506 +++--- 4 files changed, 981 insertions(+), 1185 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/a336e81c/gemfire-core/src/test/java/com/gemstone/gemfire/internal/cache/tier/sockets/HAInterestBaseTest.java ---------------------------------------------------------------------- diff --git a/gemfire-core/src/test/java/com/gemstone/gemfire/internal/cache/tier/sockets/HAInterestBaseTest.java b/gemfire-core/src/test/java/com/gemstone/gemfire/internal/cache/tier/sockets/HAInterestBaseTest.java index cce74ff..9aafaed 100755 --- a/gemfire-core/src/test/java/com/gemstone/gemfire/internal/cache/tier/sockets/HAInterestBaseTest.java +++ b/gemfire-core/src/test/java/com/gemstone/gemfire/internal/cache/tier/sockets/HAInterestBaseTest.java @@ -35,6 +35,7 @@ import dunit.DistributedTestCase; import dunit.Host; import dunit.VM; +import java.io.IOException; import java.util.ArrayList; import java.util.Iterator; import java.util.List; @@ -43,56 +44,48 @@ import java.util.Set; /** * Tests Interest Registration Functionality - * */ -public class HAInterestBaseTest extends DistributedTestCase -{ - private static int MAX_WAIT = 60000; - protected static Cache cache = null; - protected static PoolImpl pool = null ; - protected static Connection conn = null ; - - protected static int PORT1 ; - protected static int PORT2 ; - protected static int PORT3 ; - +@SuppressWarnings({"deprecation", "rawtypes", "serial", "unchecked"}) +public class HAInterestBaseTest extends DistributedTestCase { + + protected static final int TIMEOUT_MILLIS = 60 * 1000; + protected static final int INTERVAL_MILLIS = 10; + + protected static final String REGION_NAME = "HAInterestBaseTest_region"; + protected static final String k1 = "k1"; protected static final String k2 = "k2"; - protected static final String client_k1 = "client-k1"; protected static final String client_k2 = "client-k2"; - protected static final String server_k1 = "server-k1"; protected static final String server_k2 = "server-k2"; - protected static final String server_k1_updated = "server_k1_updated"; - // To verify the beforeInterestRegistration is called or not - protected static boolean isBeforeRegistrationCallbackCalled = false; + protected static Cache cache = null; + protected static PoolImpl pool = null; + protected static Connection conn = null; - // To verify the beforeInterestRecoeryCallbackCalled is called or not - protected static boolean isBeforeInterestRecoveryCallbackCalled = false; + protected static int PORT1; + protected static int PORT2; + protected static int PORT3; - //To verify the afterInterestRegistration is called or not + protected static boolean isBeforeRegistrationCallbackCalled = false; + protected static boolean isBeforeInterestRecoveryCallbackCalled = false; protected static boolean isAfterRegistrationCallbackCalled = false; - - protected static final String REGION_NAME = "HAInterestBaseTest_region"; - - protected static Host host = null ; - + protected static Host host = null; protected static VM server1 = null; protected static VM server2 = null; protected static VM server3 = null; + protected volatile static boolean exceptionOccured = false; - /** constructor */ public HAInterestBaseTest(String name) { super(name); } - public void setUp() throws Exception - { + @Override + public void setUp() throws Exception { super.setUp(); host = Host.getHost(0); server1 = host.getVM(0); @@ -100,16 +93,45 @@ public class HAInterestBaseTest extends DistributedTestCase server3 = host.getVM(2); CacheServerTestUtil.disableShufflingOfEndpoints(); // start servers first - PORT1 = ((Integer) server1.invoke(HAInterestBaseTest.class, "createServerCache")).intValue(); - PORT2 = ((Integer) server2.invoke(HAInterestBaseTest.class, "createServerCache")).intValue(); - PORT3 = ((Integer) server3.invoke(HAInterestBaseTest.class, "createServerCache")).intValue(); + PORT1 = ((Integer) server1.invoke(HAInterestBaseTest.class, "createServerCache")).intValue(); + PORT2 = ((Integer) server2.invoke(HAInterestBaseTest.class, "createServerCache")).intValue(); + PORT3 = ((Integer) server3.invoke(HAInterestBaseTest.class, "createServerCache")).intValue(); exceptionOccured = false; - + addExpectedException("java.net.ConnectException: Connection refused: connect"); } + @Override + public void tearDown2() throws Exception { + // close the clients first + closeCache(); + + // then close the servers + server1.invoke(HAInterestBaseTest.class, "closeCache"); + server2.invoke(HAInterestBaseTest.class, "closeCache"); + server3.invoke(HAInterestBaseTest.class, "closeCache"); + CacheServerTestUtil.resetDisableShufflingOfEndpointsFlag(); + } + public static void closeCache() { + PoolImpl.AFTER_REGISTER_CALLBACK_FLAG = false; + PoolImpl.BEFORE_PRIMARY_IDENTIFICATION_FROM_BACKUP_CALLBACK_FLAG = false; + PoolImpl.BEFORE_RECOVER_INTEREST_CALLBACK_FLAG = false; + PoolImpl.BEFORE_REGISTER_CALLBACK_FLAG = false; + HAInterestBaseTest.isAfterRegistrationCallbackCalled = false; + HAInterestBaseTest.isBeforeInterestRecoveryCallbackCalled = false; + HAInterestBaseTest.isBeforeRegistrationCallbackCalled = false; + if (cache != null && !cache.isClosed()) { + cache.close(); + cache.getDistributedSystem().disconnect(); + } + cache = null; + pool = null; + conn = null; + } + /** * Return the current primary waiting for a primary to exist. + * * @since 5.7 */ public static VM getPrimaryVM() { @@ -117,13 +139,14 @@ public class HAInterestBaseTest extends DistributedTestCase } /** - * Return the current primary waiting for a primary to exist and for it - * not to be the oldPrimary (if oldPrimary is NOT null). + * Return the current primary waiting for a primary to exist and for it not to + * be the oldPrimary (if oldPrimary is NOT null). + * * @since 5.7 */ public static VM getPrimaryVM(final VM oldPrimary) { WaitCriterion wc = new WaitCriterion() { - String excuse; + @Override public boolean done() { int primaryPort = pool.getPrimaryPort(); if (primaryPort == -1) { @@ -136,22 +159,24 @@ public class HAInterestBaseTest extends DistributedTestCase } return false; } + @Override public String description() { - return excuse; + return "waiting for primary"; } }; - DistributedTestCase.waitForCriterion(wc, MAX_WAIT, 1000, true); - + DistributedTestCase.waitForCriterion(wc, TIMEOUT_MILLIS, INTERVAL_MILLIS, true); + int primaryPort = pool.getPrimaryPort(); assertTrue(primaryPort != -1); VM currentPrimary = getServerVM(primaryPort); assertTrue(currentPrimary != oldPrimary); return currentPrimary; } - + public static VM getBackupVM() { return getBackupVM(null); } + public static VM getBackupVM(VM stoppedBackup) { VM currentPrimary = getPrimaryVM(null); if (currentPrimary != server2 && server2 != stoppedBackup) { @@ -161,16 +186,14 @@ public class HAInterestBaseTest extends DistributedTestCase } else if (currentPrimary != server1 && server1 != stoppedBackup) { return server1; } else { - fail("expected currentPrimary " + currentPrimary + " to be " - + server1 + ", or " - + server2 + ", or " - + server3); + fail("expected currentPrimary " + currentPrimary + " to be " + server1 + ", or " + server2 + ", or " + server3); return null; } } /** * Given a server vm (server1, server2, or server3) return its port. + * * @since 5.7 */ public static int getServerPort(VM vm) { @@ -181,17 +204,14 @@ public class HAInterestBaseTest extends DistributedTestCase } else if (vm == server3) { return PORT3; } else { - fail("expected vm " + vm + " to be " - + server1 - + ", or " - + server2 - + ", or " - + server3); + fail("expected vm " + vm + " to be " + server1 + ", or " + server2 + ", or " + server3); return -1; } } + /** * Given a server port (PORT1, PORT2, or PORT3) return its vm. + * * @since 5.7 */ public static VM getServerVM(int port) { @@ -202,833 +222,650 @@ public class HAInterestBaseTest extends DistributedTestCase } else if (port == PORT3) { return server3; } else { - fail("expected port " + port + " to be " - + PORT1 - + ", or " - + PORT2 - + ", or " - + PORT3); + fail("expected port " + port + " to be " + PORT1 + ", or " + PORT2 + ", or " + PORT3); return null; } } - - public static void verifyRefreshedEntriesFromServer() - { + + public static void verifyRefreshedEntriesFromServer() { final Region r1 = cache.getRegion(Region.SEPARATOR + REGION_NAME); assertNotNull(r1); - + WaitCriterion wc = new WaitCriterion() { - String excuse; + @Override public boolean done() { Region.Entry re = r1.getEntry(k1); - if (re == null) return false; + if (re == null) + return false; Object val = re.getValue(); return client_k1.equals(val); } + @Override public String description() { - return excuse; + return "waiting for client_k1 refresh from server"; } }; - DistributedTestCase.waitForCriterion(wc, MAX_WAIT, 1000, true); + DistributedTestCase.waitForCriterion(wc, TIMEOUT_MILLIS, INTERVAL_MILLIS, true); wc = new WaitCriterion() { - String excuse; + @Override public boolean done() { Region.Entry re = r1.getEntry(k2); - if (re == null) return false; + if (re == null) + return false; Object val = re.getValue(); return client_k2.equals(val); } + @Override public String description() { - return excuse; + return "waiting for client_k2 refresh from server"; } }; - DistributedTestCase.waitForCriterion(wc, MAX_WAIT, 1000, true); - - // assertEquals(client_k1, r1.getEntry(k1).getValue()); - // assertEquals(client_k2 ,r1.getEntry(k2).getValue()); + DistributedTestCase.waitForCriterion(wc, TIMEOUT_MILLIS, INTERVAL_MILLIS, true); } - public static void verifyDeadAndLiveServers(final int expectedDeadServers, - final int expectedLiveServers) -{ - WaitCriterion wc = new WaitCriterion() { - String description; - public boolean done() { - return pool.getConnectedServerCount() == expectedLiveServers; - } - public String description() { - return description; - } - }; - DistributedTestCase.waitForCriterion(wc, MAX_WAIT, 1000, true); - -// while (proxy.getDeadServers().size() != expectedDeadServers) { // wait until condition is met -// assertTrue("Waited over " + maxWaitTime + "for dead servers to become : " + expectedDeadServers + " This issue can occur on Solaris as DSM thread get stuck in connectForServer() call, and hence not recovering any newly started server This may be beacuase of tcp_ip_abort_cinterval kernal level property on solaris which has 3 minutes as a default value", -// (System.currentTimeMillis() - start) < maxWaitTime); -// try { -// Thread.yield(); -// synchronized(delayLock) {delayLock.wait(2000);} -// } -// catch (InterruptedException ie) { -// fail("Interrupted while waiting ", ie); -// } -// } -// start = System.currentTimeMillis(); -} + public static void verifyDeadAndLiveServers(final int expectedDeadServers, final int expectedLiveServers) { + WaitCriterion wc = new WaitCriterion() { + @Override + public boolean done() { + return pool.getConnectedServerCount() == expectedLiveServers; + } + @Override + public String description() { + return "waiting for pool.getConnectedServerCount() == expectedLiveServer"; + } + }; + DistributedTestCase.waitForCriterion(wc, TIMEOUT_MILLIS, INTERVAL_MILLIS, true); + } - public static void putK1andK2() - { + public static void putK1andK2() { Region r1 = cache.getRegion(Region.SEPARATOR + REGION_NAME); assertNotNull(r1); - try { - r1.put(k1, server_k1); - r1.put(k2, server_k2); - } - catch (Exception e) { - fail("Test failed due to Exception in putK1andK2 ::" + e); - } + r1.put(k1, server_k1); + r1.put(k2, server_k2); } - public static void setBridgeObserverForBeforeInterestRecoveryFailure() - { - PoolImpl.BEFORE_RECOVER_INTEREST_CALLBACK_FLAG = true; - BridgeObserverHolder.setInstance(new BridgeObserverAdapter() { - public void beforeInterestRecovery() - { - synchronized (HAInterestBaseTest.class) { - Thread t = new Thread (){ - public void run(){ - getBackupVM().invoke(HAInterestBaseTest.class, "startServer"); - getPrimaryVM().invoke(HAInterestBaseTest.class, "stopServer"); - } - }; - t.start(); - try { - DistributedTestCase.join(t, 30 * 1000, getLogWriter()); - }catch(Exception ignore) { - exceptionOccured= true; - } - HAInterestBaseTest.isBeforeInterestRecoveryCallbackCalled = true; - HAInterestBaseTest.class.notify(); - PoolImpl.BEFORE_RECOVER_INTEREST_CALLBACK_FLAG = false; - } - } - }); - } - - - public static void setBridgeObserverForBeforeInterestRecovery() - { - PoolImpl.BEFORE_RECOVER_INTEREST_CALLBACK_FLAG = true; - BridgeObserverHolder.setInstance(new BridgeObserverAdapter() { - public void beforeInterestRecovery() - { - synchronized (HAInterestBaseTest.class) { - Thread t = new Thread (){ - public void run(){ - Region r1 = cache.getRegion(Region.SEPARATOR + REGION_NAME); - assertNotNull(r1); - try { - r1.put(k1, server_k1_updated); - } catch (Exception e) { - e.printStackTrace(); - fail("Test Failed due to ..."+e); + public static void setBridgeObserverForBeforeInterestRecoveryFailure() { + PoolImpl.BEFORE_RECOVER_INTEREST_CALLBACK_FLAG = true; + BridgeObserverHolder.setInstance(new BridgeObserverAdapter() { + public void beforeInterestRecovery() { + synchronized (HAInterestBaseTest.class) { + Thread t = new Thread() { + public void run() { + getBackupVM().invoke(HAInterestBaseTest.class, "startServer"); + getPrimaryVM().invoke(HAInterestBaseTest.class, "stopServer"); } - } - }; - t.start(); - - HAInterestBaseTest.isBeforeInterestRecoveryCallbackCalled = true; - HAInterestBaseTest.class.notify(); - PoolImpl.BEFORE_RECOVER_INTEREST_CALLBACK_FLAG = false; - } - } - }); - } - - public static void waitForBeforeInterestRecoveryCallBack() - { - - assertNotNull(cache); - synchronized (HAInterestBaseTest.class) { - while (!isBeforeInterestRecoveryCallbackCalled) { - try { - HAInterestBaseTest.class.wait(); - } - catch (InterruptedException e) { - fail("Test failed due to InterruptedException in waitForBeforeInterstRecovery()"); - } - } - } - - } - -public static void setBridgeObserverForBeforeRegistration(final VM vm) -{ - PoolImpl.BEFORE_REGISTER_CALLBACK_FLAG = true; - BridgeObserverHolder.setInstance(new BridgeObserverAdapter() { - public void beforeInterestRegistration() - { - synchronized (HAInterestBaseTest.class) { - vm.invoke(HAInterestBaseTest.class, "startServer"); - HAInterestBaseTest.isBeforeRegistrationCallbackCalled = true; - HAInterestBaseTest.class.notify(); - PoolImpl.BEFORE_REGISTER_CALLBACK_FLAG = false; + }; + t.start(); + try { + DistributedTestCase.join(t, 30 * 1000, getLogWriter()); + } catch (Exception ignore) { + exceptionOccured = true; + } + HAInterestBaseTest.isBeforeInterestRecoveryCallbackCalled = true; + HAInterestBaseTest.class.notify(); + PoolImpl.BEFORE_RECOVER_INTEREST_CALLBACK_FLAG = false; + } } - } - }); -} + }); + } -public static void waitForBeforeRegistrationCallback() -{ + public static void setBridgeObserverForBeforeInterestRecovery() { + PoolImpl.BEFORE_RECOVER_INTEREST_CALLBACK_FLAG = true; + BridgeObserverHolder.setInstance(new BridgeObserverAdapter() { + public void beforeInterestRecovery() { + synchronized (HAInterestBaseTest.class) { + Thread t = new Thread() { + public void run() { + Region r1 = cache.getRegion(Region.SEPARATOR + REGION_NAME); + assertNotNull(r1); + r1.put(k1, server_k1_updated); + } + }; + t.start(); - assertNotNull(cache); - synchronized (HAInterestBaseTest.class) { - while (!isBeforeRegistrationCallbackCalled) { - try { - HAInterestBaseTest.class.wait(); - } - catch (InterruptedException e) { - fail("Test failed due to InterruptedException in waitForBeforeRegistrationCallback()"); + HAInterestBaseTest.isBeforeInterestRecoveryCallbackCalled = true; + HAInterestBaseTest.class.notify(); + PoolImpl.BEFORE_RECOVER_INTEREST_CALLBACK_FLAG = false; + } } - } + }); } -} -public static void setBridgeObserverForAfterRegistration(final VM vm) -{ - PoolImpl.AFTER_REGISTER_CALLBACK_FLAG = true; - BridgeObserverHolder.setInstance(new BridgeObserverAdapter() { - public void afterInterestRegistration() - { - synchronized (HAInterestBaseTest.class) { - vm.invoke(HAInterestBaseTest.class, "startServer"); - HAInterestBaseTest.isAfterRegistrationCallbackCalled = true; - HAInterestBaseTest.class.notify(); - PoolImpl.AFTER_REGISTER_CALLBACK_FLAG = false; + public static void waitForBeforeInterestRecoveryCallBack() throws InterruptedException { + assertNotNull(cache); + synchronized (HAInterestBaseTest.class) { + while (!isBeforeInterestRecoveryCallbackCalled) { + HAInterestBaseTest.class.wait(); } } - }); -} - -public static void waitForAfterRegistrationCallback() -{ + } - assertNotNull(cache); - if (!isAfterRegistrationCallbackCalled) { - synchronized (HAInterestBaseTest.class) { - while (!isAfterRegistrationCallbackCalled) { - try { - HAInterestBaseTest.class.wait(); - } - catch (InterruptedException e) { - fail("Test failed due to InterruptedException in waitForAfterRegistrationCallback()"); + public static void setBridgeObserverForBeforeRegistration(final VM vm) { + PoolImpl.BEFORE_REGISTER_CALLBACK_FLAG = true; + BridgeObserverHolder.setInstance(new BridgeObserverAdapter() { + public void beforeInterestRegistration() { + synchronized (HAInterestBaseTest.class) { + vm.invoke(HAInterestBaseTest.class, "startServer"); + HAInterestBaseTest.isBeforeRegistrationCallbackCalled = true; + HAInterestBaseTest.class.notify(); + PoolImpl.BEFORE_REGISTER_CALLBACK_FLAG = false; } } - } + }); } -} - - - - public static void unSetBridgeObserverForRegistrationCallback() -{ - synchronized (HAInterestBaseTest.class) { - PoolImpl.BEFORE_REGISTER_CALLBACK_FLAG = false; - PoolImpl.AFTER_REGISTER_CALLBACK_FLAG = false ; - HAInterestBaseTest.isBeforeRegistrationCallbackCalled = false; - HAInterestBaseTest.isAfterRegistrationCallbackCalled = false ; + public static void waitForBeforeRegistrationCallback() throws InterruptedException { + assertNotNull(cache); + synchronized (HAInterestBaseTest.class) { + while (!isBeforeRegistrationCallbackCalled) { + HAInterestBaseTest.class.wait(); + } + } } -} - public static void verifyDispatcherIsAlive() - { - try { - assertEquals("More than one BridgeServer", 1, cache.getBridgeServers() - .size()); - WaitCriterion wc = new WaitCriterion() { - String excuse; - public boolean done() { - return cache.getBridgeServers().size() == 1; - } - public String description() { - return excuse; - } - }; - DistributedTestCase.waitForCriterion(wc, MAX_WAIT, 1000, true); - - BridgeServerImpl bs = (BridgeServerImpl)cache.getBridgeServers() - .iterator().next(); - assertNotNull(bs); - assertNotNull(bs.getAcceptor()); - assertNotNull(bs.getAcceptor().getCacheClientNotifier()); - final CacheClientNotifier ccn = bs.getAcceptor().getCacheClientNotifier(); - - wc = new WaitCriterion() { - String excuse; - public boolean done() { - return ccn.getClientProxies().size() > 0; - } - public String description() { - return excuse; - } - }; - DistributedTestCase.waitForCriterion(wc, MAX_WAIT, 1000, true); - - wc = new WaitCriterion() { - String excuse; - Iterator iter_prox; - CacheClientProxy proxy; - public boolean done() { - iter_prox = ccn.getClientProxies().iterator(); - if(iter_prox.hasNext()) { - proxy = (CacheClientProxy)iter_prox.next(); - return proxy._messageDispatcher.isAlive(); - } - else { - return false; - } + public static void setBridgeObserverForAfterRegistration(final VM vm) { + PoolImpl.AFTER_REGISTER_CALLBACK_FLAG = true; + BridgeObserverHolder.setInstance(new BridgeObserverAdapter() { + public void afterInterestRegistration() { + synchronized (HAInterestBaseTest.class) { + vm.invoke(HAInterestBaseTest.class, "startServer"); + HAInterestBaseTest.isAfterRegistrationCallbackCalled = true; + HAInterestBaseTest.class.notify(); + PoolImpl.AFTER_REGISTER_CALLBACK_FLAG = false; } - public String description() { - return excuse; - } - }; - DistributedTestCase.waitForCriterion(wc, MAX_WAIT, 1000, true); - } - catch (Exception ex) { - fail("while setting verifyDispatcherIsAlive " + ex); - } + } + }); } - public static void verifyDispatcherIsNotAlive() - { - try { - WaitCriterion wc = new WaitCriterion() { - String excuse; - public boolean done() { - return cache.getBridgeServers().size() == 1; - } - public String description() { - return excuse; - } - }; - DistributedTestCase.waitForCriterion(wc, MAX_WAIT, 1000, true); - - BridgeServerImpl bs = (BridgeServerImpl)cache.getBridgeServers() - .iterator().next(); - assertNotNull(bs); - assertNotNull(bs.getAcceptor()); - assertNotNull(bs.getAcceptor().getCacheClientNotifier()); - final CacheClientNotifier ccn = bs.getAcceptor().getCacheClientNotifier(); - wc = new WaitCriterion() { - String excuse; - public boolean done() { - return ccn.getClientProxies().size() > 0; - } - public String description() { - return excuse; + public static void waitForAfterRegistrationCallback() throws InterruptedException { + assertNotNull(cache); + if (!isAfterRegistrationCallbackCalled) { + synchronized (HAInterestBaseTest.class) { + while (!isAfterRegistrationCallbackCalled) { + HAInterestBaseTest.class.wait(); } - }; - DistributedTestCase.waitForCriterion(wc, MAX_WAIT, 1000, true); - - Iterator iter_prox = ccn.getClientProxies().iterator(); - if (iter_prox.hasNext()) { - CacheClientProxy proxy = (CacheClientProxy)iter_prox.next(); - assertFalse("Dispatcher on secondary should not be alive", - proxy._messageDispatcher.isAlive()); } - - } - catch (Exception ex) { - fail("while setting verifyDispatcherIsNotAlive " + ex); } } + public static void unSetBridgeObserverForRegistrationCallback() { + synchronized (HAInterestBaseTest.class) { + PoolImpl.BEFORE_REGISTER_CALLBACK_FLAG = false; + PoolImpl.AFTER_REGISTER_CALLBACK_FLAG = false; + HAInterestBaseTest.isBeforeRegistrationCallbackCalled = false; + HAInterestBaseTest.isAfterRegistrationCallbackCalled = false; + } + } - public static void createEntriesK1andK2OnServer() - { - try { - Region r1 = cache.getRegion(Region.SEPARATOR+ REGION_NAME); - assertNotNull(r1); - if (!r1.containsKey(k1)) { - r1.create(k1, server_k1); - } - if (!r1.containsKey(k2)) { - r1.create(k2, server_k2); - } - assertEquals(r1.getEntry(k1).getValue(), server_k1); - assertEquals(r1.getEntry(k2).getValue(), server_k2); + public static void verifyDispatcherIsAlive() { + assertEquals("More than one BridgeServer", 1, cache.getBridgeServers().size()); + + WaitCriterion wc = new WaitCriterion() { + @Override + public boolean done() { + return cache.getBridgeServers().size() == 1; } - catch (Exception ex) { - fail("failed while createEntries()", ex); + @Override + public String description() { + return "waiting for cache.getBridgeServers().size() == 1"; } - } + }; + DistributedTestCase.waitForCriterion(wc, TIMEOUT_MILLIS, INTERVAL_MILLIS, true); - public static void createEntriesK1andK2() - { - try { - Region r1 = cache.getRegion(Region.SEPARATOR+ REGION_NAME); - assertNotNull(r1); - if (!r1.containsKey(k1)) { - r1.create(k1, client_k1); - } - if (!r1.containsKey(k2)) { - r1.create(k2, client_k2); - } - assertEquals(r1.getEntry(k1).getValue(), client_k1); - assertEquals(r1.getEntry(k2).getValue(), client_k2); + BridgeServerImpl bs = (BridgeServerImpl) cache.getBridgeServers().iterator().next(); + assertNotNull(bs); + assertNotNull(bs.getAcceptor()); + assertNotNull(bs.getAcceptor().getCacheClientNotifier()); + final CacheClientNotifier ccn = bs.getAcceptor().getCacheClientNotifier(); + + wc = new WaitCriterion() { + @Override + public boolean done() { + return ccn.getClientProxies().size() > 0; } - catch (Exception ex) { - fail("failed while createEntries()", ex); + @Override + public String description() { + return "waiting for ccn.getClientProxies().size() > 0"; } - } + }; + DistributedTestCase.waitForCriterion(wc, TIMEOUT_MILLIS, INTERVAL_MILLIS, true); - public static void createServerEntriesK1andK2() - { - try { - Region r1 = cache.getRegion(Region.SEPARATOR+ REGION_NAME); - assertNotNull(r1); - if (!r1.containsKey(k1)) { - r1.create(k1, server_k1); - } - if (!r1.containsKey(k2)) { - r1.create(k2, server_k2); + wc = new WaitCriterion() { + Iterator iter_prox; + CacheClientProxy proxy; + + @Override + public boolean done() { + iter_prox = ccn.getClientProxies().iterator(); + if (iter_prox.hasNext()) { + proxy = (CacheClientProxy) iter_prox.next(); + return proxy._messageDispatcher.isAlive(); + } else { + return false; } - assertEquals(r1.getEntry(k1).getValue(), server_k1); - assertEquals(r1.getEntry(k2).getValue(), server_k2); } - catch (Exception ex) { - fail("failed while createEntries()", ex); + + @Override + public String description() { + return "waiting for CacheClientProxy _messageDispatcher to be alive"; } - } + }; + DistributedTestCase.waitForCriterion(wc, TIMEOUT_MILLIS, INTERVAL_MILLIS, true); + } - public static void registerK1AndK2() - { - try { - Region r = cache.getRegion(Region.SEPARATOR+REGION_NAME); - assertNotNull(r); - List list = new ArrayList(); - list.add(k1); - list.add(k2); - r.registerInterest(list, InterestResultPolicy.KEYS_VALUES); + public static void verifyDispatcherIsNotAlive() { + WaitCriterion wc = new WaitCriterion() { + @Override + public boolean done() { + return cache.getBridgeServers().size() == 1; } - catch (Exception ex) { - ex.printStackTrace(); - fail("failed while region.registerK1AndK2()", ex); + @Override + public String description() { + return "cache.getBridgeServers().size() == 1"; } - } - - public static void reRegisterK1AndK2() - { - try { - Region r = cache.getRegion(Region.SEPARATOR+REGION_NAME); - assertNotNull(r); - List list = new ArrayList(); - list.add(k1); - list.add(k2); - r.registerInterest(list); + }; + DistributedTestCase.waitForCriterion(wc, TIMEOUT_MILLIS, INTERVAL_MILLIS, true); + BridgeServerImpl bs = (BridgeServerImpl) cache.getBridgeServers().iterator().next(); + assertNotNull(bs); + assertNotNull(bs.getAcceptor()); + assertNotNull(bs.getAcceptor().getCacheClientNotifier()); + final CacheClientNotifier ccn = bs.getAcceptor().getCacheClientNotifier(); + + wc = new WaitCriterion() { + @Override + public boolean done() { + return ccn.getClientProxies().size() > 0; } - catch (Exception ex) { - fail("failed while region.reRegisterK1AndK2()", ex); + @Override + public String description() { + return "waiting for ccn.getClientProxies().size() > 0"; } + }; + DistributedTestCase.waitForCriterion(wc, TIMEOUT_MILLIS, INTERVAL_MILLIS, true); + + Iterator iter_prox = ccn.getClientProxies().iterator(); + if (iter_prox.hasNext()) { + CacheClientProxy proxy = (CacheClientProxy) iter_prox.next(); + assertFalse("Dispatcher on secondary should not be alive", proxy._messageDispatcher.isAlive()); } + } - public static void startServer() - { - try { - Cache c = CacheFactory.getAnyInstance(); - assertEquals("More than one BridgeServer", 1, c.getBridgeServers().size()); - BridgeServerImpl bs = (BridgeServerImpl) c.getBridgeServers().iterator().next(); - assertNotNull(bs); - bs.start(); + public static void createEntriesK1andK2OnServer() { + Region r1 = cache.getRegion(Region.SEPARATOR + REGION_NAME); + assertNotNull(r1); + if (!r1.containsKey(k1)) { + r1.create(k1, server_k1); } - catch (Exception ex) { - fail("while startServer() " + ex); - } + if (!r1.containsKey(k2)) { + r1.create(k2, server_k2); } + assertEquals(r1.getEntry(k1).getValue(), server_k1); + assertEquals(r1.getEntry(k2).getValue(), server_k2); + } - public static void startServerAndPause() - { - try { - Cache c = CacheFactory.getAnyInstance(); - assertEquals("More than one BridgeServer", 1, c.getBridgeServers().size()); - BridgeServerImpl bs = (BridgeServerImpl) c.getBridgeServers().iterator().next(); - assertNotNull(bs); - bs.start(); - Thread.sleep(10000); + public static void createEntriesK1andK2() { + Region r1 = cache.getRegion(Region.SEPARATOR + REGION_NAME); + assertNotNull(r1); + if (!r1.containsKey(k1)) { + r1.create(k1, client_k1); } - catch (Exception ex) { - fail("while startServer() " + ex); - } + if (!r1.containsKey(k2)) { + r1.create(k2, client_k2); } + assertEquals(r1.getEntry(k1).getValue(), client_k1); + assertEquals(r1.getEntry(k2).getValue(), client_k2); + } - - public static void stopServer() - { - try { - assertEquals("More than one BridgeServer", 1, cache.getBridgeServers().size()); - BridgeServerImpl bs = (BridgeServerImpl) cache.getBridgeServers().iterator().next(); - assertNotNull(bs); - bs.stop(); + public static void createServerEntriesK1andK2() { + Region r1 = cache.getRegion(Region.SEPARATOR + REGION_NAME); + assertNotNull(r1); + if (!r1.containsKey(k1)) { + r1.create(k1, server_k1); } - catch (Exception ex) { - fail("while setting stopServer " + ex); - } + if (!r1.containsKey(k2)) { + r1.create(k2, server_k2); } + assertEquals(r1.getEntry(k1).getValue(), server_k1); + assertEquals(r1.getEntry(k2).getValue(), server_k2); + } + public static void registerK1AndK2() { + Region r = cache.getRegion(Region.SEPARATOR + REGION_NAME); + assertNotNull(r); + List list = new ArrayList(); + list.add(k1); + list.add(k2); + r.registerInterest(list, InterestResultPolicy.KEYS_VALUES); + } - public static void stopPrimaryAndRegisterK1AndK2AndVerifyResponse() - { - try { - LocalRegion r = (LocalRegion)cache.getRegion(Region.SEPARATOR+REGION_NAME); - assertNotNull(r); - ServerRegionProxy srp = new ServerRegionProxy(r); + public static void reRegisterK1AndK2() { + Region r = cache.getRegion(Region.SEPARATOR + REGION_NAME); + assertNotNull(r); + List list = new ArrayList(); + list.add(k1); + list.add(k2); + r.registerInterest(list); + } - WaitCriterion wc = new WaitCriterion() { - public boolean done() { - return pool.getConnectedServerCount() == 3; - } - public String description() { - return "connected server count never became 3"; - } - }; - DistributedTestCase.waitForCriterion(wc, 30 * 1000, 1000, true); - - // close primaryEP - getPrimaryVM().invoke(HAInterestBaseTest.class, "stopServer"); - List list = new ArrayList(); - list.add(k1); - list.add(k2); - List serverKeys = srp.registerInterest(list, InterestType.KEY, - InterestResultPolicy.KEYS, false, - r.getAttributes().getDataPolicy().ordinal); - assertNotNull(serverKeys); - List resultKeys =(List) serverKeys.get(0) ; - assertEquals(2,resultKeys.size()); - assertTrue(resultKeys.contains(k1)); - assertTrue(resultKeys.contains(k2)); + public static void startServer() throws IOException { + Cache c = CacheFactory.getAnyInstance(); + assertEquals("More than one BridgeServer", 1, c.getBridgeServers().size()); + BridgeServerImpl bs = (BridgeServerImpl) c.getBridgeServers().iterator().next(); + assertNotNull(bs); + bs.start(); + } + + public static void stopServer() { + assertEquals("More than one BridgeServer", 1, cache.getBridgeServers().size()); + BridgeServerImpl bs = (BridgeServerImpl) cache.getBridgeServers().iterator().next(); + assertNotNull(bs); + bs.stop(); + } + public static void stopPrimaryAndRegisterK1AndK2AndVerifyResponse() { + LocalRegion r = (LocalRegion) cache.getRegion(Region.SEPARATOR + REGION_NAME); + assertNotNull(r); + ServerRegionProxy srp = new ServerRegionProxy(r); + + WaitCriterion wc = new WaitCriterion() { + @Override + public boolean done() { + return pool.getConnectedServerCount() == 3; } - catch (Exception ex) { - fail("failed while region.stopPrimaryAndRegisterK1AndK2AndVerifyResponse()", ex); + @Override + public String description() { + return "connected server count never became 3"; } - } + }; + DistributedTestCase.waitForCriterion(wc, TIMEOUT_MILLIS, INTERVAL_MILLIS, true); + + // close primaryEP + getPrimaryVM().invoke(HAInterestBaseTest.class, "stopServer"); + List list = new ArrayList(); + list.add(k1); + list.add(k2); + List serverKeys = srp.registerInterest(list, InterestType.KEY, InterestResultPolicy.KEYS, false, r.getAttributes().getDataPolicy().ordinal); + assertNotNull(serverKeys); + List resultKeys = (List) serverKeys.get(0); + assertEquals(2, resultKeys.size()); + assertTrue(resultKeys.contains(k1)); + assertTrue(resultKeys.contains(k2)); + } - public static void stopPrimaryAndUnregisterRegisterK1() - { - try { - LocalRegion r = (LocalRegion)cache.getRegion(Region.SEPARATOR+REGION_NAME); - assertNotNull(r); - ServerRegionProxy srp = new ServerRegionProxy(r); + public static void stopPrimaryAndUnregisterRegisterK1() { + LocalRegion r = (LocalRegion) cache.getRegion(Region.SEPARATOR + REGION_NAME); + assertNotNull(r); + ServerRegionProxy srp = new ServerRegionProxy(r); - WaitCriterion wc = new WaitCriterion() { - public boolean done() { - return pool.getConnectedServerCount() == 3; - } - public String description() { - return "connected server count never became 3"; - } - }; - DistributedTestCase.waitForCriterion(wc, 30 * 1000, 1000, true); - - // close primaryEP - getPrimaryVM().invoke(HAInterestBaseTest.class, "stopServer"); - List list = new ArrayList(); - list.add(k1); - srp.unregisterInterest(list, InterestType.KEY,false,false); + WaitCriterion wc = new WaitCriterion() { + @Override + public boolean done() { + return pool.getConnectedServerCount() == 3; } - catch (Exception ex) { - fail("failed while region.stopPrimaryAndUnregisterRegisterK1()", ex); + @Override + public String description() { + return "connected server count never became 3"; } - } + }; + DistributedTestCase.waitForCriterion(wc, TIMEOUT_MILLIS, INTERVAL_MILLIS, true); - public static void stopBothPrimaryAndSecondaryAndRegisterK1AndK2AndVerifyResponse() - { - try { - LocalRegion r = (LocalRegion)cache.getRegion(Region.SEPARATOR+REGION_NAME); - assertNotNull(r); - ServerRegionProxy srp = new ServerRegionProxy(r); + // close primaryEP + getPrimaryVM().invoke(HAInterestBaseTest.class, "stopServer"); + List list = new ArrayList(); + list.add(k1); + srp.unregisterInterest(list, InterestType.KEY, false, false); + } - WaitCriterion wc = new WaitCriterion() { - public boolean done() { - return pool.getConnectedServerCount() == 3; - } - public String description() { - return "connected server count never became 3"; - } - }; - DistributedTestCase.waitForCriterion(wc, 30 * 1000, 1000, true); - - // close primaryEP - VM backup = getBackupVM(); - getPrimaryVM().invoke(HAInterestBaseTest.class, "stopServer"); - //close secondary - backup.invoke(HAInterestBaseTest.class, "stopServer"); - List list = new ArrayList(); - list.add(k1); - list.add(k2); - List serverKeys = srp.registerInterest(list, InterestType.KEY, - InterestResultPolicy.KEYS, false, - r.getAttributes().getDataPolicy().ordinal); - - assertNotNull(serverKeys); - List resultKeys =(List) serverKeys.get(0) ; - assertEquals(2,resultKeys.size()); - assertTrue(resultKeys.contains(k1)); - assertTrue(resultKeys.contains(k2)); - } - catch (Exception ex) { - fail("failed while region.stopBothPrimaryAndSecondaryAndRegisterK1AndK2AndVerifyResponse()", ex); + public static void stopBothPrimaryAndSecondaryAndRegisterK1AndK2AndVerifyResponse() { + LocalRegion r = (LocalRegion) cache.getRegion(Region.SEPARATOR + REGION_NAME); + assertNotNull(r); + ServerRegionProxy srp = new ServerRegionProxy(r); + + WaitCriterion wc = new WaitCriterion() { + @Override + public boolean done() { + return pool.getConnectedServerCount() == 3; } - } + @Override + public String description() { + return "connected server count never became 3"; + } + }; + DistributedTestCase.waitForCriterion(wc, TIMEOUT_MILLIS, INTERVAL_MILLIS, true); + + // close primaryEP + VM backup = getBackupVM(); + getPrimaryVM().invoke(HAInterestBaseTest.class, "stopServer"); + // close secondary + backup.invoke(HAInterestBaseTest.class, "stopServer"); + List list = new ArrayList(); + list.add(k1); + list.add(k2); + List serverKeys = srp.registerInterest(list, InterestType.KEY, InterestResultPolicy.KEYS, false, r.getAttributes().getDataPolicy().ordinal); + + assertNotNull(serverKeys); + List resultKeys = (List) serverKeys.get(0); + assertEquals(2, resultKeys.size()); + assertTrue(resultKeys.contains(k1)); + assertTrue(resultKeys.contains(k2)); + } + /** * returns the secondary that was stopped */ - public static VM stopSecondaryAndRegisterK1AndK2AndVerifyResponse() - { - try { - LocalRegion r = (LocalRegion)cache.getRegion(Region.SEPARATOR+REGION_NAME); - assertNotNull(r); - ServerRegionProxy srp = new ServerRegionProxy(r); - - WaitCriterion wc = new WaitCriterion() { - public boolean done() { - return pool.getConnectedServerCount() == 3; - } - public String description() { - return "Never got three connected servers"; - } - }; - DistributedTestCase.waitForCriterion(wc, 90 * 1000, 1000, true); - - // close secondary EP - VM result = getBackupVM(); - result.invoke(HAInterestBaseTest.class, "stopServer"); - List list = new ArrayList(); - list.add(k1); - list.add(k2); - List serverKeys = srp.registerInterest(list, InterestType.KEY, - InterestResultPolicy.KEYS, - false, r.getAttributes().getDataPolicy().ordinal); - - assertNotNull(serverKeys); - List resultKeys =(List) serverKeys.get(0) ; - assertEquals(2,resultKeys.size()); - assertTrue(resultKeys.contains(k1)); - assertTrue(resultKeys.contains(k2)); - return result; + public static VM stopSecondaryAndRegisterK1AndK2AndVerifyResponse() { + LocalRegion r = (LocalRegion) cache.getRegion(Region.SEPARATOR + REGION_NAME); + assertNotNull(r); + ServerRegionProxy srp = new ServerRegionProxy(r); + + WaitCriterion wc = new WaitCriterion() { + @Override + public boolean done() { + return pool.getConnectedServerCount() == 3; } - catch (Exception ex) { - fail("failed while region.stopSecondaryAndRegisterK1AndK2AndVerifyResponse()", ex); - return null; + @Override + public String description() { + return "Never got three connected servers"; } - } + }; + DistributedTestCase.waitForCriterion(wc, TIMEOUT_MILLIS, INTERVAL_MILLIS, true); + + // close secondary EP + VM result = getBackupVM(); + result.invoke(HAInterestBaseTest.class, "stopServer"); + List list = new ArrayList(); + list.add(k1); + list.add(k2); + List serverKeys = srp.registerInterest(list, InterestType.KEY, InterestResultPolicy.KEYS, false, r.getAttributes().getDataPolicy().ordinal); + + assertNotNull(serverKeys); + List resultKeys = (List) serverKeys.get(0); + assertEquals(2, resultKeys.size()); + assertTrue(resultKeys.contains(k1)); + assertTrue(resultKeys.contains(k2)); + return result; + } /** * returns the secondary that was stopped */ - public static VM stopSecondaryAndUNregisterK1() - { - try { - LocalRegion r = (LocalRegion)cache.getRegion(Region.SEPARATOR+REGION_NAME); - assertNotNull(r); - ServerRegionProxy srp = new ServerRegionProxy(r); - - WaitCriterion wc = new WaitCriterion() { - public boolean done() { - return pool.getConnectedServerCount() == 3; - } - public String description() { - return "connected server count never became 3"; - } - }; - DistributedTestCase.waitForCriterion(wc, 30 * 1000, 1000, true); - - // close secondary EP - VM result = getBackupVM(); - result.invoke(HAInterestBaseTest.class, "stopServer"); - List list = new ArrayList(); - list.add(k1); - srp.unregisterInterest(list, InterestType.KEY,false,false); - return result; + public static VM stopSecondaryAndUNregisterK1() { + LocalRegion r = (LocalRegion) cache.getRegion(Region.SEPARATOR + REGION_NAME); + assertNotNull(r); + ServerRegionProxy srp = new ServerRegionProxy(r); + + WaitCriterion wc = new WaitCriterion() { + @Override + public boolean done() { + return pool.getConnectedServerCount() == 3; } - catch (Exception ex) { - fail("failed while region.stopSecondaryAndUNregisterK1()", ex); - return null; + @Override + public String description() { + return "connected server count never became 3"; } - } + }; + DistributedTestCase.waitForCriterion(wc, TIMEOUT_MILLIS, INTERVAL_MILLIS, true); + + // close secondary EP + VM result = getBackupVM(); + result.invoke(HAInterestBaseTest.class, "stopServer"); + List list = new ArrayList(); + list.add(k1); + srp.unregisterInterest(list, InterestType.KEY, false, false); + return result; + } - public static void registerK1AndK2OnPrimaryAndSecondaryAndVerifyResponse() - { - try { - ServerLocation primary = pool.getPrimary(); - ServerLocation secondary = (ServerLocation)pool.getRedundants().get(0); - LocalRegion r = (LocalRegion)cache.getRegion(Region.SEPARATOR+REGION_NAME); - assertNotNull(r); - ServerRegionProxy srp = new ServerRegionProxy(r); - List list = new ArrayList(); - list.add(k1); - list.add(k2); - - //Primary server - List serverKeys1 = srp.registerInterestOn(primary, list, - InterestType.KEY, InterestResultPolicy.KEYS, false, r.getAttributes() - .getDataPolicy().ordinal); - assertNotNull(serverKeys1); - //expect serverKeys in response from primary - List resultKeys =(List) serverKeys1.get(0) ; - assertEquals(2,resultKeys.size()); - assertTrue(resultKeys.contains(k1)); - assertTrue(resultKeys.contains(k2)); - - //Secondary server - List serverKeys2 = srp.registerInterestOn(secondary, list, - InterestType.KEY, InterestResultPolicy.KEYS, false, r.getAttributes() - .getDataPolicy().ordinal); - // if the list is null then it is empty - if (serverKeys2 != null) { - // no serverKeys in response from secondary - assertTrue(serverKeys2.isEmpty()); - } + public static void registerK1AndK2OnPrimaryAndSecondaryAndVerifyResponse() { + ServerLocation primary = pool.getPrimary(); + ServerLocation secondary = (ServerLocation) pool.getRedundants().get(0); + LocalRegion r = (LocalRegion) cache.getRegion(Region.SEPARATOR + REGION_NAME); + assertNotNull(r); + ServerRegionProxy srp = new ServerRegionProxy(r); + List list = new ArrayList(); + list.add(k1); + list.add(k2); + + // Primary server + List serverKeys1 = srp.registerInterestOn(primary, list, InterestType.KEY, InterestResultPolicy.KEYS, false, r.getAttributes().getDataPolicy().ordinal); + assertNotNull(serverKeys1); + // expect serverKeys in response from primary + List resultKeys = (List) serverKeys1.get(0); + assertEquals(2, resultKeys.size()); + assertTrue(resultKeys.contains(k1)); + assertTrue(resultKeys.contains(k2)); + + // Secondary server + List serverKeys2 = srp.registerInterestOn(secondary, list, InterestType.KEY, InterestResultPolicy.KEYS, false, r.getAttributes().getDataPolicy().ordinal); + // if the list is null then it is empty + if (serverKeys2 != null) { + // no serverKeys in response from secondary + assertTrue(serverKeys2.isEmpty()); + } + } + public static void verifyInterestRegistration() { + WaitCriterion wc = new WaitCriterion() { + @Override + public boolean done() { + return cache.getBridgeServers().size() == 1; + } + @Override + public String description() { + return "waiting for cache.getBridgeServers().size() == 1"; + } + }; + DistributedTestCase.waitForCriterion(wc, TIMEOUT_MILLIS, INTERVAL_MILLIS, true); + BridgeServerImpl bs = (BridgeServerImpl) cache.getBridgeServers().iterator().next(); + assertNotNull(bs); + assertNotNull(bs.getAcceptor()); + assertNotNull(bs.getAcceptor().getCacheClientNotifier()); + final CacheClientNotifier ccn = bs.getAcceptor().getCacheClientNotifier(); + + wc = new WaitCriterion() { + @Override + public boolean done() { + return ccn.getClientProxies().size() > 0; } - catch (Exception ex) { - fail("failed while region.registerK1AndK2OnPrimaryAndSecondaryAndVerifyResponse()", ex); + @Override + public String description() { + return "waiting for ccn.getClientProxies().size() > 0"; } - } + }; + DistributedTestCase.waitForCriterion(wc, TIMEOUT_MILLIS, INTERVAL_MILLIS, true); + Iterator iter_prox = ccn.getClientProxies().iterator(); - public static void verifyInterestRegistration() - { - try { - WaitCriterion wc = new WaitCriterion() { - String excuse; - public boolean done() { - return cache.getBridgeServers().size() == 1; - } - public String description() { - return excuse; - } - }; - DistributedTestCase.waitForCriterion(wc, MAX_WAIT, 1000, true); - - BridgeServerImpl bs = (BridgeServerImpl)cache.getBridgeServers() - .iterator().next(); - assertNotNull(bs); - assertNotNull(bs.getAcceptor()); - assertNotNull(bs.getAcceptor().getCacheClientNotifier()); - final CacheClientNotifier ccn = bs.getAcceptor().getCacheClientNotifier(); + if (iter_prox.hasNext()) { + final CacheClientProxy ccp = (CacheClientProxy) iter_prox.next(); + wc = new WaitCriterion() { - String excuse; + @Override public boolean done() { - return ccn.getClientProxies().size() > 0; + Set keysMap = (Set) ccp.cils[RegisterInterestTracker.interestListIndex] + .getProfile(Region.SEPARATOR + REGION_NAME) + .getKeysOfInterestFor(ccp.getProxyID()); + return keysMap != null && keysMap.size() == 2; } + @Override public String description() { - return excuse; + return "waiting for keys of interest to include 2 keys"; } }; - DistributedTestCase.waitForCriterion(wc, MAX_WAIT, 1000, true); - - Iterator iter_prox = ccn.getClientProxies().iterator(); + DistributedTestCase.waitForCriterion(wc, TIMEOUT_MILLIS, INTERVAL_MILLIS, true); - if (iter_prox.hasNext()) { - final CacheClientProxy ccp =(CacheClientProxy)iter_prox.next(); - wc = new WaitCriterion() { - String excuse; - public boolean done() { - Set keysMap = (Set)ccp.cils[RegisterInterestTracker.interestListIndex] - .getProfile(Region.SEPARATOR + REGION_NAME) - .getKeysOfInterestFor(ccp.getProxyID()); - return keysMap != null && keysMap.size() == 2; - } - public String description() { - return excuse; - } - }; - DistributedTestCase.waitForCriterion(wc, MAX_WAIT, 1000, true); - - Set keysMap = (Set)ccp.cils[RegisterInterestTracker.interestListIndex] - .getProfile( Region.SEPARATOR + REGION_NAME) + Set keysMap = (Set) ccp.cils[RegisterInterestTracker.interestListIndex].getProfile(Region.SEPARATOR + REGION_NAME) .getKeysOfInterestFor(ccp.getProxyID()); - assertNotNull(keysMap); - assertEquals(2, keysMap.size()); - assertTrue(keysMap.contains(k1)); - assertTrue(keysMap.contains(k2)); - } - } - catch (Exception ex) { - fail("while setting verifyInterestRegistration " + ex); + assertNotNull(keysMap); + assertEquals(2, keysMap.size()); + assertTrue(keysMap.contains(k1)); + assertTrue(keysMap.contains(k2)); } } - public static void verifyInterestUNRegistration() - { - try { - WaitCriterion wc = new WaitCriterion() { - String excuse; - public boolean done() { - return cache.getBridgeServers().size() == 1; - } - public String description() { - return excuse; - } - }; - DistributedTestCase.waitForCriterion(wc, MAX_WAIT, 1000, true); + public static void verifyInterestUNRegistration() { + WaitCriterion wc = new WaitCriterion() { + @Override + public boolean done() { + return cache.getBridgeServers().size() == 1; + } + @Override + public String description() { + return "waiting for cache.getBridgeServers().size() == 1"; + } + }; + DistributedTestCase.waitForCriterion(wc, TIMEOUT_MILLIS, INTERVAL_MILLIS, true); + + BridgeServerImpl bs = (BridgeServerImpl) cache.getBridgeServers().iterator().next(); + assertNotNull(bs); + assertNotNull(bs.getAcceptor()); + assertNotNull(bs.getAcceptor().getCacheClientNotifier()); + final CacheClientNotifier ccn = bs.getAcceptor().getCacheClientNotifier(); + + wc = new WaitCriterion() { + @Override + public boolean done() { + return ccn.getClientProxies().size() > 0; + } + @Override + public String description() { + return "waiting for ccn.getClientProxies().size() > 0"; + } + }; + DistributedTestCase.waitForCriterion(wc, TIMEOUT_MILLIS, INTERVAL_MILLIS, true); + + Iterator iter_prox = ccn.getClientProxies().iterator(); + if (iter_prox.hasNext()) { + final CacheClientProxy ccp = (CacheClientProxy) iter_prox.next(); - BridgeServerImpl bs = (BridgeServerImpl)cache.getBridgeServers() - .iterator().next(); - assertNotNull(bs); - assertNotNull(bs.getAcceptor()); - assertNotNull(bs.getAcceptor().getCacheClientNotifier()); - final CacheClientNotifier ccn = bs.getAcceptor().getCacheClientNotifier(); wc = new WaitCriterion() { - String excuse; + @Override public boolean done() { - return ccn.getClientProxies().size() > 0; + Set keysMap = (Set) ccp.cils[RegisterInterestTracker.interestListIndex] + .getProfile(Region.SEPARATOR + REGION_NAME) + .getKeysOfInterestFor(ccp.getProxyID()); + return keysMap != null; } + @Override public String description() { - return excuse; + return "waiting for keys of interest to not be null"; } }; - DistributedTestCase.waitForCriterion(wc, MAX_WAIT, 1000, true); - - Iterator iter_prox = ccn.getClientProxies().iterator(); - if (iter_prox.hasNext()) { - final CacheClientProxy ccp =(CacheClientProxy)iter_prox.next(); - wc = new WaitCriterion() { - String excuse; - public boolean done() { - Set keysMap = (Set)ccp.cils[RegisterInterestTracker.interestListIndex] - .getProfile(Region.SEPARATOR + REGION_NAME) - .getKeysOfInterestFor(ccp.getProxyID()); - return keysMap != null; - } - public String description() { - return excuse; - } - }; - DistributedTestCase.waitForCriterion(wc, MAX_WAIT, 1000, true); - - Set keysMap = (Set)ccp.cils[RegisterInterestTracker.interestListIndex] + DistributedTestCase.waitForCriterion(wc, TIMEOUT_MILLIS, INTERVAL_MILLIS, true); + + Set keysMap = (Set) ccp.cils[RegisterInterestTracker.interestListIndex] .getProfile(Region.SEPARATOR + REGION_NAME) .getKeysOfInterestFor(ccp.getProxyID()); - assertNotNull(keysMap); - assertEquals(1, keysMap.size()); - assertFalse(keysMap.contains(k1)); - assertTrue(keysMap.contains(k2)); - } - } - catch (Exception ex) { - fail("while setting verifyInterestUNRegistration " + ex); + assertNotNull(keysMap); + assertEquals(1, keysMap.size()); + assertFalse(keysMap.contains(k1)); + assertTrue(keysMap.contains(k2)); } } - private void createCache(Properties props) throws Exception - { + private void createCache(Properties props) throws Exception { DistributedSystem ds = getSystem(props); assertNotNull(ds); ds.disconnect(); @@ -1037,8 +874,7 @@ public static void waitForAfterRegistrationCallback() assertNotNull(cache); } - public static void createClientPoolCache(String testName,String host) throws Exception - { + public static void createClientPoolCache(String testName, String host) throws Exception { Properties props = new Properties(); props.setProperty(DistributionConfig.MCAST_PORT_NAME, "0"); props.setProperty(DistributionConfig.LOCATORS_NAME, ""); @@ -1046,17 +882,18 @@ public static void waitForAfterRegistrationCallback() CacheServerTestUtil.disableShufflingOfEndpoints(); PoolImpl p; try { - p = (PoolImpl)PoolManager.createFactory() - .addServer(host, PORT1) - .addServer(host, PORT2) - .addServer(host, PORT3) - .setSubscriptionEnabled(true) - .setSubscriptionRedundancy(-1) - .setReadTimeout(1000) - .setPingInterval(1000) - // retryInterval should be more so that only registerInterste thread will initiate failover - // .setRetryInterval(20000) - .create("HAInterestBaseTestPool"); + p = (PoolImpl) PoolManager.createFactory() + .addServer(host, PORT1) + .addServer(host, PORT2) + .addServer(host, PORT3) + .setSubscriptionEnabled(true) + .setSubscriptionRedundancy(-1) + .setReadTimeout(1000) + .setPingInterval(1000) + // retryInterval should be more so that only registerInterste thread + // will initiate failover + // .setRetryInterval(20000) + .create("HAInterestBaseTestPool"); } finally { CacheServerTestUtil.enableShufflingOfEndpoints(); } @@ -1071,8 +908,7 @@ public static void waitForAfterRegistrationCallback() assertNotNull(conn); } - public static void createClientPoolCacheWithSmallRetryInterval(String testName,String host) throws Exception - { + public static void createClientPoolCacheWithSmallRetryInterval(String testName, String host) throws Exception { Properties props = new Properties(); props.setProperty(DistributionConfig.MCAST_PORT_NAME, "0"); props.setProperty(DistributionConfig.LOCATORS_NAME, ""); @@ -1080,18 +916,18 @@ public static void waitForAfterRegistrationCallback() CacheServerTestUtil.disableShufflingOfEndpoints(); PoolImpl p; try { - p = (PoolImpl)PoolManager.createFactory() - .addServer(host, PORT1) - .addServer(host, PORT2) - .setSubscriptionEnabled(true) - .setSubscriptionRedundancy(-1) - .setReadTimeout(1000) - .setSocketBufferSize(32768) - .setMinConnections(6) - .setPingInterval(200) - // .setRetryInterval(200) - // retryAttempts 3 - .create("HAInterestBaseTestPool"); + p = (PoolImpl) PoolManager.createFactory() + .addServer(host, PORT1) + .addServer(host, PORT2) + .setSubscriptionEnabled(true) + .setSubscriptionRedundancy(-1) + .setReadTimeout(1000) + .setSocketBufferSize(32768) + .setMinConnections(6) + .setPingInterval(200) + // .setRetryInterval(200) + // retryAttempts 3 + .create("HAInterestBaseTestPool"); } finally { CacheServerTestUtil.enableShufflingOfEndpoints(); } @@ -1106,21 +942,19 @@ public static void waitForAfterRegistrationCallback() conn = pool.acquireConnection(); assertNotNull(conn); } - - public static void createClientPoolCacheConnectionToSingleServer(String testName,String hostName) throws Exception - { + public static void createClientPoolCacheConnectionToSingleServer(String testName, String hostName) throws Exception { Properties props = new Properties(); props.setProperty(DistributionConfig.MCAST_PORT_NAME, "0"); props.setProperty(DistributionConfig.LOCATORS_NAME, ""); new HAInterestBaseTest("temp").createCache(props); - PoolImpl p = (PoolImpl)PoolManager.createFactory() - .addServer(hostName, PORT1) - .setSubscriptionEnabled(true) - .setSubscriptionRedundancy(-1) - .setReadTimeout(1000) - // .setRetryInterval(20) - .create("HAInterestBaseTestPool"); + PoolImpl p = (PoolImpl) PoolManager.createFactory() + .addServer(hostName, PORT1) + .setSubscriptionEnabled(true) + .setSubscriptionRedundancy(-1) + .setReadTimeout(1000) + // .setRetryInterval(20) + .create("HAInterestBaseTestPool"); AttributesFactory factory = new AttributesFactory(); factory.setScope(Scope.LOCAL); factory.setConcurrencyChecksEnabled(true); @@ -1133,9 +967,7 @@ public static void waitForAfterRegistrationCallback() assertNotNull(conn); } - - public static Integer createServerCache() throws Exception - { + public static Integer createServerCache() throws Exception { new HAInterestBaseTest("temp").createCache(new Properties()); AttributesFactory factory = new AttributesFactory(); factory.setScope(Scope.DISTRIBUTED_ACK); @@ -1145,18 +977,16 @@ public static void waitForAfterRegistrationCallback() cache.createRegion(REGION_NAME, factory.create()); BridgeServer server = cache.addBridgeServer(); - int port = AvailablePort.getRandomAvailablePort(AvailablePort.SOCKET) ; + int port = AvailablePort.getRandomAvailablePort(AvailablePort.SOCKET); server.setPort(port); server.setMaximumTimeBetweenPings(180000); // ensures updates to be sent instead of invalidations server.setNotifyBySubscription(true); server.start(); return new Integer(server.getPort()); - } - public static Integer createServerCacheWithLocalRegion() throws Exception - { + public static Integer createServerCacheWithLocalRegion() throws Exception { new HAInterestBaseTest("temp").createCache(new Properties()); AttributesFactory factory = new AttributesFactory(); factory.setScope(Scope.LOCAL); @@ -1165,45 +995,12 @@ public static void waitForAfterRegistrationCallback() cache.createRegion(REGION_NAME, attrs); BridgeServer server = cache.addBridgeServer(); - int port = AvailablePort.getRandomAvailablePort(AvailablePort.SOCKET) ; + int port = AvailablePort.getRandomAvailablePort(AvailablePort.SOCKET); server.setPort(port); // ensures updates to be sent instead of invalidations server.setNotifyBySubscription(true); server.setMaximumTimeBetweenPings(180000); server.start(); return new Integer(server.getPort()); - - } - - - - public void tearDown2() throws Exception - { - super.tearDown2(); - // close the clients first - closeCache(); - - // then close the servers - server1.invoke(HAInterestBaseTest.class, "closeCache"); - server2.invoke(HAInterestBaseTest.class, "closeCache"); - server3.invoke(HAInterestBaseTest.class, "closeCache"); - CacheServerTestUtil.resetDisableShufflingOfEndpointsFlag(); - } - - public static void closeCache() - { - PoolImpl.AFTER_REGISTER_CALLBACK_FLAG = false ; - PoolImpl.BEFORE_PRIMARY_IDENTIFICATION_FROM_BACKUP_CALLBACK_FLAG = false ; - PoolImpl.BEFORE_RECOVER_INTEREST_CALLBACK_FLAG = false ; - PoolImpl.BEFORE_REGISTER_CALLBACK_FLAG = false ; - HAInterestBaseTest.isAfterRegistrationCallbackCalled = false ; - HAInterestBaseTest.isBeforeInterestRecoveryCallbackCalled = false ; - HAInterestBaseTest.isBeforeRegistrationCallbackCalled = false ; - if (cache != null && !cache.isClosed()) { - cache.close(); - cache.getDistributedSystem().disconnect(); - } } } - - http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/a336e81c/gemfire-core/src/test/java/com/gemstone/gemfire/internal/cache/tier/sockets/HAInterestDistributedTestCase.java ---------------------------------------------------------------------- diff --git a/gemfire-core/src/test/java/com/gemstone/gemfire/internal/cache/tier/sockets/HAInterestDistributedTestCase.java b/gemfire-core/src/test/java/com/gemstone/gemfire/internal/cache/tier/sockets/HAInterestDistributedTestCase.java new file mode 100755 index 0000000..82739c6 --- /dev/null +++ b/gemfire-core/src/test/java/com/gemstone/gemfire/internal/cache/tier/sockets/HAInterestDistributedTestCase.java @@ -0,0 +1,15 @@ +package com.gemstone.gemfire.internal.cache.tier.sockets; + +import org.junit.runner.RunWith; +import org.junit.runners.Suite; + +@RunWith(Suite.class) +@Suite.SuiteClasses({ + HAInterestPart1DUnitTest.class, + HAInterestPart2DUnitTest.class, +}) +/** + * Suite of distributed tests for HAInterest. + */ +public class HAInterestDistributedTestCase { +} http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/a336e81c/gemfire-core/src/test/java/com/gemstone/gemfire/internal/cache/tier/sockets/HAInterestPart1DUnitTest.java ---------------------------------------------------------------------- diff --git a/gemfire-core/src/test/java/com/gemstone/gemfire/internal/cache/tier/sockets/HAInterestPart1DUnitTest.java b/gemfire-core/src/test/java/com/gemstone/gemfire/internal/cache/tier/sockets/HAInterestPart1DUnitTest.java index f3f3608..1f48963 100755 --- a/gemfire-core/src/test/java/com/gemstone/gemfire/internal/cache/tier/sockets/HAInterestPart1DUnitTest.java +++ b/gemfire-core/src/test/java/com/gemstone/gemfire/internal/cache/tier/sockets/HAInterestPart1DUnitTest.java @@ -6,28 +6,26 @@ *========================================================================= */ package com.gemstone.gemfire.internal.cache.tier.sockets; + import dunit.VM; -public class HAInterestPart1DUnitTest extends HAInterestBaseTest -{ +@SuppressWarnings("serial") +public class HAInterestPart1DUnitTest extends HAInterestBaseTest { - /** constructor */ public HAInterestPart1DUnitTest(String name) { super(name); } - /** * Tests whether interest is registered or not on both primary and secondaries */ - public void testInterestRegistrationOnBothPrimaryAndSecondary()throws Exception - { + public void testInterestRegistrationOnBothPrimaryAndSecondary() throws Exception { createClientPoolCache(this.getName(), getServerHostName(server1.getHost())); createEntriesK1andK2(); server1.invoke(HAInterestBaseTest.class, "createEntriesK1andK2"); server2.invoke(HAInterestBaseTest.class, "createEntriesK1andK2"); server3.invoke(HAInterestBaseTest.class, "createEntriesK1andK2"); - //register K1 and K2 + // register K1 and K2 registerK1AndK2(); server1.invoke(HAInterestBaseTest.class, "verifyInterestRegistration"); server2.invoke(HAInterestBaseTest.class, "verifyInterestRegistration"); @@ -35,31 +33,30 @@ public class HAInterestPart1DUnitTest extends HAInterestBaseTest } /** - * Tests whether interest is registered on both primary and secondaries and verify their responses + * Tests whether interest is registered on both primary and secondaries and + * verify their responses */ - public void testInterestRegistrationResponseOnBothPrimaryAndSecondary()throws Exception - { - + public void testInterestRegistrationResponseOnBothPrimaryAndSecondary() throws Exception { createClientPoolCache(this.getName(), getServerHostName(server1.getHost())); createEntriesK1andK2(); server1.invoke(HAInterestBaseTest.class, "createEntriesK1andK2"); server2.invoke(HAInterestBaseTest.class, "createEntriesK1andK2"); server3.invoke(HAInterestBaseTest.class, "createEntriesK1andK2"); - //register interst and verify response + // register interest and verify response registerK1AndK2OnPrimaryAndSecondaryAndVerifyResponse(); - } + /** - * Tests whether re-registration of interest causes duplicates on server side interest map + * Tests whether re-registration of interest causes duplicates on server side + * interest map */ - public void testRERegistrationWillNotCreateDuplicateKeysOnServerInterstMaps() throws Exception{ - + public void testRERegistrationWillNotCreateDuplicateKeysOnServerInterstMaps() throws Exception { createClientPoolCache(this.getName(), getServerHostName(server1.getHost())); createEntriesK1andK2(); server1.invoke(HAInterestBaseTest.class, "createEntriesK1andK2"); server2.invoke(HAInterestBaseTest.class, "createEntriesK1andK2"); server3.invoke(HAInterestBaseTest.class, "createEntriesK1andK2"); - //register multiple times + // register multiple times reRegisterK1AndK2(); server1.invoke(HAInterestBaseTest.class, "verifyInterestRegistration"); @@ -68,31 +65,32 @@ public class HAInterestPart1DUnitTest extends HAInterestBaseTest } /** - * Tests if Primary fails during interest registration should initiate failover - * and should pick new primary and get server keys in response of registerInterest + * Tests if Primary fails during interest registration should initiate + * failover and should pick new primary and get server keys in response of + * registerInterest */ - public void testPrimaryFailureInRegisterInterest() throws Exception{ - + public void testPrimaryFailureInRegisterInterest() throws Exception { createClientPoolCache(this.getName(), getServerHostName(server1.getHost())); createEntriesK1andK2(); server1.invoke(HAInterestBaseTest.class, "createEntriesK1andK2"); server2.invoke(HAInterestBaseTest.class, "createEntriesK1andK2"); server3.invoke(HAInterestBaseTest.class, "createEntriesK1andK2"); - //stop primary + // stop primary VM oldPrimary = getPrimaryVM(); stopPrimaryAndRegisterK1AndK2AndVerifyResponse(); // DSM verifyDeadAndLiveServers(1, 2); - //new primary + // new primary VM newPrimary = getPrimaryVM(oldPrimary); newPrimary.invoke(HAInterestBaseTest.class, "verifyDispatcherIsAlive"); newPrimary.invoke(HAInterestBaseTest.class, "verifyInterestRegistration"); } /** - * Tests if Secondary fails during interest registration should add to dead Ep list + * Tests if Secondary fails during interest registration should add to dead Ep + * list */ - public void testSecondaryFailureInRegisterInterest() throws Exception{ + public void testSecondaryFailureInRegisterInterest() throws Exception { createClientPoolCache(this.getName(), getServerHostName(server1.getHost())); createEntriesK1andK2(); server1.invoke(HAInterestBaseTest.class, "createEntriesK1andK2"); @@ -103,101 +101,101 @@ public class HAInterestPart1DUnitTest extends HAInterestBaseTest stopSecondaryAndRegisterK1AndK2AndVerifyResponse(); verifyDeadAndLiveServers(1, 2); - //still primary + // still primary primary.invoke(HAInterestBaseTest.class, "verifyDispatcherIsAlive"); primary.invoke(HAInterestBaseTest.class, "verifyInterestRegistration"); } + /** - * Tests if Primary and next primary candidate fails during interest registration - * it should pick new primary from ep list and add these two server to dead ep list - * and expect serverKeys as a response from registration on newly selected primary + * Tests if Primary and next primary candidate fails during interest + * registration it should pick new primary from ep list and add these two + * server to dead ep list and expect serverKeys as a response from + * registration on newly selected primary */ - public void testBothPrimaryAndSecondaryFailureInRegisterInterest() throws Exception{ - - createClientPoolCache(this.getName(), getServerHostName(server1.getHost())); - createEntriesK1andK2(); + public void testBothPrimaryAndSecondaryFailureInRegisterInterest() throws Exception { + createClientPoolCache(this.getName(), getServerHostName(server1.getHost())); + createEntriesK1andK2(); server1.invoke(HAInterestBaseTest.class, "createEntriesK1andK2"); server2.invoke(HAInterestBaseTest.class, "createEntriesK1andK2"); server3.invoke(HAInterestBaseTest.class, "createEntriesK1andK2"); - //stop server1 and server2 + // stop server1 and server2 VM oldPrimary = getPrimaryVM(); stopBothPrimaryAndSecondaryAndRegisterK1AndK2AndVerifyResponse(); - verifyDeadAndLiveServers(2,1); + verifyDeadAndLiveServers(2, 1); + VM newPrimary = getPrimaryVM(oldPrimary); + newPrimary.invoke(HAInterestBaseTest.class, "verifyDispatcherIsAlive"); + newPrimary.invoke(HAInterestBaseTest.class, "verifyInterestRegistration"); + } + + /** + * Tests if Primary fails during interest registration , it selects new + * primary from the ep list after making this ep as primary it fails , so + * interest registration will initiate failover on this ep as well it should + * pick new primary from ep list and these two server to dead ep list and + * expect serverKeys as a response from registration on newly selected primary + * + */ + public void testProbablePrimaryFailureInRegisterInterest() throws Exception { + createClientPoolCache(this.getName(), getServerHostName(server1.getHost())); + createEntriesK1andK2(); + server1.invoke(HAInterestBaseTest.class, "createEntriesK1andK2"); + server2.invoke(HAInterestBaseTest.class, "createEntriesK1andK2"); + server3.invoke(HAInterestBaseTest.class, "createEntriesK1andK2"); + + VM oldPrimary = getPrimaryVM(); + stopPrimaryAndRegisterK1AndK2AndVerifyResponse(); + + verifyDeadAndLiveServers(1, 2); VM newPrimary = getPrimaryVM(oldPrimary); newPrimary.invoke(HAInterestBaseTest.class, "verifyDispatcherIsAlive"); newPrimary.invoke(HAInterestBaseTest.class, "verifyInterestRegistration"); } - /** - * Tests if Primary fails during interest registration , it selects new primary from the ep list - * after making this ep as primary it fails , so interst registration will initiate failover on this ep as well - * it should pick new primary from ep list and these two server to dead ep list - * and expect serverKeys as a response from registration on newly selected primary - * - */ - public void testProbablePrimaryFailureInRegisterInterest()throws Exception{ - - createClientPoolCache(this.getName(), getServerHostName(server1.getHost())); - createEntriesK1andK2(); - server1.invoke(HAInterestBaseTest.class, "createEntriesK1andK2"); - server2.invoke(HAInterestBaseTest.class, "createEntriesK1andK2"); - server3.invoke(HAInterestBaseTest.class, "createEntriesK1andK2") ; - - VM oldPrimary = getPrimaryVM(); - stopPrimaryAndRegisterK1AndK2AndVerifyResponse(); - - verifyDeadAndLiveServers(1,2); - VM newPrimary = getPrimaryVM(oldPrimary); - newPrimary.invoke(HAInterestBaseTest.class, "verifyDispatcherIsAlive"); - newPrimary.invoke(HAInterestBaseTest.class, "verifyInterestRegistration"); - } - - /** - * Tests if DeadServerMonitor on detecting an EP as alive should register client ( create CCP) as welll as register IL - */ - public void testInterstRegistrationOnRecoveredEPbyDSM() throws Exception{ - - addExpectedException("SocketException"); - - createClientPoolCache(this.getName(), getServerHostName(server1.getHost())); - createEntriesK1andK2(); - registerK1AndK2(); - server1.invoke(HAInterestBaseTest.class, "createEntriesK1andK2"); - server2.invoke(HAInterestBaseTest.class, "createEntriesK1andK2"); - server3.invoke(HAInterestBaseTest.class, "createEntriesK1andK2") ; - - server1.invoke(HAInterestBaseTest.class, "stopServer"); - server2.invoke(HAInterestBaseTest.class, "stopServer"); - server3.invoke(HAInterestBaseTest.class, "stopServer"); - //All servers are dead at this point , no primary in the system. - verifyDeadAndLiveServers(3, 0); - - // now start one of the servers - server2.invoke(HAInterestBaseTest.class, "startServer"); - verifyDeadAndLiveServers(2, 1); - //verify that is it primary , and dispatcher is running - server2.invoke(HAInterestBaseTest.class, "verifyDispatcherIsAlive"); - //verify that interest is registered on this recovered EP - server2.invoke(HAInterestBaseTest.class, "verifyInterestRegistration"); - - // now start one more server ; this should be now secondary - server1.invoke(HAInterestBaseTest.class, "startServer"); - verifyDeadAndLiveServers(1, 2); - - //verify that is it secondary , dispatcher should not be runnig - server1.invoke(HAInterestBaseTest.class, "verifyDispatcherIsNotAlive"); - //verify that interest is registered on this recovered EP as well - server1.invoke(HAInterestBaseTest.class, "verifyInterestRegistration"); - - // now start one more server ; this should be now secondary - server3.invoke(HAInterestBaseTest.class, "startServer"); - verifyDeadAndLiveServers(0, 3); - - //verify that is it secondary , dispatcher should not be runnig - server3.invoke(HAInterestBaseTest.class, "verifyDispatcherIsNotAlive"); - //verify that interest is registered on this recovered EP as well - server3.invoke(HAInterestBaseTest.class, "verifyInterestRegistration"); - - } + /** + * Tests if DeadServerMonitor on detecting an EP as alive should register + * client ( create CCP) as welll as register IL + */ + public void testInterstRegistrationOnRecoveredEPbyDSM() throws Exception { + addExpectedException("SocketException"); + + createClientPoolCache(this.getName(), getServerHostName(server1.getHost())); + createEntriesK1andK2(); + registerK1AndK2(); + server1.invoke(HAInterestBaseTest.class, "createEntriesK1andK2"); + server2.invoke(HAInterestBaseTest.class, "createEntriesK1andK2"); + server3.invoke(HAInterestBaseTest.class, "createEntriesK1andK2"); + + server1.invoke(HAInterestBaseTest.class, "stopServer"); + server2.invoke(HAInterestBaseTest.class, "stopServer"); + server3.invoke(HAInterestBaseTest.class, "stopServer"); + // All servers are dead at this point , no primary in the system. + verifyDeadAndLiveServers(3, 0); + + // now start one of the servers + server2.invoke(HAInterestBaseTest.class, "startServer"); + verifyDeadAndLiveServers(2, 1); + // verify that is it primary , and dispatcher is running + server2.invoke(HAInterestBaseTest.class, "verifyDispatcherIsAlive"); + // verify that interest is registered on this recovered EP + server2.invoke(HAInterestBaseTest.class, "verifyInterestRegistration"); + + // now start one more server ; this should be now secondary + server1.invoke(HAInterestBaseTest.class, "startServer"); + verifyDeadAndLiveServers(1, 2); + + // verify that is it secondary , dispatcher should not be runnig + server1.invoke(HAInterestBaseTest.class, "verifyDispatcherIsNotAlive"); + // verify that interest is registered on this recovered EP as well + server1.invoke(HAInterestBaseTest.class, "verifyInterestRegistration"); + + // now start one more server ; this should be now secondary + server3.invoke(HAInterestBaseTest.class, "startServer"); + verifyDeadAndLiveServers(0, 3); + + // verify that is it secondary , dispatcher should not be runnig + server3.invoke(HAInterestBaseTest.class, "verifyDispatcherIsNotAlive"); + // verify that interest is registered on this recovered EP as well + server3.invoke(HAInterestBaseTest.class, "verifyInterestRegistration"); + } }