Package net.maswag.falcaun
Class TimeoutEQOracle<I,O>
java.lang.Object
net.maswag.falcaun.TimeoutEQOracle<I,O>
- Type Parameters:
I- Input symbolO- 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>
-
Nested Class Summary
Nested classes/interfaces inherited from interface de.learnlib.oracle.EquivalenceOracle
EquivalenceOracle.DFAEquivalenceOracle<I extends Object>, EquivalenceOracle.MealyEquivalenceOracle<I extends Object,O extends Object>, EquivalenceOracle.MooreEquivalenceOracle<I extends Object, O extends Object> -
Field Summary
FieldsModifier and TypeFieldDescriptionprivate final EquivalenceOracle.MealyEquivalenceOracle<I,O> private static final org.slf4j.Loggerprivate final LongSupplierClock supplier for reading the current time.private longprivate final long -
Constructor Summary
ConstructorsConstructorDescriptionTimeoutEQOracle(EquivalenceOracle.MealyEquivalenceOracle<I, O> eqOracle, long timeout) TimeoutEQOracle(EquivalenceOracle.MealyEquivalenceOracle<I, O> eqOracle, long timeout, LongSupplier nanoTime) -
Method Summary
Modifier and TypeMethodDescription@Nullable DefaultQuery<I,net.automatalib.word.Word<O>> findCounterExample(net.automatalib.automaton.transducer.MealyMachine<?, I, ?, O> objects, Collection<? extends I> collection) (package private) voidstart()Start ticking the clock
-
Field Details
-
LOGGER
private static final org.slf4j.Logger LOGGER -
timeout
private final long timeout -
startTime
private long startTime -
eqOracle
-
nanoTime
Clock supplier for reading the current time. In production this isSystem.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 oracletimeout- timeout in seconds.
-
TimeoutEQOracle
TimeoutEQOracle(EquivalenceOracle.MealyEquivalenceOracle<I, O> eqOracle, long timeout, LongSupplier nanoTime) - Parameters:
eqOracle- the wrapped equivalence oracletimeout- timeout in seconds.nanoTime- aLongSupplierthat returns current time in nanoseconds. In production this is typicallySystem::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:
findCounterExamplein interfaceEquivalenceOracle<net.automatalib.automaton.transducer.MealyMachine<?,I, ?, O>, I, net.automatalib.word.Word<O>>
-