Author: sebb
Date: Wed Nov 30 17:50:59 2005
New Revision: 350097

URL: http://svn.apache.org/viewcvs?rev=350097&view=rev
Log:
Bug 37705 - reset counter at end

Modified:
    
jakarta/jmeter/branches/rel-2-1/src/components/org/apache/jmeter/timers/SyncTimer.java

Modified: 
jakarta/jmeter/branches/rel-2-1/src/components/org/apache/jmeter/timers/SyncTimer.java
URL: 
http://svn.apache.org/viewcvs/jakarta/jmeter/branches/rel-2-1/src/components/org/apache/jmeter/timers/SyncTimer.java?rev=350097&r1=350096&r2=350097&view=diff
==============================================================================
--- 
jakarta/jmeter/branches/rel-2-1/src/components/org/apache/jmeter/timers/SyncTimer.java
 (original)
+++ 
jakarta/jmeter/branches/rel-2-1/src/components/org/apache/jmeter/timers/SyncTimer.java
 Wed Nov 30 17:50:59 2005
@@ -34,15 +34,16 @@
  * 
  */
 public class SyncTimer extends AbstractTestElement implements Timer, 
Serializable, TestBean {
-       private static final long serialVersionUID = 1;
+       private static final long serialVersionUID = 2;
 
-       static Logger log = LoggingManager.getLoggerForClass();
+       private static final Logger log = LoggingManager.getLoggerForClass();
 
-       int[] timerCounter = new int[] { 0 };
+    // Must be an Object so it will be shared between threads
+       private int[] timerCounter = new int[] { 0 };
 
-       transient Object sync = new Object();
+       private transient Object sync = new Object();
 
-       int groupSize;
+       private int groupSize;
 
        /**
         * @return Returns the numThreads.
@@ -67,23 +68,28 @@
        public long delay() {
                synchronized (sync) {
                        timerCounter[0]++;
-                       if ((getGroupSize() == 0 && timerCounter[0] >= 
JMeterContextService.getNumberOfThreads())
-                                       || (getGroupSize() > 0 && 
timerCounter[0] >= getGroupSize())) {
-                               timerCounter[0] = 0;
+                       final int groupSz = getGroupSize();
+            final int count = timerCounter[0];
+            if (
+                (groupSz == 0 && count >= 
JMeterContextService.getNumberOfThreads())
+                               ||
+                (groupSz > 0 && count >= groupSz)
+                ) {
                                sync.notifyAll();
                        } else {
                                try {
                                        sync.wait();
                                } catch (InterruptedException e) {
-                                       e.printStackTrace();
+                                       log.warn(e.getLocalizedMessage());
                                }
                        }
+            timerCounter[0]=0; // Reset for next time
                }
                return 0;
        }
 
        /**
-        * We have to controll the cloning process because we need some 
cross-thread
+        * We have to control the cloning process because we need some 
cross-thread
         * communication if our synctimers are to be able to determine when to 
block
         * and when to release.
         */



---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to