Package org.apache.lucene.tests.store
Class MockDirectoryWrapper
java.lang.Object
org.apache.lucene.store.Directory
org.apache.lucene.store.FilterDirectory
org.apache.lucene.tests.store.BaseDirectoryWrapper
org.apache.lucene.tests.store.MockDirectoryWrapper
- All Implemented Interfaces:
Closeable
,AutoCloseable
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.
-
Nested Class Summary
Modifier and TypeClassDescriptionstatic class
Objects that represent fail-able conditions.static class
Use this when throwing fakeIOException
, e.g.static enum
Enum for controlling hard disk throttling. -
Field Summary
Fields inherited from class org.apache.lucene.tests.store.BaseDirectoryWrapper
isOpen
Fields inherited from class org.apache.lucene.store.FilterDirectory
in
-
Constructor Summary
-
Method Summary
Modifier and TypeMethodDescriptionvoid
void
close()
final void
void
corruptFiles
(Collection<String> files) void
void
crash()
Simulates a crash of OS or machine by overwriting unsynced files.createOutput
(String name, IOContext context) createTempOutput
(String prefix, String suffix, IOContext context) void
deleteFile
(String name) protected final void
void
add a Failure object to the list of objects to be evaluated at every potential failure pointlong
fileLength
(String name) boolean
long
returns current open file handle countint
long
long
Returns the peek actual storage used (bytes) in this directory.double
double
String[]
listAll()
obtainLock
(String name) final ChecksumIndexInput
openChecksumInput
(String name, IOContext context) void
removeIndexInput
(IndexInput in, String name) void
removeIndexOutput
(IndexOutput out, String name) void
void
void
setAllowRandomFileNotFoundException
(boolean value) If set to true (the default), when we throw random IOException on openInput or createOutput, we may sometimes throw FileNotFoundException or NoSuchFileException.void
setAllowReadingFilesStillOpenForWrite
(boolean value) If set to true, you can open an inputstream on a file that is still open for writes.void
setAssertNoDeleteOpenFile
(boolean value) Trip a test assert if there is an attempt to delete an open file.void
setAssertNoUnrefencedFilesOnClose
(boolean v) void
setFailOnCreateOutput
(boolean v) void
setFailOnOpenInput
(boolean v) void
setMaxSizeInBytes
(long maxSize) void
setRandomIOExceptionRate
(double rate) If 0.0, no exceptions will be thrown.void
setRandomIOExceptionRateOnOpen
(double rate) If 0.0, no exceptions will be thrown during openInput and createOutput.void
setThrottling
(MockDirectoryWrapper.Throttling throttling) void
setTrackDiskUsage
(boolean v) void
setUseSlowOpenClosers
(boolean v) Add a rare small sleep to catch race conditions in open/closevoid
setVerboseClone
(boolean v) If set to true, we print a fake exception with filename and stacktrace on every indexinput clone()final long
void
sync
(Collection<String> names) void
toString()
Methods inherited from class org.apache.lucene.tests.store.BaseDirectoryWrapper
getCheckIndexOnClose, getCrossCheckTermVectorsOnClose, isOpen, setCheckIndexOnClose, setCrossCheckTermVectorsOnClose
Methods inherited from class org.apache.lucene.store.FilterDirectory
getDelegate, getPendingDeletions, unwrap
Methods inherited from class org.apache.lucene.store.Directory
getTempFileName
-
Constructor Details
-
MockDirectoryWrapper
-
-
Method Details
-
getInputCloneCount
public int getInputCloneCount() -
setVerboseClone
public void setVerboseClone(boolean v) If set to true, we print a fake exception with filename and stacktrace on every indexinput clone() -
setTrackDiskUsage
public void setTrackDiskUsage(boolean v) -
setAllowRandomFileNotFoundException
public void setAllowRandomFileNotFoundException(boolean value) If set to true (the default), when we throw random IOException on openInput or createOutput, we may sometimes throw FileNotFoundException or NoSuchFileException. -
setAllowReadingFilesStillOpenForWrite
public void setAllowReadingFilesStillOpenForWrite(boolean value) If set to true, you can open an inputstream on a file that is still open for writes. -
setThrottling
-
setUseSlowOpenClosers
public void setUseSlowOpenClosers(boolean v) Add a rare small sleep to catch race conditions in open/closeYou can enable this if you need it.
-
sync
- Overrides:
sync
in classFilterDirectory
- Throws:
IOException
-
rename
- Overrides:
rename
in classFilterDirectory
- Throws:
IOException
-
syncMetaData
- Overrides:
syncMetaData
in classFilterDirectory
- Throws:
IOException
-
sizeInBytes
- Throws:
IOException
-
corruptUnknownFiles
- Throws:
IOException
-
corruptFiles
- Throws:
IOException
-
crash
Simulates a crash of OS or machine by overwriting unsynced files.- Throws:
IOException
-
clearCrash
public void clearCrash() -
setMaxSizeInBytes
public void setMaxSizeInBytes(long maxSize) -
getMaxSizeInBytes
public long getMaxSizeInBytes() -
getMaxUsedSizeInBytes
public long getMaxUsedSizeInBytes()Returns the peek actual storage used (bytes) in this directory. -
resetMaxUsedSizeInBytes
- Throws:
IOException
-
setAssertNoDeleteOpenFile
public void setAssertNoDeleteOpenFile(boolean value) Trip a test assert if there is an attempt to delete an open file. -
getAssertNoDeleteOpenFile
public boolean getAssertNoDeleteOpenFile() -
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() -
setRandomIOExceptionRateOnOpen
public void setRandomIOExceptionRateOnOpen(double rate) If 0.0, no exceptions will be thrown during openInput and createOutput. Else this should be a double 0.0 - 1.0 and we will randomly throw an IOException in openInput and createOutput with this probability. -
getRandomIOExceptionRateOnOpen
public double getRandomIOExceptionRateOnOpen() -
getFileHandleCount
public long getFileHandleCount()returns current open file handle count -
deleteFile
- Overrides:
deleteFile
in classFilterDirectory
- Throws:
IOException
-
getOpenDeletedFiles
-
setFailOnCreateOutput
public void setFailOnCreateOutput(boolean v) -
createOutput
- Overrides:
createOutput
in classFilterDirectory
- Throws:
IOException
-
createTempOutput
public IndexOutput createTempOutput(String prefix, String suffix, IOContext context) throws IOException - Overrides:
createTempOutput
in classFilterDirectory
- Throws:
IOException
-
setFailOnOpenInput
public void setFailOnOpenInput(boolean v) -
openInput
- Overrides:
openInput
in classFilterDirectory
- Throws:
IOException
-
setAssertNoUnrefencedFilesOnClose
public void setAssertNoUnrefencedFilesOnClose(boolean v) -
close
- Specified by:
close
in interfaceAutoCloseable
- Specified by:
close
in interfaceCloseable
- Overrides:
close
in classBaseDirectoryWrapper
- Throws:
IOException
-
removeIndexOutput
-
removeIndexInput
-
failOn
add a Failure object to the list of objects to be evaluated at every potential failure point -
listAll
- Overrides:
listAll
in classFilterDirectory
- Throws:
IOException
-
fileLength
- Overrides:
fileLength
in classFilterDirectory
- Throws:
IOException
-
obtainLock
- Overrides:
obtainLock
in classFilterDirectory
- Throws:
IOException
-
toString
- Overrides:
toString
in classFilterDirectory
-
openChecksumInput
public final ChecksumIndexInput openChecksumInput(String name, IOContext context) throws IOException - Overrides:
openChecksumInput
in classDirectory
- Throws:
IOException
-
copyFrom
public final void copyFrom(Directory from, String src, String dest, IOContext context) throws IOException - Overrides:
copyFrom
in classDirectory
- Throws:
IOException
-
ensureOpen
- Overrides:
ensureOpen
in classFilterDirectory
- Throws:
AlreadyClosedException
-