Ewocker commented on a change in pull request #508: URL: https://github.com/apache/jackrabbit-oak/pull/508#discussion_r830376072
########## 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: filename is 1, 2, 3, 4, 5, 6... to 13. filename equals to the number of line in the file. but index starts with 0. -- 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: dev-unsubscr...@jackrabbit.apache.org For queries about this service, please contact Infrastructure at: us...@infra.apache.org