Package org.apache.jmeter.control

# Class LoopController

java.lang.Object
org.apache.jmeter.testelement.AbstractTestElement
org.apache.jmeter.control.GenericController
org.apache.jmeter.control.LoopController

All Implemented Interfaces:
  `Serializable`, `Cloneable`, `Controller`, `IteratingController`, `LoopIterationListener`, `Searchable`, `org.apache.jmeter.testelement.TestElement`, `TestCompilerHelper`

public class LoopController extends GenericController implements Serializable, IteratingController, LoopIterationListener
Class that implements the Loop Controller, ie iterate infinitely or a configured number of times

See Also:
  - Serialized Form

- ## Nested Class Summary

  ## Nested classes/interfaces inherited from interface org.apache.jmeter.testelement.TestElement

  `org.apache.jmeter.testelement.TestElement.Companion`

- ## Field Summary

  Fields
  Modifier and Type
  Field
  Description
  `static final int`
  `INFINITE_LOOP_COUNT`
  `static final String`
  `LOOPS`

  ### Fields inherited from class org.apache.jmeter.control.GenericController

  `current, subControllersAndSamplers`

  ### Fields inherited from interface org.apache.jmeter.testelement.TestElement

  `COMMENTS, Companion, ENABLED, GUI_CLASS, NAME, TEST_CLASS`

- ## Constructor Summary

  Constructors
  Constructor
  Description
  `LoopController()`

