You are viewing a plain text version of this content. The canonical link for it is here.
Posted to jmeter-dev@jakarta.apache.org by se...@apache.org on 2005/12/01 02:51:03 UTC
svn commit: r350097 -
/jakarta/jmeter/branches/rel-2-1/src/components/org/apache/jmeter/timers/SyncTimer.java
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: jmeter-dev-unsubscribe@jakarta.apache.org
For additional commands, e-mail: jmeter-dev-help@jakarta.apache.org