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 ad...@apache.org on 2017/02/24 14:48:53 UTC
svn commit: r1784281 - in
/jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/file/tooling:
CheckInvalidRepositoryTest.java CheckRepositoryTestBase.java
Author: adulceanu
Date: Fri Feb 24 14:48:53 2017
New Revision: 1784281
URL: http://svn.apache.org/viewvc?rev=1784281&view=rev
Log:
OAK-5600 - Test coverage for CheckCommand
Created a more complex invalid revision
Added new test for a broken partial path
Modified:
jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/file/tooling/CheckInvalidRepositoryTest.java
jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/file/tooling/CheckRepositoryTestBase.java
Modified: jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/file/tooling/CheckInvalidRepositoryTest.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/file/tooling/CheckInvalidRepositoryTest.java?rev=1784281&r1=1784280&r2=1784281&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/file/tooling/CheckInvalidRepositoryTest.java (original)
+++ jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/file/tooling/CheckInvalidRepositoryTest.java Fri Feb 24 14:48:53 2017
@@ -68,11 +68,13 @@ public class CheckInvalidRepositoryTest
assertExpectedOutput(strOut.toString(), Lists.newArrayList("Checked 7 nodes and 21 properties", "Path / is consistent",
"Searched through 2 revisions"));
- assertExpectedOutput(strErr.toString(), Lists.newArrayList("Error while traversing /z"));
+
+ // not sure whether first traversal will fail because of "/a" or "/z"
+ assertExpectedOutput(strErr.toString(), Lists.newArrayList("Error while traversing /"));
}
@Test
- public void testBrokenPathWithoutValidRevision() {
+ public void testPartialBrokenPathWithoutValidRevision() {
StringWriter strOut = new StringWriter();
StringWriter strErr = new StringWriter();
@@ -99,4 +101,34 @@ public class CheckInvalidRepositoryTest
assertExpectedOutput(strOut.toString(), Lists.newArrayList("No good revision found"));
assertExpectedOutput(strErr.toString(), Lists.newArrayList("Error while traversing /z", "Path /z not found"));
}
+
+ @Test
+ public void testPartialBrokenPathWithValidRevision() {
+ StringWriter strOut = new StringWriter();
+ StringWriter strErr = new StringWriter();
+
+ PrintWriter outWriter = new PrintWriter(strOut, true);
+ PrintWriter errWriter = new PrintWriter(strErr, true);
+
+ Set<String> filterPaths = new LinkedHashSet<>();
+ filterPaths.add("/a");
+
+ Check.builder()
+ .withPath(new File(temporaryFolder.getRoot().getAbsolutePath()))
+ .withJournal("journal.log")
+ .withDebugInterval(Long.MAX_VALUE)
+ .withCheckBinaries(true)
+ .withFilterPaths(filterPaths)
+ .withOutWriter(outWriter)
+ .withErrWriter(errWriter)
+ .build()
+ .run();
+
+ outWriter.close();
+ errWriter.close();
+
+ assertExpectedOutput(strOut.toString(), Lists.newArrayList("Checked 1 nodes and 1 properties", "Path /a is consistent",
+ "Searched through 2 revisions"));
+ assertExpectedOutput(strErr.toString(), Lists.newArrayList("Error while traversing /a"));
+ }
}
Modified: jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/file/tooling/CheckRepositoryTestBase.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/file/tooling/CheckRepositoryTestBase.java?rev=1784281&r1=1784280&r2=1784281&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/file/tooling/CheckRepositoryTestBase.java (original)
+++ jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/file/tooling/CheckRepositoryTestBase.java Fri Feb 24 14:48:53 2017
@@ -20,6 +20,7 @@ package org.apache.jackrabbit.oak.segmen
import java.io.ByteArrayInputStream;
import java.io.File;
+import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;
import java.io.RandomAccessFile;
@@ -88,15 +89,29 @@ public class CheckRepositoryTestBase {
SegmentNodeStore nodeStore = SegmentNodeStoreBuilders.builder(fileStore).build();
NodeBuilder builder = nodeStore.getRoot().builder();
+ // add a new child "z"
addChildWithBlobProperties(nodeStore, builder, "z", 5);
+
+ // add a new property value to existing child "a"
+ addChildWithBlobProperties(nodeStore, builder, "a", 1);
NodeState after = nodeStore.merge(builder, EmptyHook.INSTANCE, CommitInfo.EMPTY);
// get record number to corrupt (NODE record for "z")
SegmentNodeState child = (SegmentNodeState) after.getChildNode("z");
- int recordNumber = child.getRecordId().getRecordNumber();
+ int zRecordNumber = child.getRecordId().getRecordNumber();
+
+ // get record number to corrupt (NODE record for "a")
+ child = (SegmentNodeState) after.getChildNode("a");
+ int aRecordNumber = child.getRecordId().getRecordNumber();
+
fileStore.close();
+ corruptRecord(zRecordNumber);
+ corruptRecord(aRecordNumber);
+ }
+
+ private void corruptRecord(int recordNumber) throws FileNotFoundException, IOException {
//since the filestore was closed after writing the first revision, we're always dealing with the 2nd tar file
RandomAccessFile file = new RandomAccessFile(new File(temporaryFolder.getRoot(),"data00001a.tar"), "rw");