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.
