|
JMeter example source code file (ThreadGroup.java)
The JMeter ThreadGroup.java source code/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You 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.threads; import org.apache.jmeter.testelement.property.BooleanProperty; import org.apache.jmeter.testelement.property.IntegerProperty; import org.apache.jmeter.testelement.property.LongProperty; /** * ThreadGroup holds the settings for a JMeter thread group. * * This class is intended to be ThreadSafe. */ public class ThreadGroup extends AbstractThreadGroup { private static final long serialVersionUID = 240L; /** Ramp-up time */ public final static String RAMP_TIME = "ThreadGroup.ramp_time"; /** Whether scheduler is being used */ public final static String SCHEDULER = "ThreadGroup.scheduler"; /** Scheduler absolute start time */ public final static String START_TIME = "ThreadGroup.start_time"; /** Scheduler absolute end time */ public final static String END_TIME = "ThreadGroup.end_time"; /** Scheduler duration, overrides end time */ public final static String DURATION = "ThreadGroup.duration"; /** Scheduler start delay, overrides start time */ public final static String DELAY = "ThreadGroup.delay"; /** * No-arg constructor. */ public ThreadGroup() { } /** * Set whether scheduler is being used * * @param Scheduler true is scheduler is to be used */ public void setScheduler(boolean Scheduler) { setProperty(new BooleanProperty(SCHEDULER, Scheduler)); } /** * Get whether scheduler is being used * * @return true if scheduler is being used */ public boolean getScheduler() { return getPropertyAsBoolean(SCHEDULER); } /** * Set the absolute StartTime value. * * @param stime - * the StartTime value. */ public void setStartTime(long stime) { setProperty(new LongProperty(START_TIME, stime)); } /** * Get the absolute start time value. * * @return the start time value. */ public long getStartTime() { return getPropertyAsLong(START_TIME); } /** * Get the desired duration of the thread group test run * * @return the duration (in secs) */ public long getDuration() { return getPropertyAsLong(DURATION); } /** * Set the desired duration of the thread group test run * * @param duration * in seconds */ public void setDuration(long duration) { setProperty(new LongProperty(DURATION, duration)); } /** * Get the startup delay * * @return the delay (in secs) */ public long getDelay() { return getPropertyAsLong(DELAY); } /** * Set the startup delay * * @param delay * in seconds */ public void setDelay(long delay) { setProperty(new LongProperty(DELAY, delay)); } /** * Set the EndTime value. * * @param etime - * the EndTime value. */ public void setEndTime(long etime) { setProperty(new LongProperty(END_TIME, etime)); } /** * Get the end time value. * * @return the end time value. */ public long getEndTime() { return getPropertyAsLong(END_TIME); } /** * Set the ramp-up value. * * @param rampUp * the ramp-up value. */ public void setRampUp(int rampUp) { setProperty(new IntegerProperty(RAMP_TIME, rampUp)); } /** * Get the ramp-up value. * * @return the ramp-up value. */ public int getRampUp() { return getPropertyAsInt(ThreadGroup.RAMP_TIME); } @Override public void scheduleThread(JMeterThread thread) { int rampUp = getRampUp(); float perThreadDelay = ((float) (rampUp * 1000) / (float) getNumThreads()); thread.setInitialDelay((int) (perThreadDelay * thread.getThreadNum())); scheduleThread(thread, this); } /** * This will schedule the time for the JMeterThread. * * @param thread * @param group */ private void scheduleThread(JMeterThread thread, ThreadGroup group) { // if true the Scheduler is enabled if (group.getScheduler()) { long now = System.currentTimeMillis(); // set the start time for the Thread if (group.getDelay() > 0) {// Duration is in seconds thread.setStartTime(group.getDelay() * 1000 + now); } else { long start = group.getStartTime(); if (start < now) { start = now; // Force a sensible start time } thread.setStartTime(start); } // set the endtime for the Thread if (group.getDuration() > 0) {// Duration is in seconds thread.setEndTime(group.getDuration() * 1000 + (thread.getStartTime())); } else { thread.setEndTime(group.getEndTime()); } // Enables the scheduler thread.setScheduled(true); } } } Other JMeter examples (source code examples)Here is a short list of links related to this JMeter ThreadGroup.java source code file: |
... 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.