Author: mduerig Date: Fri Oct 19 13:15:00 2018 New Revision: 1844342 URL: http://svn.apache.org/viewvc?rev=1844342&view=rev Log: OAK-7838: oak-run check crashes JVM @Ignored test case
Modified: jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/file/tooling/CheckInvalidRepositoryTest.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=1844342&r1=1844341&r2=1844342&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 Oct 19 13:15:00 2018 @@ -19,15 +19,22 @@ package org.apache.jackrabbit.oak.segment.file.tooling; import java.io.File; +import java.io.IOException; import java.io.PrintWriter; import java.io.StringWriter; import java.util.HashSet; import java.util.LinkedHashSet; import java.util.Set; +import com.google.common.collect.ImmutableSet; import com.google.common.collect.Lists; +import org.apache.commons.io.FileUtils; +import org.apache.jackrabbit.oak.segment.file.JournalEntry; +import org.apache.jackrabbit.oak.segment.file.JournalReader; +import org.apache.jackrabbit.oak.segment.file.tar.LocalJournalFile; import org.apache.jackrabbit.oak.segment.tool.Check; import org.junit.Before; +import org.junit.Ignore; import org.junit.Test; /** @@ -210,4 +217,46 @@ public class CheckInvalidRepositoryTest assertExpectedOutput(strErr.toString(), Lists.newArrayList( "Error while traversing /b: java.lang.IllegalArgumentException: Segment reference out of bounds")); } + + @Ignore("OAK-7838") + @Test + public void testLargeJournal() throws IOException { + StringWriter strOut = new StringWriter(); + StringWriter strErr = new StringWriter(); + + PrintWriter outWriter = new PrintWriter(strOut, true); + PrintWriter errWriter = new PrintWriter(strErr, true); + + File segmentStoreFolder = new File(temporaryFolder.getRoot().getAbsolutePath()); + File journalFile = new File(segmentStoreFolder, "journal.log"); + File largeJournalFile = temporaryFolder.newFile("journal.log.large"); + + JournalReader journalReader = new JournalReader(new LocalJournalFile(journalFile)); + JournalEntry journalEntry = journalReader.next(); + + String journalLine = journalEntry.getRevision() + " root " + journalEntry.getTimestamp() + "\n"; + + for (int k = 0; k < 10000; k++) { + FileUtils.writeStringToFile(largeJournalFile, journalLine, true); + } + + Check.builder() + .withPath(segmentStoreFolder) + .withJournal("journal.log.large") + .withDebugInterval(Long.MAX_VALUE) + .withCheckBinaries(true) + .withCheckHead(true) + .withFilterPaths(ImmutableSet.of("/")) + .withCheckpoints(checkpoints) + .withOutWriter(outWriter) + .withErrWriter(errWriter) + .build() + .run(); + + outWriter.close(); + errWriter.close(); + + assertExpectedOutput(strOut.toString(), Lists.newArrayList("No good revision found")); + } + }