Package org.apache.jmeter.timers

# Class ConstantThroughputTimer

java.lang.Object
org.apache.jmeter.testelement.AbstractTestElement
org.apache.jmeter.timers.ConstantThroughputTimer

All Implemented Interfaces:
  `Serializable`, `Cloneable`, `Searchable`, `TestBean`, `org.apache.jmeter.testelement.TestElement`, `Timer`

public class ConstantThroughputTimer extends AbstractTestElement implements Timer, TestBean
This class implements a constant throughput timer. A Constant Throughput Timer paces the samplers under its influence so that the total number of samples per unit of time approaches a given constant as much as possible. There are two different ways of pacing the requests: - delay each thread according to when it last ran - delay each thread according to when any thread last ran

See Also:
  - Serialized Form

## Nested Class Summary

Nested Classes
Modifier and Type
Class
Description
`static enum`
`ConstantThroughputTimer.Mode`
This enum defines the calculation modes used by the ConstantThroughputTimer.

## 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 String`
`CALC_MODE`
`static final String`
`THROUGHPUT`

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

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

## Constructor Summary

Constructors
Constructor
Description
`ConstantThroughputTimer()`
Constructor for a non-configured ConstantThroughputTimer.

## Method Summary

Modifier and Type
Method
Description
`protected long`
`calculateCurrentTarget(long currentTime)`
Calculate the target time by adding the result of private method `calculateDelay()` to the given `currentTime`
`long`
`delay()`
Retrieve the delay to use during test execution.
`int`
`getCalcMode()`
`double`
`getThroughput()`
Gets the configured desired throughput.
`void`
`setCalcMode(int mode)`
`void`
`setProperty(JMeterProperty property)`
Override the setProperty method in order to convert the original String calcMode property.
`void`
`setThroughput(double throughput)`
Sets the desired throughput.
`String`
`toString()`
Provide a description of this timer class.

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

`addPropertiesValues, addProperty, addProperty, addTestElement, 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, setRunningVersion, setTemporary, setThreadContext, setThreadName, traverse, traverseCollection, traverseMap, traverseProperty`

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

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

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

`get, get, get, get, get, get, get, get, get, getOrCreate, getOrCreate, getOrNull, getOrNull, getOrNull, getPropertyOrNull, getProps, getSchema, getString, removed, removeProperty, set, set, set, set, set, set, set, set, set`

### Methods inherited from interface org.apache.jmeter.timers.Timer

`isModifiable`

## Field Details

### THROUGHPUT

public static final String THROUGHPUT

See Also:
  - Constant Field Values

### CALC_MODE

public static final String CALC_MODE

See Also:
  - Constant Field Values

## Constructor Details

### ConstantThroughputTimer

public ConstantThroughputTimer()
Constructor for a non-configured ConstantThroughputTimer.

## Method Details

### setThroughput

public void setThroughput(double throughput)
Sets the desired throughput.

Parameters:
  `throughput` - Desired sampling rate, in samples per minute.

### getThroughput

public double getThroughput()
Gets the configured desired throughput.

Returns:
  the rate at which samples should occur, in samples per minute.

### getCalcMode

public int getCalcMode()

### setCalcMode

public void setCalcMode(int mode)

### delay

public long delay()
Retrieve the delay to use during test execution.

Specified by:
  `delay` in interface `Timer`
Returns:
  the computed delay value.
See Also:
  - `Timer.delay()`

### calculateCurrentTarget

protected long calculateCurrentTarget(long currentTime)
Calculate the target time by adding the result of private method `calculateDelay()` to the given `currentTime`

Parameters:
  `currentTime` - time in ms
Returns:
  new Target time

### toString

public String toString()
Provide a description of this timer class. TODO: Is this ever used? I can't remember where. Remove if it isn't -- TODO: or obtain text from bean's displayName or shortDescription.

Overrides:
  `toString` in class `Object`
Returns:
  the description of this timer class.

### setProperty

public void setProperty(JMeterProperty property)
Override the setProperty method in order to convert the original String calcMode property. This used the locale-dependent display value, so caused problems when the language was changed. Note that the calcMode StringProperty is replaced with an IntegerProperty so the conversion only needs to happen once.

Specified by:
  `setProperty` in interface `org.apache.jmeter.testelement.TestElement`
Overrides:
  `setProperty` in class `AbstractTestElement`