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 am...@apache.org on 2022/11/08 04:03:14 UTC
[jackrabbit-oak] branch trunk updated: OAK-9984: FlatFileSplitterTest reliably failing (#745)
This is an automated email from the ASF dual-hosted git repository.
amitj pushed a commit to branch trunk
in repository https://gitbox.apache.org/repos/asf/jackrabbit-oak.git
The following commit(s) were added to refs/heads/trunk by this push:
new 003aa69836 OAK-9984: FlatFileSplitterTest reliably failing (#745)
003aa69836 is described below
commit 003aa698363c1c35c66a9dd0028744f4c67179fa
Author: Amit Jain <am...@apache.org>
AuthorDate: Tue Nov 8 09:33:07 2022 +0530
OAK-9984: FlatFileSplitterTest reliably failing (#745)
- Replace file length comparisons with file content comparison
- Creating temporary files in the ./target directory
---
.../document/flatfile/FlatFileSplitterTest.java | 66 +++++++++++++++++-----
.../oak/index/DocumentStoreIndexerIT.java | 10 ++++
2 files changed, 61 insertions(+), 15 deletions(-)
diff --git a/oak-run-commons/src/test/java/org/apache/jackrabbit/oak/index/indexer/document/flatfile/FlatFileSplitterTest.java b/oak-run-commons/src/test/java/org/apache/jackrabbit/oak/index/indexer/document/flatfile/FlatFileSplitterTest.java
index 0e95be6eb2..0824e92bd6 100644
--- a/oak-run-commons/src/test/java/org/apache/jackrabbit/oak/index/indexer/document/flatfile/FlatFileSplitterTest.java
+++ b/oak-run-commons/src/test/java/org/apache/jackrabbit/oak/index/indexer/document/flatfile/FlatFileSplitterTest.java
@@ -25,6 +25,7 @@ import org.apache.jackrabbit.oak.OakInitializer;
import org.apache.jackrabbit.oak.api.PropertyState;
import org.apache.jackrabbit.oak.api.Type;
import org.apache.jackrabbit.oak.commons.Compression;
+import org.apache.jackrabbit.oak.commons.FileIOUtils;
import org.apache.jackrabbit.oak.index.indexer.document.IndexerConfiguration;
import org.apache.jackrabbit.oak.index.indexer.document.NodeStateEntry;
import org.apache.jackrabbit.oak.plugins.index.search.IndexDefinition;
@@ -38,6 +39,7 @@ import org.apache.jackrabbit.oak.spi.blob.MemoryBlobStore;
import org.apache.jackrabbit.oak.spi.commit.CompositeEditorProvider;
import org.apache.jackrabbit.oak.spi.commit.EditorHook;
import org.apache.jackrabbit.oak.spi.state.NodeStore;
+import org.junit.Before;
import org.junit.Rule;
import org.junit.Test;
import org.junit.contrib.java.lang.system.RestoreSystemProperties;
@@ -49,17 +51,20 @@ import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.IOException;
+import java.io.InputStream;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
import java.nio.charset.StandardCharsets;
import java.nio.file.Files;
import java.util.ArrayList;
import java.util.Arrays;
+import java.util.Collections;
import java.util.HashSet;
import java.util.List;
import java.util.Scanner;
import java.util.Set;
import java.util.Stack;
+import java.util.stream.Collectors;
import java.util.stream.Stream;
import static org.apache.jackrabbit.JcrConstants.JCR_PRIMARYTYPE;
@@ -75,10 +80,19 @@ public class FlatFileSplitterTest {
private MemoryBlobStore store = new MemoryBlobStore();
private NodeStateEntryReader entryReader = new NodeStateEntryReader(store);
@Rule
- public TemporaryFolder temporaryFolder = new TemporaryFolder();
+ public TemporaryFolder temporaryFolder = new TemporaryFolder(new File("target"));
@Rule
public final TestRule restoreSystemProperties = new RestoreSystemProperties();
-
+
+ @Before
+ public void setup() throws IOException {
+ try {
+ System.setProperty("java.io.tmpdir", temporaryFolder.newFolder("systemp").getAbsolutePath());
+ } catch (IOException e) {
+ throw e;
+ }
+ }
+
@Test
public void ntBaseSkipSplit() throws IOException, IllegalAccessException {
Set<String> splitNodeTypeNames = new HashSet<>();
@@ -88,7 +102,8 @@ public class FlatFileSplitterTest {
List<File> flatFileList = splitter.split(false);
assertEquals(1, flatFileList.size());
- assertEquals(flatFile, flatFileList.get(0));
+ assertEquals(readAllFilesAsSet(Collections.singletonList(flatFile)),
+ readAllFilesAsSet(flatFileList));
}
@Test
@@ -99,7 +114,8 @@ public class FlatFileSplitterTest {
List<File> flatFileList = splitter.split(false);
assertEquals(1, flatFileList.size());
- assertEquals(flatFile, flatFileList.get(0));
+ assertEquals(readAllFilesAsSet(Collections.singletonList(flatFile)),
+ readAllFilesAsSet(flatFileList));
}
@Test
@@ -111,7 +127,8 @@ public class FlatFileSplitterTest {
List<File> flatFileList = splitter.split(false);
assertEquals(1, flatFileList.size());
- assertEquals(flatFile.length(), flatFileList.get(0).length());
+ assertEquals(readAllFilesAsSet(Collections.singletonList(flatFile)),
+ readAllFilesAsSet(flatFileList));
}
@Test
@@ -122,10 +139,10 @@ public class FlatFileSplitterTest {
FileUtils.copyFile(flatFile, copied);
FlatFileSplitter splitter = createTestSplitter(copied, 0, Integer.MAX_VALUE, false, splitNodeTypeNames);
- long originalSize = flatFile.length();
List<File> flatFileList = splitter.split();
- assertEquals(originalSize, getTotalSize(flatFileList));
+ assertEquals(readAllFilesAsSet(Collections.singletonList(flatFile)),
+ readAllFilesAsSet(flatFileList));
assertTrue(flatFile.exists());
assertTrue(!copied.exists());
}
@@ -143,7 +160,8 @@ public class FlatFileSplitterTest {
assertEquals(1, countLines(flatFileList.get(0)));
assertEquals(1, countLines(flatFileList.get(1)));
assertEquals(1, countLines(flatFileList.get(2)));
- assertEquals(flatFile.length(), getTotalSize(flatFileList));
+ assertEquals(readAllFilesAsSet(Collections.singletonList(flatFile)),
+ readAllFilesAsSet(flatFileList));
}
@Test
@@ -160,7 +178,8 @@ public class FlatFileSplitterTest {
assertEquals("no-split", startLineType(flatFileList.get(0)));
assertEquals(4, countLines(flatFileList.get(1)));
assertEquals("no-split", startLineType(flatFileList.get(1)));
- assertEquals(flatFile.length(), getTotalSize(flatFileList));
+ assertEquals(readAllFilesAsSet(Collections.singletonList(flatFile)),
+ readAllFilesAsSet(flatFileList));
}
@Test
@@ -181,7 +200,8 @@ public class FlatFileSplitterTest {
assertEquals("split", startLineType(flatFileList.get(2)));
assertEquals(2, countLines(flatFileList.get(3)));
assertEquals("no-split", startLineType(flatFileList.get(3)));
- assertEquals(flatFile.length(), getTotalSize(flatFileList));
+ assertEquals(readAllFilesAsSet(Collections.singletonList(flatFile)),
+ readAllFilesAsSet(flatFileList));
}
@Test
@@ -201,7 +221,8 @@ public class FlatFileSplitterTest {
assertEquals("no-split-2", startLineType(flatFileList.get(1)));
assertEquals(1, countLines(flatFileList.get(2)));
assertEquals(1, countLines(flatFileList.get(3)));
- assertEquals(flatFile.length(), getTotalSize(flatFileList));
+ assertEquals(readAllFilesAsSet(Collections.singletonList(flatFile)),
+ readAllFilesAsSet(flatFileList));
}
@Test
@@ -225,7 +246,8 @@ public class FlatFileSplitterTest {
assertEquals("split", startLineType(flatFileList.get(2)));
assertEquals(2, countLines(flatFileList.get(3)));
assertEquals("no-split-4", startLineType(flatFileList.get(3)));
- assertEquals(flatFile.length(), getTotalSize(flatFileList));
+ assertEquals(readAllFilesAsSet(Collections.singletonList(flatFile)),
+ readAllFilesAsSet(flatFileList));
}
@Test
@@ -241,7 +263,8 @@ public class FlatFileSplitterTest {
List<File> flatFileList = splitter.split(false);
assertEquals(expectedSplitSize, flatFileList.size());
- assertEquals(flatFile.length(), getTotalSize(flatFileList));
+ assertEquals(readAllFilesAsSet(Collections.singletonList(flatFile)),
+ readAllFilesAsSet(flatFileList));
assertEquals(startLine(flatFile), startLine(flatFileList.get(0)));
for (int i = 1; i < flatFileList.size(); i++) {
assertEquals(assetNodeType, startLineType(flatFileList.get(i)));
@@ -270,7 +293,8 @@ public class FlatFileSplitterTest {
List<File> flatFileList = splitter.split(false);
assertTrue(expectedSplitSize <= flatFileList.size());
- assertEquals(flatFile.length(), getTotalSize(flatFileList));
+ assertEquals(readAllFilesAsSet(Collections.singletonList(flatFile)),
+ readAllFilesAsSet(flatFileList));
assertEquals(startLineType(flatFile), startLineType(flatFileList.get(0)));
String expectedSplitPoint = "/etc|{\"jcr:primaryType\":\"nam:sling:Folder\"}";
assertEquals(expectedSplitPoint, startLine(flatFileList.get(1)));
@@ -307,7 +331,8 @@ public class FlatFileSplitterTest {
}
assertTrue(expectedSplitSize <= flatFileList.size());
- assertEquals(rawFlatFile.length(), getTotalSize(rawFlatFileList));
+ assertEquals(readAllFilesAsSet(Collections.singletonList(rawFlatFile)),
+ readAllFilesAsSet(rawFlatFileList));
}
@Test
@@ -533,4 +558,15 @@ public class FlatFileSplitterTest {
}
}
}
+
+ private static Set<String> readAllFilesAsSet(List<File> files) {
+ Set<String> set = files.stream().flatMap(file -> {
+ try (InputStream is = Files.newInputStream(file.toPath())) {
+ return FileIOUtils.readStringsAsSet(is, false).stream();
+ } catch (IOException e) {
+ throw new RuntimeException(e);
+ }
+ }).collect(Collectors.toSet());
+ return set;
+ }
}
diff --git a/oak-run/src/test/java/org/apache/jackrabbit/oak/index/DocumentStoreIndexerIT.java b/oak-run/src/test/java/org/apache/jackrabbit/oak/index/DocumentStoreIndexerIT.java
index 685e300bbe..520dfe2e36 100644
--- a/oak-run/src/test/java/org/apache/jackrabbit/oak/index/DocumentStoreIndexerIT.java
+++ b/oak-run/src/test/java/org/apache/jackrabbit/oak/index/DocumentStoreIndexerIT.java
@@ -73,6 +73,7 @@ import org.apache.jackrabbit.oak.spi.whiteboard.Whiteboard;
import org.apache.jackrabbit.oak.stats.StatisticsProvider;
import org.junit.After;
import org.junit.Assume;
+import org.junit.Before;
import org.junit.BeforeClass;
import org.junit.Rule;
import org.junit.Test;
@@ -118,6 +119,15 @@ public class DocumentStoreIndexerIT extends AbstractIndexCommandTest {
}
DocumentNodeStore dns;
+
+ @Before
+ public void setup() throws IOException {
+ try {
+ System.setProperty("java.io.tmpdir", temporaryFolder.newFolder("systemp").getAbsolutePath());
+ } catch (IOException e) {
+ throw e;
+ }
+ }
@After
public void tear() {