Package org.apache.jmeter.functions

# Class IterationCounter

java.lang.Object
org.apache.jmeter.functions.AbstractFunction
org.apache.jmeter.functions.IterationCounter

All Implemented Interfaces:
  `Function`, `ThreadListener`

@AutoService(Function.class) public class IterationCounter extends AbstractFunction implements ThreadListener
Counter that can be referenced anywhere in the Thread Group. It can be configured per User (Thread Local) or globally.

Since:
  1.X

- ## Constructor Summary

  Constructors
  Constructor
  Description
  `IterationCounter()`

- ## Method Summary

  Modifier and Type
  Method
  Description
  `String`
  `execute(SampleResult previousResult, Sampler currentSampler)`
  N.B.
  `List<String>`
  `getArgumentDesc()`
  Return a list of strings briefly describing each parameter your function takes.
  `String`
  `getReferenceKey()`
  Return the name of your function.
  `void`
  `setParameters(Collection<CompoundVariable> parameters)`
  Note: This is always called even if no parameters are provided (versions of JMeter after 2.3.1)
  `void`
  `threadFinished()`
  Called for each thread after all samples have been processed.
  `void`
  `threadStarted()`
  Called for each thread before starting sampling.

  ### Methods inherited from class org.apache.jmeter.functions.AbstractFunction

  `addVariableValue, checkMinParameterCount, checkParameterCount, checkParameterCount, execute, getVariables`

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

  `clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

- ## Constructor Details

  - ### IterationCounter

    public IterationCounter()

- ## Method Details

  - ### execute

    public String execute(SampleResult previousResult, Sampler currentSampler) throws InvalidVariableException

    N.B. execute() should be synchronized if function is operating with non-thread-safe objects (e.g. operates with files).

    JMeter ensures setParameters() happens-before execute(): setParameters is executed in main thread, and worker threads are started after that.
    Specified by:
      `execute` in interface `Function`
    Specified by:
      `execute` in class `AbstractFunction`
    Parameters:
      `previousResult` - The previous `SampleResult`
      `currentSampler` - The current `Sampler`
    Returns:
      The replacement value, which was generated by the function
    Throws:
      `InvalidVariableException` - - when the variables for the function call can't be evaluated
    See Also:
      - `Function.execute(SampleResult, Sampler)`

  - ### setParameters

    public void setParameters(Collection<CompoundVariable> parameters) throws InvalidVariableException
    Note: This is always called even if no parameters are provided (versions of JMeter after 2.3.1)
    Specified by:
      `setParameters` in interface `Function`
    Specified by:
      `setParameters` in class `AbstractFunction`
    Parameters:
      `parameters` - The parameters for the function call
    Throws:
      `InvalidVariableException` - - when the variables for the function call can't be evaluated
    See Also:
      - `Function.setParameters(Collection)`

  - ### getReferenceKey

    public String getReferenceKey()
    Return the name of your function. Convention is to prepend "__" to the name (ie "__regexFunction")
    Specified by:
      `getReferenceKey` in interface `Function`
    Specified by:
      `getReferenceKey` in class `AbstractFunction`
    Returns:
      The name of the function
    See Also:
      - `Function.getReferenceKey()`

  - ### getArgumentDesc

    public List<String> getArgumentDesc()
    Return a list of strings briefly describing each parameter your function takes. Please use JMeterUtils.getResString(resource_name) to grab a resource string. Otherwise, your help text will be difficult to internationalize. This list is not optional. If you don't wish to write help, you must at least return a List containing the correct number of blank strings, one for each argument.
    Specified by:
      `getArgumentDesc` in interface `Function`
    Returns:
      List with brief descriptions for each parameter the function takes

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