Author: frm
Date: Wed Oct 19 19:56:32 2016
New Revision: 1765706

URL: http://svn.apache.org/viewvc?rev=1765706&view=rev
Log:
OAK-4958 - Finalize test resources, client and server consistently

Modified:
    
jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/standby/client/StandbyClient.java
    
jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/standby/server/StandbyServer.java
    
jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/standby/DataStoreTestBase.java
    
jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/standby/FailoverIPRangeIT.java
    
jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/standby/FailoverMultipleClientsTestIT.java
    
jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/standby/FailoverSslTestIT.java
    
jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/standby/MBeanIT.java
    
jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/standby/RecoverTestIT.java
    
jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/standby/StandbyTestIT.java

Modified: 
jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/standby/client/StandbyClient.java
URL: 
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/standby/client/StandbyClient.java?rev=1765706&r1=1765705&r2=1765706&view=diff
==============================================================================
--- 
jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/standby/client/StandbyClient.java
 (original)
+++ 
jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/standby/client/StandbyClient.java
 Wed Oct 19 19:56:32 2016
@@ -145,22 +145,31 @@ class StandbyClient implements AutoClose
     }
 
     @Override
-    public void close() throws InterruptedException {
+    public void close() {
+        closeChannel();
+        closeGroup();
+    }
+
+    private void closeChannel() {
+        if (channel == null) {
+            return;
+        }
         if (channel.close().awaitUninterruptibly(1, TimeUnit.SECONDS)) {
             log.debug("Channel closed");
         } else {
             log.debug("Channel close timed out");
         }
+    }
 
-        channel = null;
-
+    private void closeGroup() {
+        if (group == null) {
+            return;
+        }
         if (group.shutdownGracefully(2, 15, 
TimeUnit.SECONDS).awaitUninterruptibly(20, TimeUnit.SECONDS)) {
             log.debug("Group shut down");
         } else {
             log.debug("Group shutdown timed out");
         }
-
-        group = null;
     }
 
     String getHead() throws InterruptedException {

Modified: 
jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/standby/server/StandbyServer.java
URL: 
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/standby/server/StandbyServer.java?rev=1765706&r1=1765705&r2=1765706&view=diff
==============================================================================
--- 
jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/standby/server/StandbyServer.java
 (original)
+++ 
jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/standby/server/StandbyServer.java
 Wed Oct 19 19:56:32 2016
@@ -190,6 +190,9 @@ class StandbyServer implements AutoClose
     }
 
     public void stop() {
+        if (channelFuture == null) {
+            return;
+        }
         if (channelFuture.channel().disconnect().awaitUninterruptibly(1, 
TimeUnit.SECONDS)) {
             log.debug("Channel disconnected");
         } else {

Modified: 
jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/standby/DataStoreTestBase.java
URL: 
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/standby/DataStoreTestBase.java?rev=1765706&r1=1765705&r2=1765706&view=diff
==============================================================================
--- 
jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/standby/DataStoreTestBase.java
 (original)
+++ 
jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/standby/DataStoreTestBase.java
 Wed Oct 19 19:56:32 2016
@@ -98,19 +98,15 @@ public abstract class DataStoreTestBase
         FileStore secondary = getSecondary();
 
         NodeStore store = SegmentNodeStoreBuilders.builder(primary).build();
-        final StandbyServerSync serverSync = new 
StandbyServerSync(getServerPort(), primary);
-        serverSync.start();
         byte[] data = addTestContent(store, "server", blobSize);
-        primary.flush();
-
-        StandbyClientSync cl = newStandbyClientSync(secondary);
-        cl.run();
-
-        try {
+        try (
+                StandbyServerSync serverSync = new 
StandbyServerSync(getServerPort(), primary);
+                StandbyClientSync cl = newStandbyClientSync(secondary)
+        ) {
+            serverSync.start();
+            primary.flush();
+            cl.run();
             assertEquals(primary.getHead(), secondary.getHead());
-        } finally {
-            serverSync.close();
-            cl.close();
         }
 
         assertTrue(primary.getStats().getApproximateSize() < mb);
@@ -168,21 +164,22 @@ public abstract class DataStoreTestBase
         FileStore primary = getPrimary();
         FileStore secondary = getSecondary();
 
-        NetworkErrorProxy p = new NetworkErrorProxy(getProxyPort(), 
getServerHost(), getServerPort());
-        p.skipBytes(skipPosition, skipBytes);
-        p.flipByte(flipPosition);
-        p.run();
-
         NodeStore store = SegmentNodeStoreBuilders.builder(primary).build();
-        final StandbyServerSync serverSync = new 
StandbyServerSync(getServerPort(), primary);
-        serverSync.start();
         byte[] data = addTestContent(store, "server", blobSize);
-        primary.flush();
+        try (
+                NetworkErrorProxy p = new NetworkErrorProxy(getProxyPort(), 
getServerHost(), getServerPort());
+                StandbyServerSync serverSync = new 
StandbyServerSync(getServerPort(), primary);
+                StandbyClientSync clientSync = newStandbyClientSync(secondary, 
getProxyPort())
+        ) {
+            p.skipBytes(skipPosition, skipBytes);
+            p.flipByte(flipPosition);
+            p.run();
+
+            serverSync.start();
+            primary.flush();
 
-        StandbyClientSync clientSync = newStandbyClientSync(secondary, 
getProxyPort());
-        clientSync.run();
+            clientSync.run();
 
-        try {
             if (skipBytes > 0 || flipPosition >= 0) {
                 if (!storesShouldBeEqual()) {
                     assertFalse("stores are not expected to be equal", 
primary.getHead().equals(secondary.getHead()));
@@ -196,10 +193,6 @@ public abstract class DataStoreTestBase
                 clientSync.run();
             }
             assertEquals(primary.getHead(), secondary.getHead());
-        } finally {
-            serverSync.close();
-            clientSync.close();
-            p.close();
         }
 
         assertTrue(primary.getStats().getApproximateSize() < mb);

Modified: 
jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/standby/FailoverIPRangeIT.java
URL: 
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/standby/FailoverIPRangeIT.java?rev=1765706&r1=1765705&r2=1765706&view=diff
==============================================================================
--- 
jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/standby/FailoverIPRangeIT.java
 (original)
+++ 
jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/standby/FailoverIPRangeIT.java
 Wed Oct 19 19:56:32 2016
@@ -150,26 +150,22 @@ public class FailoverIPRangeIT extends T
         FileStore storeC = clientFileStore.fileStore();
 
         NodeStore store = SegmentNodeStoreBuilders.builder(storeS).build();
-        final StandbyServerSync serverSync = new 
StandbyServerSync(getServerPort(), storeS, ipRanges);
-        serverSync.start();
-        addTestContent(store, "server");
-        storeS.flush();  // this speeds up the test a little bit...
+        try (
+                StandbyServerSync serverSync = new 
StandbyServerSync(getServerPort(), storeS, ipRanges);
+                StandbyClientSync clientSync = new StandbyClientSync(host, 
getServerPort(), storeC, false, getClientTimeout(), false)
+        ) {
+            serverSync.start();
+            addTestContent(store, "server");
+            storeS.flush();  // this speeds up the test a little bit...
 
-        StandbyClientSync clientSync = new StandbyClientSync(host, 
getServerPort(), storeC, false, getClientTimeout(), false);
-        clientSync.run();
+            clientSync.run();
 
-        try {
             if (expectedToWork) {
                 assertEquals(storeS.getHead(), storeC.getHead());
-            }
-            else {
+            } else {
                 assertFalse("stores are equal but shouldn't!", 
storeS.getHead().equals(storeC.getHead()));
             }
-        } finally {
-            serverSync.close();
-            clientSync.close();
         }
-
     }
 
 }

Modified: 
jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/standby/FailoverMultipleClientsTestIT.java
URL: 
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/standby/FailoverMultipleClientsTestIT.java?rev=1765706&r1=1765705&r2=1765706&view=diff
==============================================================================
--- 
jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/standby/FailoverMultipleClientsTestIT.java
 (original)
+++ 
jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/standby/FailoverMultipleClientsTestIT.java
 Wed Oct 19 19:56:32 2016
@@ -58,15 +58,15 @@ public class FailoverMultipleClientsTest
         FileStore storeC2 = clientFileStore2.fileStore();
 
         NodeStore store = SegmentNodeStoreBuilders.builder(storeS).build();
-        final StandbyServerSync serverSync = new 
StandbyServerSync(getServerPort(), storeS);
-        serverSync.start();
-        SegmentTestUtils.addTestContent(store, "server");
-        storeS.flush();  // this speeds up the test a little bit...
+        try (
+                StandbyServerSync serverSync = new 
StandbyServerSync(getServerPort(), storeS);
+                StandbyClientSync cl1 = newStandbyClientSync(storeC);
+                StandbyClientSync cl2 = newStandbyClientSync(storeC2)
+        ) {
+            serverSync.start();
+            SegmentTestUtils.addTestContent(store, "server");
+            storeS.flush();  // this speeds up the test a little bit...
 
-        StandbyClientSync cl1 = newStandbyClientSync(storeC);
-        StandbyClientSync cl2 = newStandbyClientSync(storeC2);
-
-        try {
             assertFalse("first client has invalid initial store!", 
storeS.getHead().equals(storeC.getHead()));
             assertFalse("second client has invalid initial store!", 
storeS.getHead().equals(storeC2.getHead()));
             assertEquals(storeC.getHead(), storeC2.getHead());
@@ -89,10 +89,6 @@ public class FailoverMultipleClientsTest
             cl1.start();
             cl1.run();
             assertEquals(storeS.getHead(), storeC.getHead());
-        } finally {
-            serverSync.close();
-            cl1.close();
-            cl2.close();
         }
     }
 

Modified: 
jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/standby/FailoverSslTestIT.java
URL: 
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/standby/FailoverSslTestIT.java?rev=1765706&r1=1765705&r2=1765706&view=diff
==============================================================================
--- 
jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/standby/FailoverSslTestIT.java
 (original)
+++ 
jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/standby/FailoverSslTestIT.java
 Wed Oct 19 19:56:32 2016
@@ -20,8 +20,8 @@
 package org.apache.jackrabbit.oak.segment.standby;
 
 import static 
org.apache.jackrabbit.oak.segment.SegmentTestUtils.addTestContent;
-import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertTrue;
 
 import java.io.File;
 
@@ -53,20 +53,11 @@ public class FailoverSslTestIT extends T
     public void testFailoverSecure() throws Exception {
         FileStore storeS = serverFileStore.fileStore();
         FileStore storeC = clientFileStore.fileStore();
-        NodeStore store = SegmentNodeStoreBuilders.builder(storeS).build();
-        final StandbyServerSync serverSync = new 
StandbyServerSync(getServerPort(), storeS, true);
-        serverSync.start();
-        addTestContent(store, "server");
-        storeS.flush();  // this speeds up the test a little bit...
-
-        StandbyClientSync clientSync = newStandbyClientSync(storeC, 
getServerPort(), true);
-        clientSync.run();
-
-        try {
-            assertEquals(storeS.getHead(), storeC.getHead());
-        } finally {
-            serverSync.close();
-            clientSync.close();
+        try (
+                StandbyServerSync serverSync = new 
StandbyServerSync(getServerPort(), storeS, true);
+                StandbyClientSync clientSync = newStandbyClientSync(storeC, 
getServerPort(), true);
+        ) {
+            assertTrue(synchronizeAndCompareHead(serverSync, clientSync));
         }
     }
 
@@ -74,20 +65,11 @@ public class FailoverSslTestIT extends T
     public void testFailoverSecureServerPlainClient() throws Exception {
         FileStore storeS = serverFileStore.fileStore();
         FileStore storeC = clientFileStore.fileStore();
-        NodeStore store = SegmentNodeStoreBuilders.builder(storeS).build();
-        final StandbyServerSync serverSync = new 
StandbyServerSync(getServerPort(), storeS, true);
-        serverSync.start();
-        addTestContent(store, "server");
-        storeS.flush();  // this speeds up the test a little bit...
-
-        StandbyClientSync clientSync = newStandbyClientSync(storeC);
-        clientSync.run();
-
-        try {
-            assertFalse("stores are equal but shouldn't!", 
storeS.getHead().equals(storeC.getHead()));
-        } finally {
-            serverSync.close();
-            clientSync.close();
+        try (
+                StandbyServerSync serverSync = new 
StandbyServerSync(getServerPort(), storeS, true);
+                StandbyClientSync clientSync = newStandbyClientSync(storeC);
+        ) {
+            assertFalse(synchronizeAndCompareHead(serverSync, clientSync));
         }
     }
 
@@ -95,20 +77,23 @@ public class FailoverSslTestIT extends T
     public void testFailoverPlainServerSecureClient() throws Exception {
         FileStore storeS = serverFileStore.fileStore();
         FileStore storeC = clientFileStore.fileStore();
+        try (
+                StandbyServerSync serverSync = new 
StandbyServerSync(getServerPort(), storeS);
+                StandbyClientSync clientSync = newStandbyClientSync(storeC, 
getServerPort(), true);
+        ) {
+            assertFalse(synchronizeAndCompareHead(serverSync, clientSync));
+        }
+    }
+
+    private boolean synchronizeAndCompareHead(StandbyServerSync serverSync, 
StandbyClientSync clientSync) throws Exception {
+        FileStore storeS = serverFileStore.fileStore();
+        FileStore storeC = clientFileStore.fileStore();
         NodeStore store = SegmentNodeStoreBuilders.builder(storeS).build();
-        final StandbyServerSync serverSync = new 
StandbyServerSync(getServerPort(), storeS);
         serverSync.start();
         addTestContent(store, "server");
         storeS.flush();  // this speeds up the test a little bit...
-
-        StandbyClientSync clientSync = newStandbyClientSync(storeC, 
getServerPort(), true);
         clientSync.run();
-
-        try {
-            assertFalse("stores are equal but shouldn't!", 
storeS.getHead().equals(storeC.getHead()));
-        } finally {
-            serverSync.close();
-            clientSync.close();
-        }
+        return storeS.getHead().equals(storeC.getHead());
     }
+
 }

Modified: 
jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/standby/MBeanIT.java
URL: 
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/standby/MBeanIT.java?rev=1765706&r1=1765705&r2=1765706&view=diff
==============================================================================
--- 
jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/standby/MBeanIT.java
 (original)
+++ 
jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/standby/MBeanIT.java
 Wed Oct 19 19:56:32 2016
@@ -35,8 +35,9 @@ import org.apache.jackrabbit.oak.segment
 import org.apache.jackrabbit.oak.segment.standby.jmx.StandbyStatusMBean;
 import org.apache.jackrabbit.oak.segment.standby.server.StandbyServerSync;
 import org.apache.jackrabbit.oak.segment.test.TemporaryFileStore;
-import org.junit.Ignore;
+import org.junit.Rule;
 import org.junit.Test;
+import org.junit.rules.RuleChain;
 import org.junit.rules.TemporaryFolder;
 
 public class MBeanIT extends TestBase {
@@ -47,14 +48,18 @@ public class MBeanIT extends TestBase {
 
     private TemporaryFileStore clientFileStore = new 
TemporaryFileStore(folder);
 
+    @Rule
+    public RuleChain chain = RuleChain.outerRule(folder)
+            .around(serverFileStore)
+            .around(clientFileStore);
+
     @Test
     public void testServerEmptyConfig() throws Exception {
-        final StandbyServerSync serverSync = new 
StandbyServerSync(TestBase.getServerPort(), serverFileStore.fileStore());
-        serverSync.start();
-
-        final MBeanServer jmxServer = 
ManagementFactory.getPlatformMBeanServer();
+        MBeanServer jmxServer = ManagementFactory.getPlatformMBeanServer();
         ObjectName status = new ObjectName(StandbyStatusMBean.JMX_NAME + 
",id=*");
-        try {
+        try (StandbyServerSync serverSync = new 
StandbyServerSync(TestBase.getServerPort(), serverFileStore.fileStore())) {
+            serverSync.start();
+
             Set<ObjectName> instances = jmxServer.queryNames(status, null);
             assertEquals(1, instances.size());
             status = instances.toArray(new ObjectName[0])[0];
@@ -63,8 +68,9 @@ public class MBeanIT extends TestBase {
 
             assertEquals("primary", jmxServer.getAttribute(status, "Mode"));
             String m = jmxServer.getAttribute(status, "Status").toString();
-            if (!m.equals(StandbyStatusMBean.STATUS_RUNNING) && 
!m.equals("channel unregistered"))
+            if (!m.equals(StandbyStatusMBean.STATUS_RUNNING) && 
!m.equals("channel unregistered")) {
                 fail("unexpected Status " + m);
+            }
 
             assertEquals(StandbyStatusMBean.STATUS_RUNNING, 
jmxServer.getAttribute(status, "Status"));
             assertEquals(true, jmxServer.getAttribute(status, "Running"));
@@ -75,22 +81,18 @@ public class MBeanIT extends TestBase {
 
             assertEquals(true, jmxServer.getAttribute(status, "Running"));
             assertEquals(StandbyStatusMBean.STATUS_RUNNING, 
jmxServer.getAttribute(status, "Status"));
-        } finally {
-            serverSync.close();
         }
-
         assertTrue(!jmxServer.isRegistered(status));
     }
 
     @Test
     public void testClientEmptyConfigNoServer() throws Exception {
-        final StandbyClientSync clientSync = 
newStandbyClientSync(clientFileStore.fileStore());
-        clientSync.start();
-        clientSync.run();
-
-        final MBeanServer jmxServer = 
ManagementFactory.getPlatformMBeanServer();
+        MBeanServer jmxServer = ManagementFactory.getPlatformMBeanServer();
         ObjectName status = new ObjectName(StandbyStatusMBean.JMX_NAME + 
",id=*");
-        try {
+        try (StandbyClientSync clientSync = 
newStandbyClientSync(clientFileStore.fileStore())) {
+            clientSync.start();
+            clientSync.run();
+
             Set<ObjectName> instances = jmxServer.queryNames(status, null);
             assertEquals(1, instances.size());
             status = instances.toArray(new ObjectName[0])[0];
@@ -98,7 +100,9 @@ public class MBeanIT extends TestBase {
             assertTrue(jmxServer.isRegistered(status));
 
             String m = jmxServer.getAttribute(status, "Mode").toString();
-            if (!m.startsWith("client: ")) fail("unexpected mode " + m);
+            if (!m.startsWith("client: ")) {
+                fail("unexpected mode " + m);
+            }
 
             assertEquals("1", jmxServer.getAttribute(status, 
"FailedRequests").toString());
             assertEquals("-1", jmxServer.getAttribute(status, 
"SecondsSinceLastSuccess").toString());
@@ -112,23 +116,21 @@ public class MBeanIT extends TestBase {
             jmxServer.invoke(status, "start", null, null);
             assertEquals(true, jmxServer.getAttribute(status, "Running"));
             assertEquals(StandbyStatusMBean.STATUS_RUNNING, 
jmxServer.getAttribute(status, "Status"));
-        } finally {
-            clientSync.close();
-        }
 
+        }
         assertTrue(!jmxServer.isRegistered(status));
     }
 
     @Test
     public void testClientNoServer() throws Exception {
         System.setProperty(StandbyClientSync.CLIENT_ID_PROPERTY_NAME, "Foo");
-        final StandbyClientSync clientSync = 
newStandbyClientSync(clientFileStore.fileStore());
-        clientSync.start();
-        clientSync.run();
-
-        final MBeanServer jmxServer = 
ManagementFactory.getPlatformMBeanServer();
-        ObjectName status = new ObjectName(clientSync.getMBeanName());
-        try {
+        MBeanServer jmxServer = ManagementFactory.getPlatformMBeanServer();
+        ObjectName status;
+        try (StandbyClientSync clientSync = 
newStandbyClientSync(clientFileStore.fileStore())) {
+            clientSync.start();
+            clientSync.run();
+
+            status = new ObjectName(clientSync.getMBeanName());
             assertTrue(jmxServer.isRegistered(status));
             assertEquals("client: Foo", jmxServer.getAttribute(status, 
"Mode"));
 
@@ -137,35 +139,35 @@ public class MBeanIT extends TestBase {
 
             assertEquals("1", jmxServer.invoke(status, "calcFailedRequests", 
null, null).toString());
             assertEquals("-1", jmxServer.invoke(status, 
"calcSecondsSinceLastSuccess", null, null).toString());
-        } finally {
-            clientSync.close();
         }
-
         assertTrue(!jmxServer.isRegistered(status));
     }
 
     @Test
-    @Ignore("OAK-4958")
     public void testClientAndServerEmptyConfig() throws Exception {
-        final StandbyServerSync serverSync = new 
StandbyServerSync(getServerPort(), serverFileStore.fileStore());
-        serverSync.start();
-
         System.setProperty(StandbyClientSync.CLIENT_ID_PROPERTY_NAME, "Bar");
-        final StandbyClientSync clientSync = 
newStandbyClientSync(clientFileStore.fileStore());
-        clientSync.start();
-        clientSync.run();
-
-        final MBeanServer jmxServer = 
ManagementFactory.getPlatformMBeanServer();
-        ObjectName status = new ObjectName(StandbyStatusMBean.JMX_NAME + 
",id=*");
-        ObjectName clientStatus = new ObjectName(clientSync.getMBeanName());
-        ObjectName serverStatus = new ObjectName(serverSync.getMBeanName());
-        try {
+        MBeanServer jmxServer = ManagementFactory.getPlatformMBeanServer();
+        ObjectName clientStatus, serverStatus;
+        try (
+                StandbyServerSync serverSync = new 
StandbyServerSync(getServerPort(), serverFileStore.fileStore());
+                StandbyClientSync clientSync = 
newStandbyClientSync(clientFileStore.fileStore())
+        ) {
+            serverSync.start();
+
+            clientSync.start();
+            clientSync.run();
+
+            clientStatus = new ObjectName(clientSync.getMBeanName());
+            serverStatus = new ObjectName(serverSync.getMBeanName());
+            ObjectName status = new ObjectName(StandbyStatusMBean.JMX_NAME + 
",id=*");
             Set<ObjectName> instances = jmxServer.queryNames(status, null);
             assertEquals(3, instances.size());
 
             ObjectName connectionStatus = null;
             for (ObjectName s : instances) {
-                if (!s.equals(clientStatus) && !s.equals(serverStatus)) 
connectionStatus = s;
+                if (!s.equals(clientStatus) && !s.equals(serverStatus)) {
+                    connectionStatus = s;
+                }
             }
             assertNotNull(connectionStatus);
 
@@ -174,7 +176,9 @@ public class MBeanIT extends TestBase {
             assertTrue(jmxServer.isRegistered(connectionStatus));
 
             String m = jmxServer.getAttribute(clientStatus, "Mode").toString();
-            if (!m.startsWith("client: ")) fail("unexpected mode " + m);
+            if (!m.startsWith("client: ")) {
+                fail("unexpected mode " + m);
+            }
 
             assertEquals("primary", jmxServer.getAttribute(serverStatus, 
"Mode"));
 
@@ -199,16 +203,18 @@ public class MBeanIT extends TestBase {
             jmxServer.invoke(serverStatus, "stop", null, null);
             assertEquals(false, jmxServer.getAttribute(serverStatus, 
"Running"));
             m = jmxServer.getAttribute(serverStatus, "Status").toString();
-            if (!m.equals(StandbyStatusMBean.STATUS_STOPPED) && 
!m.equals("channel unregistered"))
+            if (!m.equals(StandbyStatusMBean.STATUS_STOPPED) && 
!m.equals("channel unregistered")) {
                 fail("unexpected Status" + m);
+            }
 
             // restart the master
             jmxServer.invoke(serverStatus, "start", null, null);
             assertEquals(true, jmxServer.getAttribute(serverStatus, 
"Running"));
             assertEquals(true, jmxServer.getAttribute(clientStatus, 
"Running"));
             m = jmxServer.getAttribute(serverStatus, "Status").toString();
-            if (!m.equals(StandbyStatusMBean.STATUS_RUNNING) && 
!m.equals("channel unregistered"))
+            if (!m.equals(StandbyStatusMBean.STATUS_RUNNING) && 
!m.equals("channel unregistered")) {
                 fail("unexpected Status" + m);
+            }
 
             // stop the slave
             jmxServer.invoke(clientStatus, "stop", null, null);
@@ -220,13 +226,9 @@ public class MBeanIT extends TestBase {
             jmxServer.invoke(clientStatus, "start", null, null);
             assertEquals(true, jmxServer.getAttribute(clientStatus, 
"Running"));
             assertEquals(StandbyStatusMBean.STATUS_RUNNING, 
jmxServer.getAttribute(clientStatus, "Status"));
-
-        } finally {
-            clientSync.close();
-            serverSync.close();
         }
-
         assertTrue(!jmxServer.isRegistered(clientStatus));
         assertTrue(!jmxServer.isRegistered(serverStatus));
     }
+
 }

Modified: 
jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/standby/RecoverTestIT.java
URL: 
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/standby/RecoverTestIT.java?rev=1765706&r1=1765705&r2=1765706&view=diff
==============================================================================
--- 
jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/standby/RecoverTestIT.java
 (original)
+++ 
jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/standby/RecoverTestIT.java
 Wed Oct 19 19:56:32 2016
@@ -57,21 +57,19 @@ public class RecoverTestIT extends TestB
         NodeStore store = SegmentNodeStoreBuilders.builder(storeC).build();
         addTestContent(store, "client");
 
-        final StandbyServerSync serverSync = new 
StandbyServerSync(getServerPort(), storeS);
-        serverSync.start();
-        store = SegmentNodeStoreBuilders.builder(storeS).build();
-        addTestContent(store, "server");
-        storeS.flush();
+        try (
+                StandbyServerSync serverSync = new 
StandbyServerSync(getServerPort(), storeS);
+                StandbyClientSync cl = newStandbyClientSync(storeC)
+        ) {
+            serverSync.start();
+            store = SegmentNodeStoreBuilders.builder(storeS).build();
+            addTestContent(store, "server");
+            storeS.flush();
 
-        StandbyClientSync cl = newStandbyClientSync(storeC);
-        try {
             assertFalse("stores are not expected to be equal", 
storeS.getHead().equals(storeC.getHead()));
             cl.run();
             assertEquals(storeS.getHead(), storeC.getHead());
-        } finally {
-            serverSync.close();
-            cl.close();
         }
-
     }
+
 }

Modified: 
jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/standby/StandbyTestIT.java
URL: 
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/standby/StandbyTestIT.java?rev=1765706&r1=1765705&r2=1765706&view=diff
==============================================================================
--- 
jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/standby/StandbyTestIT.java
 (original)
+++ 
jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/standby/StandbyTestIT.java
 Wed Oct 19 19:56:32 2016
@@ -26,12 +26,10 @@ import static org.junit.Assert.assertTru
 
 import java.io.ByteArrayInputStream;
 import java.io.File;
-import java.io.IOException;
 import java.util.Random;
 
 import com.google.common.io.ByteStreams;
 import org.apache.jackrabbit.oak.api.Blob;
-import org.apache.jackrabbit.oak.api.CommitFailedException;
 import org.apache.jackrabbit.oak.api.PropertyState;
 import org.apache.jackrabbit.oak.api.Type;
 import org.apache.jackrabbit.oak.segment.SegmentNodeStoreBuilders;
@@ -69,35 +67,32 @@ public class StandbyTestIT extends TestB
         FileStore secondary = clientFileStore.fileStore();
 
         NodeStore store = SegmentNodeStoreBuilders.builder(primary).build();
-        final StandbyServerSync serverSync = new 
StandbyServerSync(getServerPort(), primary);
-        serverSync.start();
-        byte[] data = addTestContent(store, "server", blobSize, 150);
-        primary.flush();
+        try (
+                StandbyServerSync serverSync = new 
StandbyServerSync(getServerPort(), primary);
+                StandbyClientSync clientSync = newStandbyClientSync(secondary)
+        ) {
+            serverSync.start();
+            byte[] data = addTestContent(store, "server", blobSize, 150);
+            primary.flush();
 
-        StandbyClientSync clientSync = newStandbyClientSync(secondary);
-        clientSync.run();
+            clientSync.run();
 
-        try {
             assertEquals(primary.getHead(), secondary.getHead());
-        } finally {
-            serverSync.close();
-            clientSync.close();
-        }
-
-        assertTrue(primary.getStats().getApproximateSize() > blobSize);
-        assertTrue(secondary.getStats().getApproximateSize() > blobSize);
 
-        PropertyState ps = secondary.getHead().getChildNode("root")
-                .getChildNode("server").getProperty("testBlob");
-        assertNotNull(ps);
-        assertEquals(Type.BINARY.tag(), ps.getType().tag());
-        Blob b = ps.getValue(Type.BINARY);
-        assertEquals(blobSize, b.length());
-
-        byte[] testData = new byte[blobSize];
-        ByteStreams.readFully(b.getNewStream(), testData);
-        assertArrayEquals(data, testData);
+            assertTrue(primary.getStats().getApproximateSize() > blobSize);
+            assertTrue(secondary.getStats().getApproximateSize() > blobSize);
 
+            PropertyState ps = secondary.getHead().getChildNode("root")
+                    .getChildNode("server").getProperty("testBlob");
+            assertNotNull(ps);
+            assertEquals(Type.BINARY.tag(), ps.getType().tag());
+            Blob b = ps.getValue(Type.BINARY);
+            assertEquals(blobSize, b.length());
+
+            byte[] testData = new byte[blobSize];
+            ByteStreams.readFully(b.getNewStream(), testData);
+            assertArrayEquals(data, testData);
+        }
     }
 
     /**
@@ -112,14 +107,13 @@ public class StandbyTestIT extends TestB
         FileStore secondary = clientFileStore.fileStore();
 
         NodeStore store = SegmentNodeStoreBuilders.builder(primary).build();
-        final StandbyServerSync serverSync = new 
StandbyServerSync(getServerPort(), primary);
-        serverSync.start();
-        byte[] data = addTestContent(store, "server", blobSize, dataNodes);
-        primary.flush();
-
-        StandbyClientSync clientSync = newStandbyClientSync(secondary);
-
-        try {
+        try (
+                StandbyServerSync serverSync = new 
StandbyServerSync(getServerPort(), primary);
+                StandbyClientSync clientSync = newStandbyClientSync(secondary)
+        ) {
+            serverSync.start();
+            byte[] data = addTestContent(store, "server", blobSize, dataNodes);
+            primary.flush();
 
             for (int i = 0; i < 5; i++) {
                 String cp = store.checkpoint(Long.MAX_VALUE);
@@ -131,28 +125,23 @@ public class StandbyTestIT extends TestB
                 assertTrue(secondary.getStats().getApproximateSize() > 
blobSize);
             }
 
-        } finally {
-            serverSync.close();
-            clientSync.close();
-        }
-
-        assertTrue(primary.getStats().getApproximateSize() > blobSize);
-        assertTrue(secondary.getStats().getApproximateSize() > blobSize);
+            assertTrue(primary.getStats().getApproximateSize() > blobSize);
+            assertTrue(secondary.getStats().getApproximateSize() > blobSize);
 
-        PropertyState ps = secondary.getHead().getChildNode("root")
-                .getChildNode("server").getProperty("testBlob");
-        assertNotNull(ps);
-        assertEquals(Type.BINARY.tag(), ps.getType().tag());
-        Blob b = ps.getValue(Type.BINARY);
-        assertEquals(blobSize, b.length());
-
-        byte[] testData = new byte[blobSize];
-        ByteStreams.readFully(b.getNewStream(), testData);
-        assertArrayEquals(data, testData);
+            PropertyState ps = secondary.getHead().getChildNode("root")
+                    .getChildNode("server").getProperty("testBlob");
+            assertNotNull(ps);
+            assertEquals(Type.BINARY.tag(), ps.getType().tag());
+            Blob b = ps.getValue(Type.BINARY);
+            assertEquals(blobSize, b.length());
+
+            byte[] testData = new byte[blobSize];
+            ByteStreams.readFully(b.getNewStream(), testData);
+            assertArrayEquals(data, testData);
+        }
     }
 
-    private static byte[] addTestContent(NodeStore store, String child, int 
size, int dataNodes)
-            throws CommitFailedException, IOException {
+    private static byte[] addTestContent(NodeStore store, String child, int 
size, int dataNodes) throws Exception {
         NodeBuilder builder = store.getRoot().builder();
         NodeBuilder content = builder.child(child);
         content.setProperty("ts", System.currentTimeMillis());


Reply via email to