Ok, clear for me now, thanks. On Mon, Aug 20, 2012 at 2:30 AM, sebb <[email protected]> wrote:
> On 19 August 2012 22:05, Philippe Mouawad <[email protected]> > wrote: > > Hello Sebb, > > Looking at this commit, it seems to me it changes a little delayBy(...) > > behaviour: > > > > - in older code, if InterruptedException happened delayBy would exit > > - in new code, it will be ignored > > > > Is this voluntary ? why ? > > Yes, it was deliberate. > > AIUI, Thread.sleep can be interrupted for a variety of reasons. > If the test is being stopped the loop will exit because of the running > check. > Otherwise, we want the delay to be continued. > > > > > Thanks > > > > Regards > > > > Philippe > > > > On Tue, Aug 14, 2012 at 12:25 PM, <[email protected]> wrote: > > > >> Author: sebb > >> Date: Tue Aug 14 10:25:17 2012 > >> New Revision: 1372829 > >> > >> URL: http://svn.apache.org/viewvc?rev=1372829&view=rev > >> Log: > >> Arrange fields and methods > >> Drop unnecessary parameter to private method > >> > >> Modified: > >> jmeter/trunk/src/core/org/apache/jmeter/threads/ThreadGroup.java > >> > >> Modified: > jmeter/trunk/src/core/org/apache/jmeter/threads/ThreadGroup.java > >> URL: > >> > http://svn.apache.org/viewvc/jmeter/trunk/src/core/org/apache/jmeter/threads/ThreadGroup.java?rev=1372829&r1=1372828&r2=1372829&view=diff > >> > >> > ============================================================================== > >> --- jmeter/trunk/src/core/org/apache/jmeter/threads/ThreadGroup.java > >> (original) > >> +++ jmeter/trunk/src/core/org/apache/jmeter/threads/ThreadGroup.java Tue > >> Aug 14 10:25:17 2012 > >> @@ -41,6 +41,10 @@ public class ThreadGroup extends Abstrac > >> > >> private static final long WAIT_TO_DIE = > >> JMeterUtils.getPropDefault("jmeterengine.threadstop.wait", 5 * 1000); > // 5 > >> seconds > >> > >> + /** How often to check for shutdown during ramp-up, default 1000ms > */ > >> + private static final int RAMPUP_GRANULARITY = > >> + > JMeterUtils.getPropDefault("jmeterthread.rampup.granularity", > >> 1000); // $NON-NLS-1$ > >> + > >> //+ JMX entries - do not change the string values > >> > >> /** Ramp-up time */ > >> @@ -66,14 +70,11 @@ public class ThreadGroup extends Abstrac > >> > >> //- JMX entries > >> > >> - /** How often to check for shutdown during ramp-up, default 1000ms > */ > >> - private static final int RAMPUP_GRANULARITY = > >> - > JMeterUtils.getPropDefault("jmeterthread.rampup.granularity", > >> 1000); // $NON-NLS-1$ > >> - > >> private Thread threadStarter; > >> > >> private JMeterThread[] jmThreads; > >> > >> + // List of active threads > >> private Map<JMeterThread, Thread> allThreads = new > >> ConcurrentHashMap<JMeterThread, Thread>(); > >> > >> /** > >> @@ -92,7 +93,6 @@ public class ThreadGroup extends Abstrac > >> public ThreadGroup() { > >> } > >> > >> - > >> /** > >> * Set whether scheduler is being used > >> * > >> @@ -102,10 +102,6 @@ public class ThreadGroup extends Abstrac > >> setProperty(new BooleanProperty(SCHEDULER, Scheduler)); > >> } > >> > >> - private boolean isDelayedStartup() { > >> - return getPropertyAsBoolean(DELAYED_START); > >> - } > >> - > >> /** > >> * Get whether scheduler is being used > >> * > >> @@ -210,6 +206,10 @@ public class ThreadGroup extends Abstrac > >> return getPropertyAsInt(ThreadGroup.RAMP_TIME); > >> } > >> > >> + private boolean isDelayedStartup() { > >> + return getPropertyAsBoolean(DELAYED_START); > >> + } > >> + > >> @Override > >> public void scheduleThread(JMeterThread thread) > >> { > >> @@ -262,24 +262,19 @@ public class ThreadGroup extends Abstrac > >> /** > >> * Wait for delay with RAMPUP_GRANULARITY > >> * @param delay delay in ms > >> - * @param type Delay type > >> */ > >> - private void delayBy(long delay, String type) { > >> + private void delayBy(long delay) { > >> if (delay > 0) { > >> long start = System.currentTimeMillis(); > >> long end = start + delay; > >> long now=0; > >> - long pause = RAMPUP_GRANULARITY; > >> + long pause = RAMPUP_GRANULARITY; // maximum pause to use > >> while(running && (now = System.currentTimeMillis()) < end) > { > >> long togo = end - now; > >> if (togo < pause) { > >> pause = togo; > >> } > >> - try { > >> - Thread.sleep(pause); // delay between checks > >> - } catch (InterruptedException e) { > >> - break; > >> - } > >> + pause(pause); // delay between checks > >> } > >> } > >> } > >> @@ -487,6 +482,13 @@ public class ThreadGroup extends Abstrac > >> } > >> } > >> > >> + private void pause(long ms){ > >> + try { > >> + Thread.sleep(ms); > >> + } catch (InterruptedException e) { > >> + } > >> + } > >> + > >> /** > >> * Starts Threads using ramp up > >> */ > >> @@ -505,11 +507,11 @@ public class ThreadGroup extends Abstrac > >> long now = System.currentTimeMillis(); > >> // set the start time for the Thread > >> if (getDelay() > 0) {// Duration is in seconds > >> - delayBy(getDelay() * 1000, "start"); > >> + delayBy(getDelay() * 1000); > >> } else { > >> long start = getStartTime(); > >> if (start >= now) { > >> - delayBy(start-now, "start"); > >> + delayBy(start-now); > >> } > >> // else start immediately > >> } > >> > >> > >> > > > > > > -- > > Cordialement. > > Philippe Mouawad. > -- Cordialement. Philippe Mouawad.
