@Override public long delay() { double nextEvent; EventProducer events = getEventProducer(); synchronized (events) { nextEvent = events.next(); } long delay = (long) (nextEvent * TimeUnit.SECONDS.toMillis(1) + testStarted - System.currentTimeMillis()); if (log.isDebugEnabled()) { log.debug("Calculated delay is {}", delay); } delay = Math.max(0, delay); long endTime = getThreadContext().getThread().getEndTime(); if (endTime > 0 && System.currentTimeMillis() + delay > endTime) { throw new JMeterStopThreadException("The thread is scheduled to stop in " + (System.currentTimeMillis() - endTime) + " ms" + " and the throughput timer generates a delay of " + delay + "." + " JMeter (as of 4.0) does not support interrupting of sleeping threads, thus terminating the thread manually." ); } return delay; }
/** * Adjust delay so that initialDelay does not exceed end of test * @param initialDelay initial delay in millis * @return initialDelay or adjusted delay */ public long adjustDelay(final long initialDelay) { JMeterThread thread = JMeterContextService.getContext().getThread(); long endTime = thread != null ? thread.getEndTime() : 0; return adjustDelay(initialDelay, endTime); }
thread.setThreadName(Integer.toString(n)); tg.scheduleThread(thread, now); row.add(thread.getEndTime() - 1, 0); row.add(thread.getEndTime(), -1);
thread.setThreadNum(n); tg.scheduleThread(thread, now); row.add(thread.getEndTime() - 1, 0); row.add(thread.getEndTime(), -1);
thread.setThreadNum(n); tg.scheduleThread(thread, now); row.add(thread.getEndTime() - 1, 0); row.add(thread.getEndTime(), -1);
thread.setThreadName(Integer.toString(n)); tg.scheduleThread(thread, now); row.add(thread.getEndTime() - 1, 0); row.add(thread.getEndTime(), -1);
thread.setThreadName(Integer.toString(n)); tg.scheduleThread(thread, now); row.add(thread.getEndTime() - 1, 0); row.add(thread.getEndTime(), -1);
thread.setThreadNum(n); tg.scheduleThread(thread, now); row.add(thread.getEndTime() - 1, 0); row.add(thread.getEndTime(), -1);