org.apache.jmeter.timers.poissonarrivals

## Class PreciseThroughputTimer

- java.lang.Object
- - org.apache.jmeter.testelement.AbstractTestElement
  - - org.apache.jmeter.timers.poissonarrivals.PreciseThroughputTimer

All Implemented Interfaces:
  Serializable, Cloneable, Searchable, TestBean, TestElement, TestStateListener, Timer

    public class PreciseThroughputTimer
    extends AbstractTestElement
    implements Cloneable, Timer, TestStateListener, TestBean

This timer generates Poisson arrivals with constant throughput. On top of that, it tries to maintain the exact amount of arrivals for a given timeframe (`throughputPeriod`).

Since:
  4.0
See Also:
  Serialized Form

### Field Summary

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

`COMMENTS, ENABLED, GUI_CLASS, NAME, TEST_CLASS`

### Constructor Summary

Constructors
Constructor and Description
`PreciseThroughputTimer()`

### Method Summary

All Methods Instance Methods Concrete Methods Deprecated Methods
`Object` `clone()`
`long` `delay()` This method is called after a sampling process is done to know how much time the sampling thread has to wait until sampling again.
`double` `getAllowedThroughputSurplus()` Deprecated.
`int` `getBatchSize()`
`int` `getBatchThreadDelay()`
`long` `getDuration()`
`int` `getExactLimit()` Deprecated.
`Long` `getRandomSeed()`
`double` `getThroughput()` Returns number of generated samples per `getThroughputPeriod()`
`int` `getThroughputPeriod()` Allows to use business values for throughput configuration.
`void` `setAllowedThroughputSurplus(double allowedThroughputSurplus)` Deprecated.
`void` `setBatchSize(int batchSize)`
`void` `setBatchThreadDelay(int batchThreadDelay)`
`void` `setDuration(long duration)`
`void` `setExactLimit(int exactLimit)` Deprecated.
`void` `setRandomSeed(Long randomSeed)`
`void` `setThroughput(double throughput)` Sets number of generated samples per `getThroughputPeriod()`
`void` `setThroughputPeriod(int throughputPeriod)`
`void` `testEnded()` Called once for all threads after the end of a test.
`void` `testEnded(String s)` Called once for all threads after the end of a test.
`void` `testStarted()` Called just before the start of the test from the main engine thread.
`void` `testStarted(String host)` Called just before the start of the test from the main engine thread.

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

`addPropertiesValues, addProperty, addProperty, addTestElement, canRemove, clear, clearTemporary, clearTestElementChildren, 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.timers.Timer

`isModifiable`

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

`removed`

### Constructor Detail

#### PreciseThroughputTimer

    public PreciseThroughputTimer()

### Method Detail

#### clone

    public Object clone()

Specified by:
  `clone` in interface `TestElement`
Overrides:
  `clone` in class `AbstractTestElement`

#### testStarted

    public void testStarted()

Description copied from interface: `TestStateListener`

Called just before the start of the test from the main engine thread. This is before the test elements are cloned. Note that not all the test variables will have been set up at this point.

N.B. testStarted() and testEnded() are called from different threads.

Specified by:
  `testStarted` in interface `TestStateListener`
See Also:
  `StandardJMeterEngine.run()`

#### testStarted

    public void testStarted(String host)

Description copied from interface: `TestStateListener`

Called just before the start of the test from the main engine thread. This is before the test elements are cloned. Note that not all the test variables will have been set up at this point.

N.B. testStarted() and testEnded() are called from different threads.

Specified by:
  `testStarted` in interface `TestStateListener`
Parameters:
  `host` - name of host
See Also:
  `StandardJMeterEngine.run()`

#### testEnded

    public void testEnded()

Description copied from interface: `TestStateListener`

Called once for all threads after the end of a test. This will use the same element instances as at the start of the test.

N.B. testStarted() and testEnded() are called from different threads.

Specified by:
  `testEnded` in interface `TestStateListener`
See Also:
  `StandardJMeterEngine.stopTest()`

#### testEnded

    public void testEnded(String s)

Description copied from interface: `TestStateListener`

Called once for all threads after the end of a test. This will use the same element instances as at the start of the test.

N.B. testStarted() and testEnded() are called from different threads.

Specified by:
  `testEnded` in interface `TestStateListener`
Parameters:
  `s` - name of host
See Also:
  `StandardJMeterEngine.stopTest()`

#### delay

    public long delay()

Description copied from interface: `Timer`
This method is called after a sampling process is done to know how much time the sampling thread has to wait until sampling again.

Specified by:
  `delay` in interface `Timer`
Returns:
  the computed delay value.

#### getThroughput

    public double getThroughput()

Returns number of generated samples per `getThroughputPeriod()`

Returns:
  number of samples per `getThroughputPeriod()`

#### setThroughput

    public void setThroughput(double throughput)

Sets number of generated samples per `getThroughputPeriod()`

Parameters:
  `throughput` - number of samples per `getThroughputPeriod()`

#### getThroughputPeriod

    public int getThroughputPeriod()

Allows to use business values for throughput configuration. For instance, 100 samples per hour vs 100 samples per minute.

Returns:
  the length of the throughput period in seconds

#### setThroughputPeriod

    public void setThroughputPeriod(int throughputPeriod)

#### getDuration

    public long getDuration()

#### setDuration

    public void setDuration(long duration)

#### getExactLimit

    @Deprecated
     @API(status=DEPRECATED,
         since="5.3.0")
    public int getExactLimit()

Deprecated.

#### setExactLimit

    @Deprecated
     @API(status=DEPRECATED,
         since="5.3.0")
    public void setExactLimit(int exactLimit)

Deprecated.

#### getAllowedThroughputSurplus

    @Deprecated
     @API(status=DEPRECATED,
         since="5.3.0")
    public double getAllowedThroughputSurplus()

Deprecated.

#### setAllowedThroughputSurplus

    @Deprecated
     @API(status=DEPRECATED,
         since="5.3.0")
    public void setAllowedThroughputSurplus(double allowedThroughputSurplus)

Deprecated.

#### getRandomSeed

    public Long getRandomSeed()

#### setRandomSeed

    public void setRandomSeed(Long randomSeed)

#### getBatchSize

    public int getBatchSize()

#### setBatchSize

    public void setBatchSize(int batchSize)

#### getBatchThreadDelay

    public int getBatchThreadDelay()

#### setBatchThreadDelay

    public void setBatchThreadDelay(int batchThreadDelay)