|
What this is
Other links
The source code
// $Header: /home/cvs/jakarta-jmeter/src/components/org/apache/jmeter/timers/ConstantThroughputTimer.java,v 1.14 2004/03/11 01:21:03 sebb Exp $
/*
* Copyright 2002-2004 The Apache Software Foundation.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*
*/
package org.apache.jmeter.timers;
import org.apache.jmeter.engine.event.LoopIterationEvent;
import org.apache.jmeter.testbeans.TestBean;
import org.apache.jmeter.testelement.TestListener;
import org.apache.jmeter.util.JMeterUtils;
import org.apache.jorphan.logging.LoggingManager;
import org.apache.log.Logger;
/**
* This class implements a constant throughput timer. A Constant Throughtput
* Timer paces the samplers under it's influence so that the total number of
* samples per unit of time approaches a given constant as much as possible.
*
* @version $Id: ConstantThroughputTimer.java,v 1.14 2004/03/11 01:21:03 sebb Exp $
*/
public class ConstantThroughputTimer
extends TestBean
implements Timer, TestListener
{
protected static final Logger log = LoggingManager.getLoggerForClass();
/**
* Target time for the start of the next request. The delay provided by
* the timer will be calculated so that the next request happens at this
* time.
*/
private long targetTime= 0;
/**
* Desired throughput, in samples per minute.
*/
private double throughput;
/**
* Constructor for a non-configured ConstantThroughputTimer.
*/
public ConstantThroughputTimer()
{
}
/**
* Sets the desired throughput.
*
* @param throughput Desired sampling rate, in samples per minute.
*/
public void setThroughput(double throughput)
{
this.throughput= throughput;
}
/**
* Gets the configured desired throughput.
*
* @return the rate at which samples should occur, in samples per minute.
*/
public double getThroughput()
{
return throughput;
}
/**
* Retrieve the delay to use during test execution.
*
* @see org.apache.jmeter.timers.Timer#delay()
*/
public synchronized long delay()
{
long currentTime = System.currentTimeMillis();
long currentTarget = targetTime == 0 ? currentTime : targetTime;
targetTime = currentTarget + (long)( 60000.0 / getThroughput() );
if (currentTime > currentTarget)
{
// We're behind schedule -- try to catch up:
return 0;
}
return currentTarget - currentTime;
}
/**
* 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.
*
* @return the description of this timer class.
*/
public String toString()
{
return JMeterUtils.getResString("constant_throughput_timer_memo");
}
/**
* Get the timer ready to compute delays for a new test.
*
* @see org.apache.jmeter.testelement.TestListener#testStarted()
*/
public void testStarted()
{
log.debug("Test started - reset throughput calculation.");
targetTime= 0;
}
/* (non-Javadoc)
* @see org.apache.jmeter.testelement.TestListener#testEnded()
*/
public void testEnded()
{
}
/* (non-Javadoc)
* @see org.apache.jmeter.testelement.TestListener#testStarted(java.lang.String)
*/
public void testStarted(String host)
{
}
/* (non-Javadoc)
* @see org.apache.jmeter.testelement.TestListener#testEnded(java.lang.String)
*/
public void testEnded(String host)
{
}
/* (non-Javadoc)
* @see org.apache.jmeter.testelement.TestListener#testIterationStart(org.apache.jmeter.engine.event.LoopIterationEvent)
*/
public void testIterationStart(LoopIterationEvent event)
{
}
}
|
| ... this post is sponsored by my books ... | |
#1 New Release! |
FP Best Seller |
Copyright 1998-2024 Alvin Alexander, alvinalexander.com
All Rights Reserved.
A percentage of advertising revenue from
pages under the /java/jwarehouse
URI on this website is
paid back to open source projects.