public class ErrorGeneratingFilter extends IoFilterAdapter
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); IoFilter.NextFilter| Modifier and Type | Field and Description |
|---|---|
private int |
changeByteProbability |
private int |
duplicatePduProbability |
private int |
insertByteProbability |
private org.slf4j.Logger |
logger |
private boolean |
manipulateReads |
private boolean |
manipulateWrites |
private int |
maxInsertByte |
private int |
removeByteProbability |
private int |
removePduProbability |
private int |
resendPduLasterProbability |
private java.util.Random |
rng |
| Constructor and Description |
|---|
ErrorGeneratingFilter() |
| Modifier and Type | Method and Description |
|---|---|
void |
filterWrite(IoFilter.NextFilter nextFilter,
IoSession session,
WriteRequest writeRequest)
Filters
IoSession.write(Object) method invocation. |
int |
getChangeByteProbability() |
int |
getDuplicatePduProbability() |
int |
getInsertByteProbability() |
int |
getMaxInsertByte() |
int |
getRemoveByteProbability() |
int |
getRemovePduProbability() |
int |
getResendPduLasterProbability() |
private IoBuffer |
insertBytesToNewIoBuffer(IoSession session,
IoBuffer buffer) |
boolean |
isManipulateReads() |
boolean |
isManipulateWrites() |
private void |
manipulateIoBuffer(IoSession session,
IoBuffer buffer) |
void |
messageReceived(IoFilter.NextFilter nextFilter,
IoSession session,
java.lang.Object message)
Filters
IoHandler.messageReceived(IoSession,Object) event. |
void |
setChangeByteProbability(int changeByteProbability)
Set the probability for the change byte error.
|
void |
setDuplicatePduProbability(int duplicatePduProbability)
not functional ATM
|
void |
setInsertByteProbability(int insertByteProbability)
Set the probability for the insert byte error.
|
void |
setManipulateReads(boolean manipulateReads)
Set to true if you want to apply error to the read
IoBuffer |
void |
setManipulateWrites(boolean manipulateWrites)
Set to true if you want to apply error to the written
IoBuffer |
void |
setMaxInsertByte(int maxInsertByte)
Set the maximum number of byte the filter can insert in a
IoBuffer. |
void |
setRemoveByteProbability(int removeByteProbability)
Set the probability for the remove byte error.
|
void |
setRemovePduProbability(int removePduProbability)
not functional ATM
|
void |
setResendPduLasterProbability(int resendPduLasterProbability)
not functional ATM
|
destroy, exceptionCaught, filterClose, init, inputClosed, messageSent, onPostAdd, onPostRemove, onPreAdd, onPreRemove, sessionClosed, sessionCreated, sessionIdle, sessionOpened, toStringprivate int removeByteProbability
private int insertByteProbability
private int changeByteProbability
private int removePduProbability
private int duplicatePduProbability
private int resendPduLasterProbability
private int maxInsertByte
private boolean manipulateWrites
private boolean manipulateReads
private java.util.Random rng
private final org.slf4j.Logger logger
public void filterWrite(IoFilter.NextFilter nextFilter, IoSession session, WriteRequest writeRequest) throws java.lang.Exception
IoFilterAdapterIoSession.write(Object) method invocation.filterWrite in interface IoFilterfilterWrite in class IoFilterAdapternextFilter - the IoFilter.NextFilter for this filter. You can reuse this
object until this filter is removed from the chain.session - The IoSession which has to process this invocationwriteRequest - The WriteRequest to processjava.lang.Exceptionpublic void messageReceived(IoFilter.NextFilter nextFilter, IoSession session, java.lang.Object message) throws java.lang.Exception
IoFilterAdapterIoHandler.messageReceived(IoSession,Object) event.messageReceived in interface IoFiltermessageReceived in class IoFilterAdapternextFilter - the IoFilter.NextFilter for this filter. You can reuse this
object until this filter is removed from the chain.session - The IoSession which has received this eventmessage - The received messagejava.lang.Exceptionprivate IoBuffer insertBytesToNewIoBuffer(IoSession session, IoBuffer buffer)
public int getChangeByteProbability()
public void setChangeByteProbability(int changeByteProbability)
IoBuffer.changeByteProbability - probability of modifying an IoBuffer out of 1000 processed IoBufferpublic int getDuplicatePduProbability()
public void setDuplicatePduProbability(int duplicatePduProbability)
duplicatePduProbability - public int getInsertByteProbability()
public void setInsertByteProbability(int insertByteProbability)
IoBuffer.insertByteProbability - probability of inserting in IoBuffer out of 1000 processed IoBufferpublic boolean isManipulateReads()
public void setManipulateReads(boolean manipulateReads)
IoBuffermanipulateReads - public boolean isManipulateWrites()
public void setManipulateWrites(boolean manipulateWrites)
IoBuffermanipulateWrites - public int getRemoveByteProbability()
public void setRemoveByteProbability(int removeByteProbability)
IoBuffer.removeByteProbability - probability of modifying an IoBuffer out of 1000 processed IoBufferpublic int getRemovePduProbability()
public void setRemovePduProbability(int removePduProbability)
removePduProbability - public int getResendPduLasterProbability()
public void setResendPduLasterProbability(int resendPduLasterProbability)
resendPduLasterProbability - public int getMaxInsertByte()