Class ErrorGeneratingFilter
java.lang.Object
org.apache.mina.core.filterchain.IoFilterAdapter
org.apache.mina.filter.errorgenerating.ErrorGeneratingFilter
- All Implemented Interfaces:
IoFilter
An
IoFilter implementation generating random bytes and PDU modification in
your communication streams.
It's quite simple to use :
ErrorGeneratingFilter egf = new ErrorGeneratingFilter();
For activate the change of some bytes in your IoBuffer, for a probability of 200 out
of 1000 IoBuffer processed :
egf.setChangeByteProbability(200);
For activate the insertion of some bytes in your IoBuffer, for a
probability of 200 out of 1000 :
egf.setInsertByteProbability(200);
And for the removing of some bytes :
egf.setRemoveByteProbability(200);
You can activate the error generation for write or read with the
following methods :
egf.setManipulateReads(true);
egf.setManipulateWrites(true); -
Nested Class Summary
Nested classes/interfaces inherited from interface IoFilter
IoFilter.NextFilter -
Field Summary
FieldsModifier and TypeFieldDescriptionprivate intprivate intprivate intprivate final org.slf4j.Loggerprivate booleanprivate booleanprivate intprivate intprivate intprivate intprivate Random -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionvoidfilterWrite(IoFilter.NextFilter nextFilter, IoSession session, WriteRequest writeRequest) FiltersIoSession.write(Object)method invocation.intintintintintintintprivate IoBufferinsertBytesToNewIoBuffer(IoSession session, IoBuffer buffer) booleanbooleanprivate voidmanipulateIoBuffer(IoSession session, IoBuffer buffer) voidmessageReceived(IoFilter.NextFilter nextFilter, IoSession session, Object message) FiltersIoHandler.messageReceived(IoSession,Object)event.voidsetChangeByteProbability(int changeByteProbability) Set the probability for the change byte error.voidsetDuplicatePduProbability(int duplicatePduProbability) not functional ATMvoidsetInsertByteProbability(int insertByteProbability) Set the probability for the insert byte error.voidsetManipulateReads(boolean manipulateReads) Set to true if you want to apply error to the readIoBuffervoidsetManipulateWrites(boolean manipulateWrites) Set to true if you want to apply error to the writtenIoBuffervoidsetMaxInsertByte(int maxInsertByte) Set the maximum number of byte the filter can insert in aIoBuffer.voidsetRemoveByteProbability(int removeByteProbability) Set the probability for the remove byte error.voidsetRemovePduProbability(int removePduProbability) not functional ATMvoidsetResendPduLasterProbability(int resendPduLasterProbability) not functional ATMMethods inherited from class IoFilterAdapter
destroy, event, exceptionCaught, filterClose, init, inputClosed, messageSent, onPostAdd, onPostRemove, onPreAdd, onPreRemove, sessionClosed, sessionCreated, sessionIdle, sessionOpened, toString
-
Field Details
-
removeByteProbability
private int removeByteProbability -
insertByteProbability
private int insertByteProbability -
changeByteProbability
private int changeByteProbability -
removePduProbability
private int removePduProbability -
duplicatePduProbability
private int duplicatePduProbability -
resendPduLasterProbability
private int resendPduLasterProbability -
maxInsertByte
private int maxInsertByte -
manipulateWrites
private boolean manipulateWrites -
manipulateReads
private boolean manipulateReads -
rng
-
logger
private final org.slf4j.Logger logger
-
-
Constructor Details
-
ErrorGeneratingFilter
public ErrorGeneratingFilter()
-
-
Method Details
-
filterWrite
public void filterWrite(IoFilter.NextFilter nextFilter, IoSession session, WriteRequest writeRequest) throws Exception Description copied from class:IoFilterAdapterFiltersIoSession.write(Object)method invocation.- Specified by:
filterWritein interfaceIoFilter- Overrides:
filterWritein classIoFilterAdapter- Parameters:
nextFilter- theIoFilter.NextFilterfor this filter. You can reuse this object until this filter is removed from the chain.session- TheIoSessionwhich has to process this invocationwriteRequest- TheWriteRequestto process- Throws:
Exception- If an error occurred while processing the event
-
messageReceived
public void messageReceived(IoFilter.NextFilter nextFilter, IoSession session, Object message) throws Exception Description copied from class:IoFilterAdapterFiltersIoHandler.messageReceived(IoSession,Object)event.- Specified by:
messageReceivedin interfaceIoFilter- Overrides:
messageReceivedin classIoFilterAdapter- Parameters:
nextFilter- theIoFilter.NextFilterfor this filter. You can reuse this object until this filter is removed from the chain.session- TheIoSessionwhich has received this eventmessage- The received message- Throws:
Exception- If an error occurred while processing the event
-
insertBytesToNewIoBuffer
-
manipulateIoBuffer
-
getChangeByteProbability
public int getChangeByteProbability()- Returns:
- The probably that a byte changes
-
setChangeByteProbability
public void setChangeByteProbability(int changeByteProbability) Set the probability for the change byte error. If this probability is > 0 the filter will modify a random number of byte of the processedIoBuffer.- Parameters:
changeByteProbability- probability of modifying an IoBuffer out of 1000 processedIoBuffer
-
getDuplicatePduProbability
public int getDuplicatePduProbability()- Returns:
- The probability for generating duplicated PDU
-
setDuplicatePduProbability
public void setDuplicatePduProbability(int duplicatePduProbability) not functional ATM- Parameters:
duplicatePduProbability- The probability for generating duplicated PDU
-
getInsertByteProbability
public int getInsertByteProbability()- Returns:
- the probability for the insert byte error.
-
setInsertByteProbability
public void setInsertByteProbability(int insertByteProbability) Set the probability for the insert byte error. If this probability is > 0 the filter will insert a random number of byte in the processedIoBuffer.- Parameters:
insertByteProbability- probability of inserting in IoBuffer out of 1000 processedIoBuffer
-
isManipulateReads
public boolean isManipulateReads()- Returns:
- The number of manipulated reads
-
setManipulateReads
public void setManipulateReads(boolean manipulateReads) Set to true if you want to apply error to the readIoBuffer- Parameters:
manipulateReads- The number of manipulated reads
-
isManipulateWrites
public boolean isManipulateWrites()- Returns:
- If manipulated writes are expected or not
-
setManipulateWrites
public void setManipulateWrites(boolean manipulateWrites) Set to true if you want to apply error to the writtenIoBuffer- Parameters:
manipulateWrites- If manipulated writes are expected or not
-
getRemoveByteProbability
public int getRemoveByteProbability()- Returns:
- The probability for the remove byte error
-
setRemoveByteProbability
public void setRemoveByteProbability(int removeByteProbability) Set the probability for the remove byte error. If this probability is > 0 the filter will remove a random number of byte in the processedIoBuffer.- Parameters:
removeByteProbability- probability of modifying anIoBufferout of 1000 processed IoBuffer
-
getRemovePduProbability
public int getRemovePduProbability()- Returns:
- The PDU removal probability
-
setRemovePduProbability
public void setRemovePduProbability(int removePduProbability) not functional ATM- Parameters:
removePduProbability- The PDU removal probability
-
getResendPduLasterProbability
public int getResendPduLasterProbability()- Returns:
- The delay before a resend
-
setResendPduLasterProbability
public void setResendPduLasterProbability(int resendPduLasterProbability) not functional ATM- Parameters:
resendPduLasterProbability- The delay before a resend
-
getMaxInsertByte
public int getMaxInsertByte()- Returns:
- maximum bytes inserted in a
IoBuffer
-
setMaxInsertByte
-