Package org.apache.jmeter.control

# Class IfController

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

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

public class IfController extends GenericController implements Serializable, ThreadListener
This is a Conditional Controller; it will execute the set of statements (samplers/controllers, etc) while the 'condition' is true.

In a programming world - this is equivalent of :

     if (condition) {
              statements ....
              }

In JMeter you may have :

     Thread-Group (set to loop a number of times or indefinitely,
        ... Samplers ... (e.g. Counter )
        ... Other Controllers ....
        ... IfController ( condition set to something like - ${counter} < 10)
           ... statements to perform if condition is true
           ...
        ... Other Controllers /Samplers }

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 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
  `IfController()`
  constructor
  `IfController(String condition)`
  constructor

- ## Method Summary

  Modifier and Type
  Method
  Description
  `String`
  `getCondition()`
  Condition Accessor - this is gonna be like `${count} < 10`
  `org.apache.jmeter.testelement.schema.PropertiesAccessor<? extends IfController,? extends org.apache.jmeter.control.IfControllerSchema>`
  `getProps()`
  `org.apache.jmeter.control.IfControllerSchema`
  `getSchema()`
  `boolean`
  `isDone()`
  Indicates whether the Controller is done delivering Samplers for the rest of the test.
  `boolean`
  `isEvaluateAll()`
  `boolean`
  `isUseExpression()`
  `Sampler`
  `next()`
  Determines the next sampler to be processed.
  `void`
  `setCondition(String condition)`
  Condition Accessor - this is gonna be like `${count} < 10`
  `void`
  `setEvaluateAll(boolean b)`
  `void`
  `setUseExpression(boolean selected)`
  `void`
  `threadFinished()`
  Called for each thread after all samples have been processed.
  `void`
  `threadStarted()`
  Called for each thread before starting sampling.
  `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, getIterCount, getSubControllers, incrementCurrent, incrementIterCount, initialize, initializeSubControllers, isFirst, nextIsAController, nextIsASampler, nextIsNull, readResolve, reInitialize, removeCurrentElement, removeIterationListener, resetCurrent, resetIterCount, setCurrentElement, setDone, 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.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`

- ## Constructor Details

  - ### IfController

    public IfController()
    constructor

  - ### IfController

    public IfController(String condition)
    constructor
    Parameters:
      `condition` - The condition for this controller

- ## Method Details

  - ### getSchema

    public org.apache.jmeter.control.IfControllerSchema 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 IfController,? extends org.apache.jmeter.control.IfControllerSchema> getProps()
    Specified by:
      `getProps` in interface `org.apache.jmeter.testelement.TestElement`
    Overrides:
      `getProps` in class `GenericController`

  - ### setCondition

    public void setCondition(String condition)
    Condition Accessor - this is gonna be like `${count} < 10`
    Parameters:
      `condition` - The condition for this controller

  - ### getCondition

    public String getCondition()
    Condition Accessor - this is gonna be like `${count} < 10`
    Returns:
      the condition associated with this controller

  - ### isDone

    public boolean isDone()
    Description copied from interface: `Controller`
    Indicates whether the Controller is done delivering Samplers for the rest of the test. When the top-level controller returns true to JMeterThread, the thread is complete.
    Specified by:
      `isDone` in interface `Controller`
    Overrides:
      `isDone` in class `GenericController`
    Returns:
      boolean
    See Also:
      - `Controller.isDone()`

  - ### next

    public Sampler next()
    Description copied from class: `GenericController`

    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`
    See Also:
      - `Controller.next()`

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

  - ### isEvaluateAll

    public boolean isEvaluateAll()

  - ### setEvaluateAll

    public void setEvaluateAll(boolean b)

  - ### isUseExpression

    public boolean isUseExpression()

  - ### setUseExpression

    public void setUseExpression(boolean selected)

  - ### threadStarted

    public void threadStarted()
    Description copied from interface: `ThreadListener`
    Called for each thread before starting sampling. WARNING: this is called before any Config test elements are processed, so any properties they define will not have been merged in yet. See org.apache.jmeter.threads.JMeterThread#threadStarted()
    Specified by:
      `threadStarted` in interface `ThreadListener`

  - ### threadFinished

    public void threadFinished()
    Description copied from interface: `ThreadListener`
    Called for each thread after all samples have been processed. See org.apache.jmeter.threads.JMeterThread#threadFinished(org.apache.jmeter.engine.event.LoopIterationListener)
    Specified by:
      `threadFinished` in interface `ThreadListener`