You are viewing a plain text version of this content. The canonical link for it is here.
Posted to oak-commits@jackrabbit.apache.org by fr...@apache.org on 2017/08/31 14:10:04 UTC

svn commit: r1806796 - /jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/standby/benchmark/BenchmarkBase.java

Author: frm
Date: Thu Aug 31 14:10:03 2017
New Revision: 1806796

URL: http://svn.apache.org/viewvc?rev=1806796&view=rev
Log:
OAK-6602 - Simplify standby resources initialization in BenchmarkBase

Modified:
    jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/standby/benchmark/BenchmarkBase.java

Modified: jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/standby/benchmark/BenchmarkBase.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/standby/benchmark/BenchmarkBase.java?rev=1806796&r1=1806795&r2=1806796&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/standby/benchmark/BenchmarkBase.java (original)
+++ jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/standby/benchmark/BenchmarkBase.java Thu Aug 31 14:10:03 2017
@@ -20,6 +20,7 @@ package org.apache.jackrabbit.oak.segmen
 
 import static org.apache.jackrabbit.oak.segment.file.FileStoreBuilder.fileStoreBuilder;
 
+import java.io.Closeable;
 import java.io.File;
 import java.io.IOException;
 import java.nio.file.Files;
@@ -31,69 +32,84 @@ import com.google.common.io.Closer;
 import org.apache.commons.io.FileUtils;
 import org.apache.jackrabbit.oak.commons.concurrent.ExecutorCloser;
 import org.apache.jackrabbit.oak.segment.file.FileStore;
-import org.apache.jackrabbit.oak.segment.standby.client.StandbyClientSync;
 import org.apache.jackrabbit.oak.stats.DefaultStatisticsProvider;
 
 class BenchmarkBase {
 
-    private static File createTmpTargetDir(String name) throws IOException {
-        return Files.createTempDirectory(Paths.get("target"), name).toFile();
-    }
+    private static class TemporaryFolder implements Closeable {
 
-    private Closer closer;
+        private final File folder;
 
-    FileStore primaryStore;
-
-    FileStore standbyStore;
+        TemporaryFolder(String prefix) throws IOException {
+            folder = Files.createTempDirectory(Paths.get("target"), prefix).toFile();
+        }
 
-    void setUpServerAndClient() throws Exception {
-        closer = Closer.create();
+        File toFile() {
+            return folder;
+        }
 
-        File primaryDirectory = createTmpTargetDir("primary-");
-        closer.register(() -> FileUtils.deleteDirectory(primaryDirectory));
+        @Override
+        public void close() throws IOException {
+            FileUtils.deleteDirectory(folder);
+        }
 
-        ScheduledExecutorService primaryExecutor = Executors.newSingleThreadScheduledExecutor();
-        closer.register(new ExecutorCloser(primaryExecutor));
+    }
 
-        primaryStore = setupPrimary(primaryDirectory, primaryExecutor);
-        closer.register(primaryStore);
+    private static class TemporaryExecutor implements Closeable {
 
-        File standbyDirectory = createTmpTargetDir("standby-");
-        closer.register(() -> FileUtils.deleteDirectory(standbyDirectory));
+        private final ScheduledExecutorService executor;
 
-        ScheduledExecutorService standbyExecutor = Executors.newSingleThreadScheduledExecutor();
-        closer.register(new ExecutorCloser(standbyExecutor));
+        TemporaryExecutor() {
+            executor = Executors.newSingleThreadScheduledExecutor();
+        }
 
-        standbyStore = setupStandby(standbyDirectory, standbyExecutor);
-        closer.register(standbyStore);
-    }
+        ScheduledExecutorService toScheduledExecutorService() {
+            return executor;
+        }
 
-    void closeServerAndClient() {
-        try {
-            closer.close();
-        } catch (IOException e) {
-            e.printStackTrace(System.err);
+        @Override
+        public void close() throws IOException {
+            new ExecutorCloser(executor).close();
         }
+
     }
 
     private static FileStore newFileStore(File directory, ScheduledExecutorService executor) throws Exception {
         return fileStoreBuilder(directory)
-                .withMaxFileSize(1)
-                .withMemoryMapping(false)
-                .withNodeDeduplicationCacheSize(1)
-                .withSegmentCacheSize(0)
-                .withStringCacheSize(0)
-                .withTemplateCacheSize(0)
-                .withStatisticsProvider(new DefaultStatisticsProvider(executor))
-                .build();
+            .withMaxFileSize(1)
+            .withMemoryMapping(false)
+            .withNodeDeduplicationCacheSize(1)
+            .withSegmentCacheSize(0)
+            .withStringCacheSize(0)
+            .withTemplateCacheSize(0)
+            .withStatisticsProvider(new DefaultStatisticsProvider(executor))
+            .build();
     }
 
-    private FileStore setupPrimary(File directory, ScheduledExecutorService executor) throws Exception {
-        return newFileStore(directory, executor);
+    private Closer closer;
+
+    FileStore primaryStore;
+
+    FileStore standbyStore;
+
+    void setUpServerAndClient() throws Exception {
+        closer = Closer.create();
+
+        File primaryDirectory = closer.register(new TemporaryFolder("primary-")).toFile();
+        ScheduledExecutorService primaryExecutor = closer.register(new TemporaryExecutor()).toScheduledExecutorService();
+        primaryStore = closer.register(newFileStore(primaryDirectory, primaryExecutor));
+
+        File standbyDirectory = closer.register(new TemporaryFolder("standby-")).toFile();
+        ScheduledExecutorService standbyExecutor = closer.register(new TemporaryExecutor()).toScheduledExecutorService();
+        standbyStore = closer.register(newFileStore(standbyDirectory, standbyExecutor));
     }
 
-    private FileStore setupStandby(File directory, ScheduledExecutorService executor) throws Exception {
-        return newFileStore(directory, executor);
+    void closeServerAndClient() {
+        try {
+            closer.close();
+        } catch (IOException e) {
+            e.printStackTrace(System.err);
+        }
     }
 
 }