- ## Method Summary

  Modifier and Type
  Method
  Description
  `void`
  `breakLoop()`
  Break loop ("break" keyword equivalent)
  `protected int`
  `getIterCount()`
  `int`
  `getLoops()`
  `String`
  `getLoopString()`
  `org.apache.jmeter.testelement.schema.PropertiesAccessor<? extends LoopController,? extends org.apache.jmeter.control.LoopControllerSchema>`
  `getProps()`
  `org.apache.jmeter.control.LoopControllerSchema`
  `getSchema()`
  `protected void`
  `incrementLoopCount()`
  `void`
  `iterationStart(LoopIterationEvent iterEvent)`
  Called when a loop iteration is about to start.
  `Sampler`
  `next()`
  Determines the next sampler to be processed.
  `protected Sampler`
  `nextIsNull()`
  Called by `GenericController.next()` when `GenericController.getCurrentElement()` returns `null`.
  `protected void`
  `reInitialize()`
  Resets the controller (called after execution of last child of controller): resetCurrent() (i.e.
  `protected void`
  `resetLoopCount()`
  `void`
  `setContinueForever(boolean forever)`
  Determines whether the loop will return any samples if it is rerun.
  `protected void`
  `setDone(boolean done)`
  `void`
  `setLoops(int loops)`
  `void`
  `setLoops(String loopValue)`
  `void`
  `startNextLoop()`
  Start next iteration
  `void`
  `triggerEndOfLoop()`
  Trigger end of loop condition on controller (used by Start Next Loop feature)

  ### Methods inherited from class org.apache.jmeter.control.GenericController

  `addIterationListener, addTestElement, addTestElementOnce, currentReturnedNull, fireIterationStart, fireIterEvents, getCurrentElement, getSubControllers, incrementCurrent, incrementIterCount, initialize, initializeSubControllers, isDone, isFirst, nextIsAController, nextIsASampler, readResolve, removeCurrentElement, removeIterationListener, resetCurrent, resetIterCount, setCurrentElement, setFirst`

  ### Methods inherited from class org.apache.jmeter.testelement.AbstractTestElement

  `addPropertiesValues, addProperty, addProperty, canRemove, clear, clearTemporary, clearTestElementChildren, clone, emptyTemporary, equals, getComment, getName, getProperty, getPropertyAsBoolean, getPropertyAsBoolean, getPropertyAsDouble, getPropertyAsFloat, getPropertyAsInt, getPropertyAsInt, getPropertyAsLong, getPropertyAsLong, getPropertyAsString, getPropertyAsString, getPropertyOrNull, getSearchableTokens, getThreadContext, getThreadName, hashCode, isEnabled, isRunningVersion, isTemporary, logProperties, mergeIn, propertyIterator, recoverRunningVersion, removeProperty, setComment, setEnabled, setName, setProperty, setProperty, setProperty, setProperty, setProperty, setProperty, setProperty, setProperty, setProperty, setRunningVersion, setTemporary, setThreadContext, setThreadName, traverse, traverseCollection, traverseMap, traverseProperty`

  ### Methods inherited from class java.lang.Object

  `finalize, getClass, notify, notifyAll, toString, wait, wait, wait`

  ### Methods inherited from interface org.apache.jmeter.control.IteratingController

  `updateIterationIndex`

  ### Methods inherited from interface org.apache.jmeter.testelement.TestElement

  `canRemove, clear, clearTestElementChildren, clone, get, get, get, get, get, get, get, get, get, getComment, getName, getOrCreate, getOrCreate, getOrNull, getOrNull, getOrNull, getProperty, getPropertyAsBoolean, getPropertyAsBoolean, getPropertyAsDouble, getPropertyAsFloat, getPropertyAsInt, getPropertyAsInt, getPropertyAsLong, getPropertyAsLong, getPropertyAsString, getPropertyAsString, getPropertyOrNull, getPropertyOrNull, getString, getThreadContext, getThreadName, isEnabled, isRunningVersion, isTemporary, propertyIterator, recoverRunningVersion, removed, removeProperty, removeProperty, set, set, set, set, set, set, set, set, set, setComment, setEnabled, setName, setProperty, setProperty, setProperty, setProperty, setProperty, setProperty, setProperty, setProperty, setProperty, setRunningVersion, setTemporary, setThreadContext, setThreadName, traverse`

- ## Field Details

  - ### INFINITE_LOOP_COUNT

    public static final int INFINITE_LOOP_COUNT
    See Also:
      - Constant Field Values

  - ### LOOPS

    public static final String LOOPS
    See Also:
      - Constant Field Values

- ## Constructor Details

  - ### LoopController

    public LoopController()

- ## Method Details

  - ### getSchema

    public org.apache.jmeter.control.LoopControllerSchema getSchema()
    Specified by:
      `getSchema` in interface `org.apache.jmeter.testelement.TestElement`
    Overrides:
      `getSchema` in class `GenericController`

  - ### getProps

    public org.apache.jmeter.testelement.schema.PropertiesAccessor<? extends LoopController,? extends org.apache.jmeter.control.LoopControllerSchema> getProps()
    Specified by:
      `getProps` in interface `org.apache.jmeter.testelement.TestElement`
    Overrides:
      `getProps` in class `GenericController`

  - ### setLoops

    public void setLoops(int loops)

  - ### setLoops

    public void setLoops(String loopValue)

  - ### getLoops

    public int getLoops()

  - ### getLoopString

    public String getLoopString()

  - ### setContinueForever

    public void setContinueForever(boolean forever)
    Determines whether the loop will return any samples if it is rerun.
    Parameters:
      `forever` - true if the loop must be reset after ending a run

  - ### next

    public Sampler next()

    Determines the next sampler to be processed.

    If `GenericController.isDone()` is `true`, returns null.

    Gets the list element using current pointer. If this is `null`, calls `GenericController.nextIsNull()`.

    If the list element is a `Sampler`, calls `GenericController.nextIsASampler(Sampler)`, otherwise calls `GenericController.nextIsAController(Controller)`

    If any of the called methods throws `NextIsNullException`, returns `null`, otherwise the value obtained above is returned.

    Specified by:
      `next` in interface `Controller`
    Overrides:
      `next` in class `GenericController`
    Returns:
      the next sampler or `null`

  - ### setDone

    protected void setDone(boolean done)
    Overrides:
      `setDone` in class `GenericController`

  - ### nextIsNull

    protected Sampler nextIsNull() throws NextIsNullException
    Called by `GenericController.next()` when `GenericController.getCurrentElement()` returns `null`. Reinitialises the controller.
    Overrides:
      `nextIsNull` in class `GenericController`
    Returns:
      null (always, for this class)
    Throws:
      `NextIsNullException` - when the end of the list has already been reached

  - ### triggerEndOfLoop

    public void triggerEndOfLoop()
    Trigger end of loop condition on controller (used by Start Next Loop feature)
    Specified by:
      `triggerEndOfLoop` in interface `Controller`
    Overrides:
      `triggerEndOfLoop` in class `GenericController`

  - ### incrementLoopCount

    protected void incrementLoopCount()

  - ### resetLoopCount

    protected void resetLoopCount()

  - ### getIterCount

    protected int getIterCount()
    Overrides:
      `getIterCount` in class `GenericController`

  - ### reInitialize

    protected void reInitialize()
    Resets the controller (called after execution of last child of controller):
    - resetCurrent() (i.e. current=0)
    - increment iteration count
    - sets first=true
    - recoverRunningVersion() to set the controller back to the initial state
    Overrides:
      `reInitialize` in class `GenericController`

  - ### startNextLoop

    public void startNextLoop()
    Start next iteration
    Specified by:
      `startNextLoop` in interface `IteratingController`

  - ### breakLoop

    public void breakLoop()
    Description copied from interface: `IteratingController`
    Break loop ("break" keyword equivalent)
    Specified by:
      `breakLoop` in interface `IteratingController`

  - ### iterationStart

    public void iterationStart(LoopIterationEvent iterEvent)
    Description copied from interface: `LoopIterationListener`
    Called when a loop iteration is about to start.
    Specified by:
      `iterationStart` in interface `LoopIterationListener`
    Parameters:
      `iterEvent` - the event