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]