Package org.apache.lucene.tests.index
Class BaseCompoundFormatTestCase
java.lang.Object
org.junit.Assert
org.apache.lucene.tests.util.LuceneTestCase
org.apache.lucene.tests.index.BaseCompoundFormatTestCase
Abstract class to do basic tests for a compound format. NOTE: This test focuses on the compound
impl, nothing else. The [stretch] goal is for this test to be so thorough in testing a new
CompoundFormat that if this test passes, then all Lucene/Solr tests should also pass. Ie, if
there is some bug in a given CompoundFormat that this test fails to catch then this test needs to
be improved!
-
Nested Class Summary
Nested classes/interfaces inherited from class org.apache.lucene.tests.util.LuceneTestCase
LuceneTestCase.AwaitsFix, LuceneTestCase.BadApple, LuceneTestCase.Monster, LuceneTestCase.Nightly, LuceneTestCase.SuppressCodecs, LuceneTestCase.SuppressFileSystems, LuceneTestCase.SuppressFsync, LuceneTestCase.SuppressReproduceLine, LuceneTestCase.SuppressSysoutChecks, LuceneTestCase.SuppressTempFileChecks, LuceneTestCase.ThrowingConsumer<T>, LuceneTestCase.ThrowingRunnable, LuceneTestCase.Weekly
-
Field Summary
Fields inherited from class org.apache.lucene.tests.util.LuceneTestCase
assertsAreEnabled, classRules, DEFAULT_LINE_DOCS_FILE, INFOSTREAM, JENKINS_LARGE_LINE_DOCS_FILE, LEAVE_TEMPORARY, MAYBE_CACHE_POLICY, RANDOM_MULTIPLIER, ruleChain, suiteFailureMarker, SYSPROP_AWAITSFIX, SYSPROP_BADAPPLES, SYSPROP_FAILFAST, SYSPROP_MAXFAILURES, SYSPROP_MONSTER, SYSPROP_NIGHTLY, SYSPROP_WEEKLY, TEST_ASSERTS_ENABLED, TEST_AWAITSFIX, TEST_BADAPPLES, TEST_CODEC, TEST_DIRECTORY, TEST_DOCVALUESFORMAT, TEST_LINE_DOCS_FILE, TEST_MONSTER, TEST_NIGHTLY, TEST_POSTINGSFORMAT, TEST_THROTTLING, TEST_WEEKLY, VERBOSE
-
Constructor Summary
-
Method Summary
Modifier and TypeMethodDescriptionprotected void
addRandomFields
(Document doc) Add random fields to the provided document.protected final <D extends Directory>
DSet the created version of the givenDirectory
and return it.protected static void
assertEqualArrays
(String msg, byte[] expected, byte[] test, int start, int len) protected static void
assertSameSeekBehavior
(String msg, IndexInput expected, IndexInput actual) protected static void
assertSameStreams
(String msg, IndexInput expected, IndexInput test) protected static void
assertSameStreams
(String msg, IndexInput expected, IndexInput actual, long seekTo) protected static Directory
createLargeCFS
(Directory dir) Setup a large compound file with a number of components, each of which is a sequential file (so that we can easily tell that we are reading in the right byte).protected static void
createRandomFile
(Directory dir, String name, int size, byte[] segId) Creates a file of the specified size with random data.protected static void
createSequenceFile
(Directory dir, String name, byte start, int size, byte[] segID, String segSuffix) Creates a file of the specified size with sequential data.protected Collection
<String> Return the list of extensions that should be excluded from byte counts when comparing indices that store the same content.protected abstract Codec
getCodec()
Returns the codec to run tests againstprotected int
Returns the major version that this codec is compatible with.protected final DirectoryReader
protected boolean
protected static SegmentInfo
newSegmentInfo
(Directory dir, String name) Returns a new fake segmentvoid
setUp()
For subclasses to override.protected boolean
Returnsfalse
if only the regular fields reader should be tested, andtrue
if only the merge instance should be tested.void
tearDown()
For subclasses to override.void
void
This test is a best effort at verifying that checkIntegrity doesn't miss any files.void
void
void
void
void
void
void
void
void
void
void
void
The purpose of this test is to make sure that bulk merge doesn't accumulate useless data over runs.void
void
Calls close multiple times on closeable codec apisvoid
void
This test opens two files from a compound stream and verifies that their file positions are independent of each other.void
This test opens two files from a compound stream and verifies that their file positions are independent of each other.void
Tests exception handling on write and openInput/createOutputvoid
This test creates a compound file based on a large number of files of various length.void
void
void
void
This test creates compound file based on a single file.void
void
This test creates compound file based on two files.Methods inherited from class org.apache.lucene.tests.util.LuceneTestCase
addVirusChecker, assertDeletedDocsEquals, assertDocsAndPositionsEnumEquals, assertDocsEnumEquals, assertDocsSkippingEquals, assertDocValuesEquals, assertDocValuesEquals, assertFieldInfosEquals, assertNormsEquals, assertPointsEquals, assertPositionsSkippingEquals, assertReaderEquals, assertReaderStatisticsEquals, assertStoredFieldEquals, assertStoredFieldsEquals, assertTermsEnumEquals, assertTermsEquals, assertTermsEquals, assertTermsStatisticsEquals, assertTermStatsEquals, assertTermVectorsEquals, asSet, assumeFalse, assumeNoException, assumeTrue, assumeWorkingMMapOnWindows, atLeast, atLeast, callStackContains, callStackContains, callStackContainsAnyOf, closeAfterSuite, closeAfterTest, collate, createTempDir, createTempDir, createTempFile, createTempFile, dumpArray, dumpIterator, ensureSaneIWCOnNightly, expectThrows, expectThrows, expectThrows, expectThrowsAnyOf, expectThrowsAnyOf, getDataInputStream, getDataPath, getJvmForkArguments, getOnlyLeafReader, getTestClass, getTestName, hasWorkingMMapOnWindows, isTestThread, localeForLanguageTag, maybeChangeLiveIndexWriterConfig, maybeWrapReader, newAlcoholicMergePolicy, newAlcoholicMergePolicy, newBytesRef, newBytesRef, newBytesRef, newBytesRef, newBytesRef, newBytesRef, newDirectory, newDirectory, newDirectory, newDirectory, newDirectory, newField, newField, newFSDirectory, newFSDirectory, newIndexWriterConfig, newIndexWriterConfig, newIndexWriterConfig, newIOContext, newIOContext, newLogMergePolicy, newLogMergePolicy, newLogMergePolicy, newLogMergePolicy, newLogMergePolicy, newMaybeVirusCheckingDirectory, newMaybeVirusCheckingFSDirectory, newMergePolicy, newMergePolicy, newMergePolicy, newMockDirectory, newMockDirectory, newMockDirectory, newMockFSDirectory, newMockFSDirectory, newSearcher, newSearcher, newSearcher, newSearcher, newSnapshotIndexWriterConfig, newStringField, newStringField, newStringField, newStringField, newTextField, newTextField, newTieredMergePolicy, newTieredMergePolicy, overrideDefaultQueryCache, overrideTestDefaultQueryCache, random, randomLocale, randomTimeZone, rarely, rarely, replaceMaxFailureRule, resetDefaultQueryCache, restoreCPUCoreCount, restoreIndexWriterMaxDocs, runWithRestrictedPermissions, setIndexWriterMaxDocs, setupCPUCoreCount, setUpExecutorService, shutdownExecutorService, slowFileExists, usually, usually, wrapReader
Methods inherited from class org.junit.Assert
assertArrayEquals, assertArrayEquals, assertArrayEquals, assertArrayEquals, assertArrayEquals, assertArrayEquals, assertArrayEquals, assertArrayEquals, assertArrayEquals, assertArrayEquals, assertArrayEquals, assertArrayEquals, assertArrayEquals, assertArrayEquals, assertArrayEquals, assertArrayEquals, assertArrayEquals, assertArrayEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertFalse, assertFalse, assertNotEquals, assertNotEquals, assertNotEquals, assertNotEquals, assertNotEquals, assertNotEquals, assertNotEquals, assertNotEquals, assertNotNull, assertNotNull, assertNotSame, assertNotSame, assertNull, assertNull, assertSame, assertSame, assertThat, assertThat, assertThrows, assertThrows, assertTrue, assertTrue, fail, fail
-
Constructor Details
-
BaseCompoundFormatTestCase
public BaseCompoundFormatTestCase()
-
-
Method Details
-
testEmpty
- Throws:
IOException
-
testSingleFile
This test creates compound file based on a single file. Files of different sizes are tested: 0, 1, 10, 100 bytes.- Throws:
IOException
-
testTwoFiles
This test creates compound file based on two files.- Throws:
IOException
-
testDoubleClose
- Throws:
IOException
-
testPassIOContext
- Throws:
IOException
-
testLargeCFS
- Throws:
IOException
-
testListAll
- Throws:
Exception
-
testCreateOutputDisabled
- Throws:
IOException
-
testDeleteFileDisabled
- Throws:
IOException
-
testRenameFileDisabled
- Throws:
IOException
-
testSyncDisabled
- Throws:
IOException
-
testMakeLockDisabled
- Throws:
IOException
-
testRandomFiles
This test creates a compound file based on a large number of files of various length. The file content is generated randomly. The sizes range from 0 to 1Mb. Some of the sizes are selected to test the buffering logic in the file reading code. For this the chunk variable is set to the length of the buffer used internally by the compound file logic.- Throws:
IOException
-
testManySubFiles
- Throws:
IOException
-
testClonedStreamsClosing
- Throws:
IOException
-
testRandomAccess
This test opens two files from a compound stream and verifies that their file positions are independent of each other.- Throws:
IOException
-
testRandomAccessClones
This test opens two files from a compound stream and verifies that their file positions are independent of each other.- Throws:
IOException
-
testFileNotFound
- Throws:
IOException
-
testReadPastEOF
- Throws:
IOException
-
newSegmentInfo
Returns a new fake segment -
createRandomFile
protected static void createRandomFile(Directory dir, String name, int size, byte[] segId) throws IOException Creates a file of the specified size with random data.- Throws:
IOException
-
createSequenceFile
protected static void createSequenceFile(Directory dir, String name, byte start, int size, byte[] segID, String segSuffix) throws IOException Creates a file of the specified size with sequential data. The first byte is written as the start byte provided. All subsequent bytes are computed as start + offset where offset is the number of the byte.- Throws:
IOException
-
assertSameStreams
protected static void assertSameStreams(String msg, IndexInput expected, IndexInput test) throws IOException - Throws:
IOException
-
assertSameStreams
protected static void assertSameStreams(String msg, IndexInput expected, IndexInput actual, long seekTo) throws IOException - Throws:
IOException
-
assertSameSeekBehavior
protected static void assertSameSeekBehavior(String msg, IndexInput expected, IndexInput actual) throws IOException - Throws:
IOException
-
assertEqualArrays
protected static void assertEqualArrays(String msg, byte[] expected, byte[] test, int start, int len) -
createLargeCFS
Setup a large compound file with a number of components, each of which is a sequential file (so that we can easily tell that we are reading in the right byte). The methods sets up 20 files - _123.0 to _123.19, the size of each file is 1000 bytes.- Throws:
IOException
-
addRandomFields
Add random fields to the provided document. -
testMergeStability
The purpose of this test is to make sure that bulk merge doesn't accumulate useless data over runs.- Throws:
Exception
-
testResourceNameInsideCompoundFile
- Throws:
Exception
-
testMissingCodecHeadersAreCaught
- Throws:
Exception
-
testCorruptFilesAreCaught
- Throws:
Exception
-
testCheckIntegrity
- Throws:
IOException
-
getCodec
Returns the codec to run tests against -
getCreatedVersionMajor
protected int getCreatedVersionMajor()Returns the major version that this codec is compatible with. -
applyCreatedVersionMajor
Set the created version of the givenDirectory
and return it.- Throws:
IOException
-
setUp
Description copied from class:LuceneTestCase
For subclasses to override. Overrides must callsuper.setUp()
.- Overrides:
setUp
in classLuceneTestCase
- Throws:
Exception
-
tearDown
Description copied from class:LuceneTestCase
For subclasses to override. Overrides must callsuper.tearDown()
.- Overrides:
tearDown
in classLuceneTestCase
- Throws:
Exception
-
excludedExtensionsFromByteCounts
Return the list of extensions that should be excluded from byte counts when comparing indices that store the same content. -
mergeIsStable
protected boolean mergeIsStable() -
testMultiClose
Calls close multiple times on closeable codec apis- Throws:
IOException
-
testRandomExceptions
Tests exception handling on write and openInput/createOutput- Throws:
Exception
-
shouldTestMergeInstance
protected boolean shouldTestMergeInstance()Returnsfalse
if only the regular fields reader should be tested, andtrue
if only the merge instance should be tested. -
maybeWrapWithMergingReader
- Throws:
IOException
-
testCheckIntegrityReadsAllBytes
This test is a best effort at verifying that checkIntegrity doesn't miss any files. It tests that the combination of opening a reader and calling checkIntegrity on it reads all bytes of all files.- Throws:
Exception
-