# Package org.apache.jmeter.control

Interface Summary
Controller: This interface is used by JMeterThread in the following manner:
IteratingController: Identify controller that does iterations
ReplaceableController: This interface represents a controller that gets replaced during the compilation phase of test execution in an arbitrary way.

Class Summary
CriticalSectionController: This is a Critical Section Controller; it will execute the set of statements (samplers/controllers, etc) under named lock.
ForeachController: ForeachController that iterates over a list of variables named XXXX_NN stored in `JMeterVariables` where NN is a number starting from 1 to number of occurrences.
GenericController: This class is the basis for all the controllers.
IfController: This is a Conditional Controller; it will execute the set of statements (samplers/controllers, etc) while the 'condition' is true.
IncludeController
InterleaveControl: Alternate among each of the children controllers or samplers for each loop iteration
LoopController: Class that implements the Loop Controller, ie iterate infinitely or a configured number of times
ModuleController: The goal of ModuleController is to add modularity to JMeter.
OnceOnlyController: Controller to run its children once per cycle.
RandomController: Controller that rans randomly one of it's children on each iteration
RandomOrderController: A controller that runs its children each at most once, but in a random order.
RunTime: Runtime Controller that runs its children until configured Runtime(s) is exceeded
SwitchController: Implements a controller which selects at most one of its children based on the condition value, which may be a number or a string.
TestFragmentController
ThroughputController: This class represents a controller that can control the number of times that it is executed, either by the total number of times the user wants the controller executed (BYNUMBER) or by the percentage of time it is called (BYPERCENT) The current implementation executes the first N samples (BYNUMBER) or the last N% of samples (BYPERCENT).
TransactionController: Transaction Controller to measure transaction times There are two different modes for the controller: - generate additional total sample after nested samples (as in JMeter 2.2) - generate parent sampler containing the nested samples
TransactionSampler: Transaction Sampler class to measure transaction times (not exposed as a GUI class, as it is only used internally by TransactionController in Generate Parent sample mode)
WhileController

Exception Summary
NextIsNullException: Used by the Generic and Interleave controllers to signal the end of their samples