thomasmueller commented on a change in pull request #508:
URL: https://github.com/apache/jackrabbit-oak/pull/508#discussion_r831845041
##########
File path:
oak-run-commons/src/test/java/org/apache/jackrabbit/oak/index/indexer/document/flatfile/MergeRunnerTest.java
##########
@@ -0,0 +1,176 @@
+package org.apache.jackrabbit.oak.index.indexer.document.flatfile;
+
+import com.google.common.collect.Lists;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+import org.slf4j.event.Level;
+import org.apache.commons.io.FileUtils;
+import org.apache.jackrabbit.oak.commons.junit.LogCustomizer;
+import java.io.File;
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Comparator;
+import java.util.List;
+import java.util.concurrent.BlockingQueue;
+import java.util.concurrent.LinkedBlockingQueue;
+import java.util.concurrent.Phaser;
+
+import static com.google.common.base.Charsets.UTF_8;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertTrue;
+
+public class MergeRunnerTest {
+ private final LogCustomizer lc = LogCustomizer.forLogger(MergeRunner.class)
+ .filter(Level.INFO)
+ .enable(Level.INFO)
+ .create();
+ private final String newline = System.lineSeparator();
+ private final List<File> testFiles = Lists.newArrayList();
+ private String expectedSortedFileStr = "",
+ actualSortedFileStr = "";
+
+ @Before
+ public void setup(){
+ lc.starting();
+ }
+
+ @After
+ public void after() {
+ lc.finished();
+ }
+
+ @Test
+ public void test() throws IOException {
+ lc.starting();
+
System.setProperty(FlatFileNodeStoreBuilder.PROP_MERGE_TASK_BATCH_SIZE, "3");
+
System.setProperty(FlatFileNodeStoreBuilder.PROP_MERGE_THREAD_POOL_SIZE, "1");
+
+ File tmpDir = new File(FileUtils.getTempDirectory(),
Long.toString(System.nanoTime())),
+ mergeDir = new File(tmpDir, "merge"),
+ sortedFile = new File(tmpDir, "sorted-file.json");
+ List<String> expectedLogOutput = Lists.newArrayList(),
+ actualLogOutput = Lists.newArrayList();
+
+ generateTestFiles(tmpDir);
+ assertEquals("expected 13 generated test files", 13, testFiles.size());
+
+ PathElementComparator pathComparator = new PathElementComparator();
+ Comparator<NodeStateHolder> comparator = (e1, e2) ->
pathComparator.compare(e1.getPathElements(), e2.getPathElements());
+ BlockingQueue<File> sortedFiles = new LinkedBlockingQueue<>();
+ Phaser mergePhaser = new Phaser(1);
+ Runnable mergeRunner = new MergeRunner(sortedFile, sortedFiles,
mergeDir, comparator, mergePhaser, false);
+ Thread merger = new Thread(mergeRunner, "test-merger");
+ merger.setDaemon(true);
+
+ // Adding test files in predefined order
+ ArrayList<Integer> filenameOrder = new ArrayList<>(Arrays.asList(7, 1,
11, 9, 8, 6, 12, 4, 5, 13, 3, 2, 10));
+ for (int filename: filenameOrder.subList(0,4)) {
+ sortedFiles.add(testFiles.get(filename-1));
Review comment:
Yes... but it seems complicated to me to add one to each entry in
filenameOrder, and then subtract one. It feels unnecessary.
##########
File path:
oak-run-commons/src/test/java/org/apache/jackrabbit/oak/index/indexer/document/flatfile/MergeRunnerTest.java
##########
@@ -0,0 +1,176 @@
+package org.apache.jackrabbit.oak.index.indexer.document.flatfile;
+
+import com.google.common.collect.Lists;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+import org.slf4j.event.Level;
+import org.apache.commons.io.FileUtils;
+import org.apache.jackrabbit.oak.commons.junit.LogCustomizer;
+import java.io.File;
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Comparator;
+import java.util.List;
+import java.util.concurrent.BlockingQueue;
+import java.util.concurrent.LinkedBlockingQueue;
+import java.util.concurrent.Phaser;
+
+import static com.google.common.base.Charsets.UTF_8;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertTrue;
+
+public class MergeRunnerTest {
+ private final LogCustomizer lc = LogCustomizer.forLogger(MergeRunner.class)
+ .filter(Level.INFO)
+ .enable(Level.INFO)
+ .create();
+ private final String newline = System.lineSeparator();
+ private final List<File> testFiles = Lists.newArrayList();
+ private String expectedSortedFileStr = "",
+ actualSortedFileStr = "";
+
+ @Before
+ public void setup(){
+ lc.starting();
+ }
+
+ @After
+ public void after() {
+ lc.finished();
+ }
+
+ @Test
+ public void test() throws IOException {
+ lc.starting();
+
System.setProperty(FlatFileNodeStoreBuilder.PROP_MERGE_TASK_BATCH_SIZE, "3");
+
System.setProperty(FlatFileNodeStoreBuilder.PROP_MERGE_THREAD_POOL_SIZE, "1");
+
+ File tmpDir = new File(FileUtils.getTempDirectory(),
Long.toString(System.nanoTime())),
+ mergeDir = new File(tmpDir, "merge"),
+ sortedFile = new File(tmpDir, "sorted-file.json");
+ List<String> expectedLogOutput = Lists.newArrayList(),
+ actualLogOutput = Lists.newArrayList();
+
+ generateTestFiles(tmpDir);
+ assertEquals("expected 13 generated test files", 13, testFiles.size());
+
+ PathElementComparator pathComparator = new PathElementComparator();
+ Comparator<NodeStateHolder> comparator = (e1, e2) ->
pathComparator.compare(e1.getPathElements(), e2.getPathElements());
+ BlockingQueue<File> sortedFiles = new LinkedBlockingQueue<>();
+ Phaser mergePhaser = new Phaser(1);
+ Runnable mergeRunner = new MergeRunner(sortedFile, sortedFiles,
mergeDir, comparator, mergePhaser, false);
+ Thread merger = new Thread(mergeRunner, "test-merger");
+ merger.setDaemon(true);
+
+ // Adding test files in predefined order
+ ArrayList<Integer> filenameOrder = new ArrayList<>(Arrays.asList(7, 1,
11, 9, 8, 6, 12, 4, 5, 13, 3, 2, 10));
Review comment:
You can use a random number generator with a seed. In this case, the
sequence is random, but reproducible.
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: [email protected]
For queries about this service, please contact Infrastructure at:
[email protected]