protected double getCurrentRate ( ) { long rampUp = owner . getRampUpSeconds ( ) ; long hold = owner . getHoldSeconds ( ) ; long steps = owner . getStepsAsLong ( ) ; double throughput = owner . getTargetLevelFactored ( ) ; double timeOffset = rollingTime / 1000.0 - startTime ; if ( timeOffset >= rampUp + hold ) { return - 1 ; // means no more requests } if ( rampUp == 0 || timeOffset > rampUp ) { return throughput ; } else if ( steps > 0 ) { double stepSize = throughput / ( double ) steps ; double stepLen = rampUp / ( double ) steps ; return stepSize * ( Math . floor ( timeOffset / stepLen ) + 1 ) ; } else { double slope = throughput / rampUp ; return slope * Math . sqrt ( 2 * scheduledCount / slope ) ; } }
ported from Taurus PBench module