Class BaseCompoundFormatTestCase


public abstract class BaseCompoundFormatTestCase extends BaseIndexFileFormatTestCase
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 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!
  • Constructor Details

    • BaseCompoundFormatTestCase

      public BaseCompoundFormatTestCase()
  • Method Details

    • testEmpty

      public void testEmpty() throws IOException
      Throws:
      IOException
    • testSingleFile

      public void testSingleFile() throws IOException
      This test creates compound file based on a single file. Files of different sizes are tested: 0, 1, 10, 100 bytes.
      Throws:
      IOException
    • testTwoFiles

      public void testTwoFiles() throws IOException
      This test creates compound file based on two files.
      Throws:
      IOException
    • testDoubleClose

      public void testDoubleClose() throws IOException
      Throws:
      IOException
    • testPassIOContext

      public void testPassIOContext() throws IOException
      Throws:
      IOException
    • testLargeCFS

      public void testLargeCFS() throws IOException
      Throws:
      IOException
    • testListAll

      public void testListAll() throws Exception
      Throws:
      Exception
    • testCreateOutputDisabled

      public void testCreateOutputDisabled() throws IOException
      Throws:
      IOException
    • testDeleteFileDisabled

      public void testDeleteFileDisabled() throws IOException
      Throws:
      IOException
    • testRenameFileDisabled

      public void testRenameFileDisabled() throws IOException
      Throws:
      IOException
    • testSyncDisabled

      public void testSyncDisabled() throws IOException
      Throws:
      IOException
    • testMakeLockDisabled

      public void testMakeLockDisabled() throws IOException
      Throws:
      IOException
    • testRandomFiles

      public void testRandomFiles() throws IOException
      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

      public void testManySubFiles() throws IOException
      Throws:
      IOException
    • testClonedStreamsClosing

      public void testClonedStreamsClosing() throws IOException
      Throws:
      IOException
    • testRandomAccess

      public void testRandomAccess() throws IOException
      This test opens two files from a compound stream and verifies that their file positions are independent of each other.
      Throws:
      IOException
    • testRandomAccessClones

      public void testRandomAccessClones() throws IOException
      This test opens two files from a compound stream and verifies that their file positions are independent of each other.
      Throws:
      IOException
    • testFileNotFound

      public void testFileNotFound() throws IOException
      Throws:
      IOException
    • testReadPastEOF

      public void testReadPastEOF() throws IOException
      Throws:
      IOException
    • newSegmentInfo

      protected static SegmentInfo newSegmentInfo(Directory dir, String name)
      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

      protected static Directory createLargeCFS(Directory dir) throws IOException
      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

      protected void addRandomFields(Document doc)
      Description copied from class: BaseIndexFileFormatTestCase
      Add random fields to the provided document.
      Specified by:
      addRandomFields in class BaseIndexFileFormatTestCase
    • testMergeStability

      public void testMergeStability() throws Exception
      Description copied from class: BaseIndexFileFormatTestCase
      The purpose of this test is to make sure that bulk merge doesn't accumulate useless data over runs.
      Overrides:
      testMergeStability in class BaseIndexFileFormatTestCase
      Throws:
      Exception
    • testResourceNameInsideCompoundFile

      public void testResourceNameInsideCompoundFile() throws Exception
      Throws:
      Exception
    • testMissingCodecHeadersAreCaught

      public void testMissingCodecHeadersAreCaught() throws Exception
      Throws:
      Exception
    • testCorruptFilesAreCaught

      public void testCorruptFilesAreCaught() throws Exception
      Throws:
      Exception
    • testCheckIntegrity

      public void testCheckIntegrity() throws IOException
      Throws:
      IOException