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);
+        }
     }
 
 }


Reply via email to