Methods Summary |
---|
public org.apache.lucene.store.IndexOutput | createOutput(java.lang.String name)
RAMFile file = new RAMFile(this);
synchronized (this) {
RAMFile existing = (RAMFile)fileMap.get(name);
if (existing!=null) {
sizeInBytes -= existing.sizeInBytes;
existing.directory = null;
}
fileMap.put(name, file);
}
return new MockRAMOutputStream(this, file);
|
public long | getMaxSizeInBytes()
return this.maxSize;
|
public long | getMaxUsedSizeInBytes()Returns the peek actual storage used (bytes) in this
directory.
return this.maxUsedSize;
|
public double | getRandomIOExceptionRate()
return randomIOExceptionRate;
|
final long | getRecomputedActualSizeInBytes()Like getRecomputedSizeInBytes(), but, uses actual file
lengths rather than buffer allocations (which are
quantized up to nearest
BufferedIndexOutput.BUFFER_SIZE (now 1024) bytes.
long size = 0;
Iterator it = fileMap.values().iterator();
while (it.hasNext())
size += ((RAMFile) it.next()).length;
return size;
|
public final synchronized long | getRecomputedSizeInBytes()Provided for testing purposes. Use sizeInBytes() instead.
long size = 0;
Iterator it = fileMap.values().iterator();
while (it.hasNext())
size += ((RAMFile) it.next()).getSizeInBytes();
return size;
|
void | maybeThrowIOException()
if (randomIOExceptionRate > 0.0) {
int number = Math.abs(randomState.nextInt() % 1000);
if (number < randomIOExceptionRate*1000) {
throw new IOException("a random IOException");
}
}
|
public void | resetMaxUsedSizeInBytes()
this.maxUsedSize = getRecomputedActualSizeInBytes();
|
public void | setMaxSizeInBytes(long maxSize)
this.maxSize = maxSize;
|
public void | setRandomIOExceptionRate(double rate, long seed)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.
randomIOExceptionRate = rate;
// seed so we have deterministic behaviour:
randomState = new Random(seed);
|