Class ConstantThroughputTimer
- java.lang.Object
-
- org.apache.jmeter.testelement.AbstractTestElement
-
- org.apache.jmeter.timers.ConstantThroughputTimer
-
- All Implemented Interfaces:
Serializable
,Cloneable
,Searchable
,TestBean
,TestElement
,TestStateListener
,Timer
public class ConstantThroughputTimer extends AbstractTestElement implements Timer, TestStateListener, TestBean
This class implements a constant throughput timer. A Constant Throughtput 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 class
ConstantThroughputTimer.Mode
This enum defines the calculation modes used by the ConstantThroughputTimer.
-
Field Summary
-
Fields inherited from interface org.apache.jmeter.testelement.TestElement
COMMENTS, ENABLED, GUI_CLASS, NAME, TEST_CLASS
-
-
Constructor Summary
Constructors Constructor Description ConstantThroughputTimer()
Constructor for a non-configured ConstantThroughputTimer.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description protected long
calculateCurrentTarget(long currentTime)
Calculate the target time by adding the result of private methodcalculateDelay()
to the givencurrentTime
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.void
testEnded()
Called once for all threads after the end of a test.void
testEnded(String host)
Called once for all threads after the end of a test.void
testStarted()
Get the timer ready to compute delays for a new test.void
testStarted(String host)
Called just before the start of the test from the main engine thread.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, 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
-
-
-
-
Method Detail
-
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 interfaceTimer
- 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 methodcalculateDelay()
to the givencurrentTime
- 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.
-
testStarted
public void testStarted()
Get the timer ready to compute delays for a new test.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 interfaceTestStateListener
- See Also:
StandardJMeterEngine.run()
-
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 interfaceTestElement
- Overrides:
setProperty
in classAbstractTestElement
- Parameters:
property
- the property to be set
-
testEnded
public void testEnded()
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 interfaceTestStateListener
- See Also:
StandardJMeterEngine.stopTest()
-
testStarted
public void testStarted(String host)
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 interfaceTestStateListener
- Parameters:
host
- name of host- See Also:
StandardJMeterEngine.run()
-
testEnded
public void testEnded(String host)
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 interfaceTestStateListener
- Parameters:
host
- name of host- See Also:
StandardJMeterEngine.stopTest()
-
-