Class MockDirectoryWrapper

  • All Implemented Interfaces:
    Closeable, AutoCloseable

    public class MockDirectoryWrapper
    extends org.apache.lucene.store.Directory
    This is a Directory Wrapper that adds methods intended to be used only by unit tests. It also adds a number of features useful for testing:
    • Instances created by LuceneTestCase.newDirectory() are tracked to ensure they are closed by the test.
    • When a MockDirectoryWrapper is closed, it will throw an exception if it has any open files against it (with a stacktrace indicating where they were opened from).
    • When a MockDirectoryWrapper is closed, it runs CheckIndex to test if the index was corrupted.
    • MockDirectoryWrapper simulates some "features" of Windows, such as refusing to write/delete to open files.
    • Constructor Detail

      • MockDirectoryWrapper

        public MockDirectoryWrapper​(Random random,
                                    org.apache.lucene.store.Directory delegate)
    • Method Detail

      • getInputCloneCount

        public int getInputCloneCount()
      • setTrackDiskUsage

        public void setTrackDiskUsage​(boolean v)
      • setPreventDoubleWrite

        public void setPreventDoubleWrite​(boolean value)
        If set to true, we throw an IOException if the same file is opened by createOutput, ever.
      • toString

        public String toString()
        Overrides:
        toString in class org.apache.lucene.store.Directory
      • crash

        public void crash()
                   throws IOException
        Simulates a crash of OS or machine by overwriting unsynced files.
        Throws:
        IOException
      • setMaxSizeInBytes

        public void setMaxSizeInBytes​(long maxSize)
      • getMaxSizeInBytes

        public long getMaxSizeInBytes()
      • getMaxUsedSizeInBytes

        public long getMaxUsedSizeInBytes()
        Returns the peek actual storage used (bytes) in this directory.
      • setNoDeleteOpenFile

        public void setNoDeleteOpenFile​(boolean value)
        Emulate windows whereby deleting an open file is not allowed (raise IOException).
      • getNoDeleteOpenFile

        public boolean getNoDeleteOpenFile()
      • setCheckIndexOnClose

        public void setCheckIndexOnClose​(boolean value)
        Set whether or not checkindex should be run on close
      • getCheckIndexOnClose

        public boolean getCheckIndexOnClose()
      • setRandomIOExceptionRate

        public void setRandomIOExceptionRate​(double rate)
        If 0.0, no exceptions will be thrown. Else this should be a double 0.0 - 1.0. We will randomly throw an IOException on the first write to an OutputStream based on this probability.
      • getRandomIOExceptionRate

        public double getRandomIOExceptionRate()
      • deleteFile

        public void deleteFile​(String name)
                        throws IOException
        Specified by:
        deleteFile in class org.apache.lucene.store.Directory
        Throws:
        IOException
      • getOpenDeletedFiles

        public Set<String> getOpenDeletedFiles()
      • setFailOnCreateOutput

        public void setFailOnCreateOutput​(boolean v)
      • createOutput

        public org.apache.lucene.store.IndexOutput createOutput​(String name)
                                                         throws IOException
        Specified by:
        createOutput in class org.apache.lucene.store.Directory
        Throws:
        IOException
      • setFailOnOpenInput

        public void setFailOnOpenInput​(boolean v)
      • openInput

        public org.apache.lucene.store.IndexInput openInput​(String name)
                                                     throws IOException
        Specified by:
        openInput in class org.apache.lucene.store.Directory
        Throws:
        IOException
      • getRecomputedSizeInBytes

        public final long getRecomputedSizeInBytes()
                                            throws IOException
        Provided for testing purposes. Use sizeInBytes() instead.
        Throws:
        IOException
      • getRecomputedActualSizeInBytes

        public final long getRecomputedActualSizeInBytes()
                                                  throws IOException
        Like getRecomputedSizeInBytes(), but, uses actual file lengths rather than buffer allocations (which are quantized up to nearest RAMOutputStream.BUFFER_SIZE (now 1024) bytes.
        Throws:
        IOException
      • setAssertNoUnrefencedFilesOnClose

        public void setAssertNoUnrefencedFilesOnClose​(boolean v)
      • removeIndexOutput

        public void removeIndexOutput​(org.apache.lucene.store.IndexOutput out,
                                      String name)
      • removeIndexInput

        public void removeIndexInput​(org.apache.lucene.store.IndexInput in,
                                     String name)
      • isOpen

        public boolean isOpen()
      • failOn

        public void failOn​(MockDirectoryWrapper.Failure fail)
        add a Failure object to the list of objects to be evaluated at every potential failure point
      • listAll

        public String[] listAll()
                         throws IOException
        Specified by:
        listAll in class org.apache.lucene.store.Directory
        Throws:
        IOException
      • fileExists

        public boolean fileExists​(String name)
                           throws IOException
        Specified by:
        fileExists in class org.apache.lucene.store.Directory
        Throws:
        IOException
      • fileModified

        public long fileModified​(String name)
                          throws IOException
        Specified by:
        fileModified in class org.apache.lucene.store.Directory
        Throws:
        IOException
      • fileLength

        public long fileLength​(String name)
                        throws IOException
        Specified by:
        fileLength in class org.apache.lucene.store.Directory
        Throws:
        IOException
      • makeLock

        public org.apache.lucene.store.Lock makeLock​(String name)
        Overrides:
        makeLock in class org.apache.lucene.store.Directory
      • clearLock

        public void clearLock​(String name)
                       throws IOException
        Overrides:
        clearLock in class org.apache.lucene.store.Directory
        Throws:
        IOException
      • setLockFactory

        public void setLockFactory​(org.apache.lucene.store.LockFactory lockFactory)
                            throws IOException
        Overrides:
        setLockFactory in class org.apache.lucene.store.Directory
        Throws:
        IOException
      • getLockFactory

        public org.apache.lucene.store.LockFactory getLockFactory()
        Overrides:
        getLockFactory in class org.apache.lucene.store.Directory
      • getLockID

        public String getLockID()
        Overrides:
        getLockID in class org.apache.lucene.store.Directory
      • copy

        public void copy​(org.apache.lucene.store.Directory to,
                         String src,
                         String dest)
                  throws IOException
        Overrides:
        copy in class org.apache.lucene.store.Directory
        Throws:
        IOException