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.

Reply via email to