diff --git oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/standby/DataStoreTestBase.java oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/standby/DataStoreTestBase.java index 59a725c..7e7716a 100644 --- oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/standby/DataStoreTestBase.java +++ oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/standby/DataStoreTestBase.java @@ -19,6 +19,7 @@ package org.apache.jackrabbit.oak.segment.standby; +import static java.util.concurrent.Executors.newSingleThreadScheduledExecutor; import static org.junit.Assert.assertArrayEquals; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertFalse; @@ -29,6 +30,7 @@ import java.io.ByteArrayInputStream; import java.io.File; import java.io.IOException; import java.util.Random; +import java.util.concurrent.ScheduledExecutorService; import org.apache.jackrabbit.core.data.FileDataStore; import org.apache.jackrabbit.oak.api.Blob; @@ -46,6 +48,7 @@ import org.apache.jackrabbit.oak.spi.commit.CommitInfo; import org.apache.jackrabbit.oak.spi.commit.EmptyHook; import org.apache.jackrabbit.oak.spi.state.NodeBuilder; import org.apache.jackrabbit.oak.spi.state.NodeStore; +import org.apache.jackrabbit.oak.stats.DefaultStatisticsProvider; import org.junit.Before; import org.junit.Ignore; import org.junit.Test; @@ -61,7 +64,7 @@ public class DataStoreTestBase extends TestBase { setUpServerAndClient(); } - protected FileStore setupFileDataStore(File d, String path) throws Exception { + protected FileStore setupFileDataStore(File d, String path, ScheduledExecutorService executor) throws Exception { FileDataStore fds = new FileDataStore(); fds.setMinRecordLength(4092); fds.init(path); @@ -74,6 +77,7 @@ public class DataStoreTestBase extends TestBase { .withStringCacheSize(0) .withTemplateCacheSize(0) .withBlobStore(blobStore) + .withStatisticsProvider(new DefaultStatisticsProvider(executor)) .build(); } diff --git oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/standby/ExternalPrivateStoreIT.java oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/standby/ExternalPrivateStoreIT.java index 8e74d3b..ab614ad 100644 --- oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/standby/ExternalPrivateStoreIT.java +++ oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/standby/ExternalPrivateStoreIT.java @@ -22,6 +22,7 @@ import static org.apache.jackrabbit.oak.segment.SegmentTestUtils.createTmpTarget import java.io.File; import java.io.IOException; +import java.util.concurrent.ScheduledExecutorService; import org.apache.commons.io.FileUtils; import org.apache.jackrabbit.oak.segment.file.FileStore; @@ -32,7 +33,7 @@ public class ExternalPrivateStoreIT extends DataStoreTestBase { private File primaryStore; private File secondaryStore; - + @After public void after() { closeServerAndClient(); @@ -44,15 +45,15 @@ public class ExternalPrivateStoreIT extends DataStoreTestBase { } @Override - protected FileStore setupPrimary(File d) throws Exception { + protected FileStore setupPrimary(File d, ScheduledExecutorService primaryExecutor) throws Exception { primaryStore = createTmpTargetDir("ExternalStoreITPrimary"); - return setupFileDataStore(d, primaryStore.getAbsolutePath()); + return setupFileDataStore(d, primaryStore.getAbsolutePath(), primaryExecutor); } @Override - protected FileStore setupSecondary(File d) throws Exception { + protected FileStore setupSecondary(File d, ScheduledExecutorService secondaryExecutor) throws Exception { secondaryStore = createTmpTargetDir("ExternalStoreITSecondary"); - return setupFileDataStore(d, secondaryStore.getAbsolutePath()); + return setupFileDataStore(d, secondaryStore.getAbsolutePath(), secondaryExecutor); } } diff --git oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/standby/ExternalSharedStoreIT.java oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/standby/ExternalSharedStoreIT.java index e6635b5..d247d2f 100644 --- oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/standby/ExternalSharedStoreIT.java +++ oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/standby/ExternalSharedStoreIT.java @@ -22,6 +22,7 @@ import static org.apache.jackrabbit.oak.segment.SegmentTestUtils.createTmpTarget import java.io.File; import java.io.IOException; +import java.util.concurrent.ScheduledExecutorService; import org.apache.commons.io.FileUtils; import org.apache.jackrabbit.oak.segment.file.FileStore; @@ -45,13 +46,13 @@ public class ExternalSharedStoreIT extends DataStoreTestBase { } @Override - protected FileStore setupPrimary(File d) throws Exception { + protected FileStore setupPrimary(File d, ScheduledExecutorService primaryExecutor) throws Exception { externalStore = createTmpTargetDir("ExternalCommonStoreIT"); - return setupFileDataStore(d, externalStore.getAbsolutePath()); + return setupFileDataStore(d, externalStore.getAbsolutePath(), primaryExecutor); } @Override - protected FileStore setupSecondary(File d) throws Exception { - return setupFileDataStore(d, externalStore.getAbsolutePath()); + protected FileStore setupSecondary(File d, ScheduledExecutorService secondaryExecutor) throws Exception { + return setupFileDataStore(d, externalStore.getAbsolutePath(), secondaryExecutor); } } diff --git oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/standby/FailoverIPRangeTest.java oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/standby/FailoverIPRangeTest.java index 39fd9be..70e44a2 100644 --- oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/standby/FailoverIPRangeTest.java +++ oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/standby/FailoverIPRangeTest.java @@ -111,6 +111,7 @@ public class FailoverIPRangeTest extends TestBase { } @Test + @Ignore("OAK-4708") public void testFailoverCorrectListIPv6() throws Exception { if (!noDualStackSupport) { createTestWithConfig(new String[]{"foobar", "122-126", "::1", "126.0.0.1", "127.0.0.0-127.255.255.255"}, true); @@ -123,6 +124,7 @@ public class FailoverIPRangeTest extends TestBase { } @Test + @Ignore("OAK-4708") public void testFailoverCorrectListUseIPv6() throws Exception { if (!noDualStackSupport) { createTestWithConfig("::1", new String[]{"foobar","127-128", "0:0:0:0:0:0:0:1", "126.0.0.1", "127.0.0.0-127.255.255.255"}, true); diff --git oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/standby/TestBase.java oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/standby/TestBase.java index a0d9616..c247970 100644 --- oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/standby/TestBase.java +++ oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/standby/TestBase.java @@ -25,12 +25,16 @@ import static org.junit.Assume.assumeTrue; import java.io.File; import java.io.IOException; +import java.util.concurrent.Executors; +import java.util.concurrent.ScheduledExecutorService; import org.apache.commons.io.FileUtils; import org.apache.commons.lang3.SystemUtils; import org.apache.jackrabbit.oak.commons.CIHelper; +import org.apache.jackrabbit.oak.commons.concurrent.ExecutorCloser; import org.apache.jackrabbit.oak.segment.file.FileStore; import org.apache.jackrabbit.oak.segment.standby.client.StandbyClient; +import org.apache.jackrabbit.oak.stats.DefaultStatisticsProvider; import org.junit.BeforeClass; public class TestBase { @@ -47,12 +51,15 @@ public class TestBase { File directoryS; FileStore storeS; + ScheduledExecutorService executorS; File directoryC; FileStore storeC; + ScheduledExecutorService executorC; File directoryC2; FileStore storeC2; + ScheduledExecutorService executorC2; /* Java 6 on Windows doesn't support dual IP stacks, so we will skip our IPv6 @@ -68,14 +75,16 @@ public class TestBase { public void setUpServerAndClient() throws Exception { // server directoryS = createTmpTargetDir(getClass().getSimpleName()+"-Server"); - storeS = setupPrimary(directoryS); + executorS = Executors.newSingleThreadScheduledExecutor(); + storeS = setupPrimary(directoryS, executorS); // client directoryC = createTmpTargetDir(getClass().getSimpleName()+"-Client"); - storeC = setupSecondary(directoryC); + executorC = Executors.newSingleThreadScheduledExecutor(); + storeC = setupSecondary(directoryC, executorC); } - private static FileStore newFileStore(File directory) throws Exception { + private static FileStore newFileStore(File directory, ScheduledExecutorService executor) throws Exception { return fileStoreBuilder(directory) .withMaxFileSize(1) .withMemoryMapping(false) @@ -83,19 +92,20 @@ public class TestBase { .withSegmentCacheSize(0) .withStringCacheSize(0) .withTemplateCacheSize(0) + .withStatisticsProvider(new DefaultStatisticsProvider(executor)) .build(); } - protected FileStore setupPrimary(File directory) throws Exception { - return newFileStore(directory); + protected FileStore setupPrimary(File directory, ScheduledExecutorService executor) throws Exception { + return newFileStore(directory, executor); } protected FileStore getPrimary() { return storeS; } - protected FileStore setupSecondary(File directory) throws Exception { - return newFileStore(directoryC); + protected FileStore setupSecondary(File directory, ScheduledExecutorService executor) throws Exception { + return newFileStore(directoryC, executor); } protected FileStore getSecondary() { @@ -106,7 +116,8 @@ public class TestBase { setUpServerAndClient(); directoryC2 = createTmpTargetDir(getClass().getSimpleName()+"-Client2"); - storeC2 = newFileStore(directoryC2); + executorC2 = Executors.newSingleThreadScheduledExecutor(); + storeC2 = newFileStore(directoryC2, executorC2); } public void closeServerAndClient() { @@ -116,6 +127,10 @@ public class TestBase { FileUtils.deleteDirectory(directoryS); FileUtils.deleteDirectory(directoryC); } catch (IOException e) { + // ignore + } finally { + new ExecutorCloser(executorS).close(); + new ExecutorCloser(executorC).close(); } } @@ -125,6 +140,9 @@ public class TestBase { try { FileUtils.deleteDirectory(directoryC2); } catch (IOException e) { + // ignore + } finally { + new ExecutorCloser(executorC2).close(); } }