Class TimeoutEQOracle<I,O>

java.lang.Object
net.maswag.falcaun.TimeoutEQOracle<I,O>
Type Parameters:
I - Input symbol
O - Output symbol
All Implemented Interfaces:
EquivalenceOracle<net.automatalib.automaton.transducer.MealyMachine<?,I,?,O>,I,net.automatalib.word.Word<O>>, EquivalenceOracle.MealyEquivalenceOracle<I,O>

public class TimeoutEQOracle<I,O> extends Object implements EquivalenceOracle.MealyEquivalenceOracle<I,O>
Am equivalence oracle to add timeout in addition to the original oracle.
Author:
Masaki Waga <masakiwaga@gmail.com>
  • Field Details

    • LOGGER

      private static final org.slf4j.Logger LOGGER
    • timeout

      private final long timeout
    • startTime

      private long startTime
    • eqOracle

      private final EquivalenceOracle.MealyEquivalenceOracle<I,O> eqOracle
    • nanoTime

      private final LongSupplier nanoTime
      Clock supplier for reading the current time. In production this is System.nanoTime(); for testing it may be a fake clock (e.g. returning synthetic nanosecond values) so that timeout behaviour can be verified without sleeping or wall-clock timing.
  • Constructor Details

    • TimeoutEQOracle

      TimeoutEQOracle(EquivalenceOracle.MealyEquivalenceOracle<I,O> eqOracle, long timeout)
      Parameters:
      eqOracle - the wrapped equivalence oracle
      timeout - timeout in seconds.
    • TimeoutEQOracle

      TimeoutEQOracle(EquivalenceOracle.MealyEquivalenceOracle<I,O> eqOracle, long timeout, LongSupplier nanoTime)
      Parameters:
      eqOracle - the wrapped equivalence oracle
      timeout - timeout in seconds.
      nanoTime - a LongSupplier that returns current time in nanoseconds. In production this is typically System::nanoTime; for testing provide a fake clock that returns controllable values (e.g. () -> fakeClockValue) so timeout behaviour can be verified without sleeping or wall-clock timing.
  • Method Details

    • start

      void start()
      Start ticking the clock
    • findCounterExample

      @Nullable public @Nullable DefaultQuery<I,net.automatalib.word.Word<O>> findCounterExample(net.automatalib.automaton.transducer.MealyMachine<?,I,?,O> objects, Collection<? extends I> collection)
      Specified by:
      findCounterExample in interface EquivalenceOracle<net.automatalib.automaton.transducer.MealyMachine<?,I,?,O>,I,net.automatalib.word.Word<O>>