Class ErrorGeneratingFilter

java.lang.Object
org.apache.mina.core.filterchain.IoFilterAdapter
org.apache.mina.filter.errorgenerating.ErrorGeneratingFilter
All Implemented Interfaces:
IoFilter

public class ErrorGeneratingFilter extends IoFilterAdapter
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);
  • 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

      private Random 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: IoFilterAdapter
      Filters IoSession.write(Object) method invocation.
      Specified by:
      filterWrite in interface IoFilter
      Overrides:
      filterWrite in class IoFilterAdapter
      Parameters:
      nextFilter - 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 invocation
      writeRequest - The WriteRequest to 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: IoFilterAdapter
      Specified by:
      messageReceived in interface IoFilter
      Overrides:
      messageReceived in class IoFilterAdapter
      Parameters:
      nextFilter - 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 event
      message - The received message
      Throws:
      Exception - If an error occurred while processing the event
    • insertBytesToNewIoBuffer

      private IoBuffer insertBytesToNewIoBuffer(IoSession session, IoBuffer buffer)
    • manipulateIoBuffer

      private void manipulateIoBuffer(IoSession session, IoBuffer buffer)
    • 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 processed IoBuffer.
      Parameters:
      changeByteProbability - probability of modifying an IoBuffer out of 1000 processed IoBuffer
    • 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 processed IoBuffer.
      Parameters:
      insertByteProbability - probability of inserting in IoBuffer out of 1000 processed IoBuffer
    • 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 read IoBuffer
      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 written IoBuffer
      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 processed IoBuffer.
      Parameters:
      removeByteProbability - probability of modifying an IoBuffer out 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

      public void setMaxInsertByte(int maxInsertByte)
      Set the maximum number of byte the filter can insert in a IoBuffer. The default value is 10.
      Parameters:
      maxInsertByte - maximum bytes inserted in a IoBuffer