Package org.apache.drill.exec.testing
Class ExecutionControlsInjector
java.lang.Object
org.apache.drill.exec.testing.ExecutionControlsInjector
- All Implemented Interfaces:
ControlsInjector
Injects exceptions and pauses at execution time for testing. Any class that wants to simulate exceptions
or inject pauses for testing should have it's own private static instance of an injector (similar to the use
of loggers). Injection site either use
or
invalid reference
FragmentContextImpl
QueryContext.
See ControlsInjector for documentation.-
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptiongetLatch(ExecutionControls executionControls, String desc) Used to insert a latch in site class.Class<?> Get the injector's owning class.<T extends Throwable>
voidinjectChecked(ExecutionControls executionControls, String desc, Class<T> exceptionClass) Inject (throw) a checked exception at this point, if an injection is specified, and it is time for it to be thrown.voidinjectInterruptiblePause(ExecutionControls executionControls, String desc, org.slf4j.Logger logger) Insert a pause that can be interrupted usingThread.interrupt()at the given site point, if such an injection is specified (i.e.voidinjectPause(ExecutionControls executionControls, String desc, org.slf4j.Logger logger) Pauses at this point, if such an injection is specified (i.e.voidinjectUnchecked(ExecutionControls executionControls, String desc) Inject (throw) an unchecked exception at this point, if an injection is specified, and it is time for it to be thrown.
-
Constructor Details
-
ExecutionControlsInjector
Constructor. Classes should use the staticControlsInjectorFactory.getInjector(java.lang.Class<?>)method to obtain their injector.- Parameters:
clazz- the owning class
-
-
Method Details
-
getSiteClass
Description copied from interface:ControlsInjectorGet the injector's owning class.- Specified by:
getSiteClassin interfaceControlsInjector- Returns:
- the injector's owning class
-
injectUnchecked
Description copied from interface:ControlsInjectorInject (throw) an unchecked exception at this point, if an injection is specified, and it is time for it to be thrown.Implementors use this in their code at a site where they want to simulate an exception during testing.
- Specified by:
injectUncheckedin interfaceControlsInjector- Parameters:
executionControls- the controls in the current contextdesc- the site descriptor throws the exception specified by the injection, if it is time
-
injectChecked
public <T extends Throwable> void injectChecked(ExecutionControls executionControls, String desc, Class<T> exceptionClass) throws T Description copied from interface:ControlsInjectorInject (throw) a checked exception at this point, if an injection is specified, and it is time for it to be thrown.Implementors use this in their code at a site where they want to simulate an exception during testing.
- Specified by:
injectCheckedin interfaceControlsInjector- Parameters:
executionControls- the controls in the current contextdesc- the site descriptorexceptionClass- the expected class of the exception (or a super class of it)- Throws:
T- the exception specified by the injection, if it is time
-
injectPause
Description copied from interface:ControlsInjectorPauses at this point, if such an injection is specified (i.e. matches the site description).Implementors use this in their code at a site where they want to simulate a pause during testing.
- Specified by:
injectPausein interfaceControlsInjector- Parameters:
executionControls- the controls in the current contextdesc- the site descriptorlogger- logger of the class containing the injection site
-
injectInterruptiblePause
public void injectInterruptiblePause(ExecutionControls executionControls, String desc, org.slf4j.Logger logger) throws InterruptedException Description copied from interface:ControlsInjectorInsert a pause that can be interrupted usingThread.interrupt()at the given site point, if such an injection is specified (i.e. matches the site description).Implementors use this in their code at a site where they want to simulate a interruptible pause during testing.
- Specified by:
injectInterruptiblePausein interfaceControlsInjector- Parameters:
executionControls- the controls in the current contextdesc- the site descriptorlogger- logger of the class containing the injection site- Throws:
InterruptedException- if interrupted usingThread.interrupt()
-
getLatch
Description copied from interface:ControlsInjectorUsed to insert a latch in site class. SeeCountDownLatchInjectionandfor usage.invalid reference
org.apache.drill.exec.testing.TestCountDownLatchInjection- Specified by:
getLatchin interfaceControlsInjector- Parameters:
executionControls- the controls in the current contextdesc- the site descriptor
-