org.apache.jmeter.control

## Class InterleaveControl

- java.lang.Object
- - org.apache.jmeter.testelement.AbstractTestElement
  - - org.apache.jmeter.control.GenericController
    - - org.apache.jmeter.control.InterleaveControl

- All Implemented Interfaces:
    Serializable, Cloneable, Controller, Searchable, TestElement, TestCompilerHelper
  Direct Known Subclasses:
    RandomController

      public class InterleaveControl
      extends GenericController
      implements Serializable

  Alternate among each of the children controllers or samplers for each loop iteration
  See Also:
    Serialized Form

- - ### Field Summary

    Fields
    Modifier and Type | Field and Description
    --- | ---
    `static int` | `IGNORE_SUB_CONTROLLERS`
    `static int` | `USE_SUB_CONTROLLERS`

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

      `current, subControllersAndSamplers`

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

      `COMMENTS, ENABLED, GUI_CLASS, NAME, TEST_CLASS`

  - ### Constructor Summary

    Constructors
    Constructor and Description
    `InterleaveControl()` Constructor for the InterleaveControl object

  - ### Method Summary

    All Methods Instance Methods Concrete Methods
    Modifier and Type | Method and Description
    --- | ---
    `protected void` | `currentReturnedNull(Controller c)` If the controller is done, remove it from the list, otherwise increment to next entry in list.
    `boolean` | `getInterleaveAccrossThreads()`
    `int` | `getStyle()`
    `protected void` | `incrementCurrent()` Increments the current pointer; called by currentReturnedNull to move the controller on to its next child.
    `void` | `initialize()` Called to initialize a controller at the beginning of a test iteration.
    `protected boolean` | `isSkipNext()`
    `Sampler` | `next()` Determines the next sampler to be processed.
    `protected Sampler` | `nextIsAController(Controller controller)` Called by `GenericController.next()` if the element is a Controller, and returns the next sampler from the controller.
    `protected Sampler` | `nextIsASampler(Sampler element)` Increment the current pointer and return the element.
    `protected Sampler` | `nextIsNull()` If the current is null, reset and continue searching.
    `void` | `reInitialize()` Resets the controller (called after execution of last child of controller): resetCurrent() (i.e.
    `protected void` | `setCurrentElement(TestElement currentElement)` Empty implementation - does nothing.
    `void` | `setInterleaveAccrossThreads(boolean accrossThreads)`
    `protected void` | `setSkipNext(boolean skipNext)`
    `void` | `setStyle(int style)`

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

      `addIterationListener, addTestElement, addTestElementOnce, fireIterationStart, fireIterEvents, getCurrentElement, getIterCount, getSubControllers, incrementIterCount, initializeSubControllers, isDone, isFirst, readResolve, removeCurrentElement, removeIterationListener, resetCurrent, resetIterCount, setDone, setFirst, triggerEndOfLoop`

    - ### 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, 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.testelement.TestElement

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

- - ### Field Detail

    - #### IGNORE_SUB_CONTROLLERS

          public static final int IGNORE_SUB_CONTROLLERS

      See Also:
        Constant Field Values

    - #### USE_SUB_CONTROLLERS

          public static final int USE_SUB_CONTROLLERS

      See Also:
        Constant Field Values

  - ### Constructor Detail

    - #### InterleaveControl

          public InterleaveControl()

      Constructor for the InterleaveControl object

  - ### Method Detail

    - #### reInitialize

          public 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`

    - #### setStyle

          public void setStyle(int style)

    - #### getStyle

          public int getStyle()

    - #### setInterleaveAccrossThreads

          public void setInterleaveAccrossThreads(boolean accrossThreads)

    - #### getInterleaveAccrossThreads

          public boolean getInterleaveAccrossThreads()

    - #### 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`

    - #### nextIsAController

          protected Sampler nextIsAController(Controller controller)
                                       throws NextIsNullException

      Called by `GenericController.next()` if the element is a Controller, and returns the next sampler from the controller. If this is `null`, then updates the current pointer and makes recursive call to `GenericController.next()`.
      Overrides:
        `nextIsAController` in class `GenericController`
      Parameters:
        `controller` - the current next element
      Returns:
        the next sampler
      Throws:
        `NextIsNullException` - when the end of the list has already been reached

    - #### nextIsASampler

          protected Sampler nextIsASampler(Sampler element)
                                    throws NextIsNullException

      Increment the current pointer and return the element. Called by `GenericController.next()` if the element is a sampler. (May be overridden by sub-classes).
      Overrides:
        `nextIsASampler` in class `GenericController`
      Parameters:
        `element` - the current next element
      Returns:
        input element
      Throws:
        `NextIsNullException` - when the end of the list has already been reached

    - #### nextIsNull

          protected Sampler nextIsNull()

      If the current is null, reset and continue searching. The searchStart attribute will break us off when we start a repeat.

      Called by `GenericController.next()` when `GenericController.getCurrentElement()` returns `null`. Reinitialises the controller.

      Overrides:
        `nextIsNull` in class `GenericController`
      Returns:
        null (always, for this class)

    - #### setCurrentElement

          protected void setCurrentElement(TestElement currentElement)
                                    throws NextIsNullException

      Empty implementation - does nothing.
      Overrides:
        `setCurrentElement` in class `GenericController`
      Parameters:
        `currentElement` - the current element
      Throws:
        `NextIsNullException` - when the list has been completed already

    - #### currentReturnedNull

          protected void currentReturnedNull(Controller c)

      If the controller is done, remove it from the list, otherwise increment to next entry in list.
      Overrides:
        `currentReturnedNull` in class `GenericController`
      Parameters:
        `c` - controller

    - #### isSkipNext

          protected boolean isSkipNext()

    - #### setSkipNext

          protected void setSkipNext(boolean skipNext)

    - #### incrementCurrent

          protected void incrementCurrent()

      Increments the current pointer; called by currentReturnedNull to move the controller on to its next child.
      Overrides:
        `incrementCurrent` in class `GenericController`

    - #### initialize

          public void initialize()

      Description copied from interface: `Controller`
      Called to initialize a controller at the beginning of a test iteration.
      Specified by:
        `initialize` in interface `Controller`
      Overrides:
        `initialize` in class `GenericController`
      See Also:
        `GenericController.initialize()`

Copyright © 1998-2022 Apache Software Foundation. All Rights Reserved.