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, 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

- - ### Field Summary

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

  - ### Method Summary

    All Methods Instance Methods Concrete Methods
    Modifier and Type | Method and Description
    --- | ---
    `String` | `getCondition()` Condition Accessor - this is gonna be like `${count} < 10`
    `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, 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`

- - ### Constructor Detail

    - #### IfController

          public IfController()

      constructor

    - #### IfController

          public IfController(String condition)

      constructor
      Parameters:
        `condition` - The condition for this controller

  - ### Method Detail

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

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