code: 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);
          }
      }
docs: ported from Taurus PBench module