mstover1 2004/12/13 16:37:13
Modified: src/core/org/apache/jmeter/threads JMeterContextService.java
src/components/org/apache/jmeter/timers
ConstantThroughputTimer.java
ConstantThroughputTimerResources.properties
ConstantThroughputTimerResources_ja.properties
ConstantThroughputTimerBeanInfo.java
Log:
Synchronizing thread count access in ContextService
Adding a legacy option to the ConstantThroughput Timer.
Revision Changes Path
1.10 +5 -5
jakarta-jmeter/src/core/org/apache/jmeter/threads/JMeterContextService.java
Index: JMeterContextService.java
===================================================================
RCS file:
/home/cvs/jakarta-jmeter/src/core/org/apache/jmeter/threads/JMeterContextService.java,v
retrieving revision 1.9
retrieving revision 1.10
diff -u -r1.9 -r1.10
--- JMeterContextService.java 13 Dec 2004 21:43:00 -0000 1.9
+++ JMeterContextService.java 14 Dec 2004 00:37:13 -0000 1.10
@@ -63,17 +63,17 @@
}
}
- static public void incrNumberOfThreads()
+ static synchronized void incrNumberOfThreads()
{
numberOfThreads++;
}
- static public void decrNumberOfThreads()
+ static synchronized void decrNumberOfThreads()
{
numberOfThreads--;
}
- static public int getNumberOfThreads()
+ static public synchronized int getNumberOfThreads()
{
return numberOfThreads;
}
1.20 +41 -6
jakarta-jmeter/src/components/org/apache/jmeter/timers/ConstantThroughputTimer.java
Index: ConstantThroughputTimer.java
===================================================================
RCS file:
/home/cvs/jakarta-jmeter/src/components/org/apache/jmeter/timers/ConstantThroughputTimer.java,v
retrieving revision 1.19
retrieving revision 1.20
diff -u -r1.19 -r1.20
--- ConstantThroughputTimer.java 13 Dec 2004 21:43:00 -0000 1.19
+++ ConstantThroughputTimer.java 14 Dec 2004 00:37:13 -0000 1.20
@@ -35,7 +35,7 @@
public class ConstantThroughputTimer extends AbstractTestElement implements
Timer, TestListener,
TestBean
{
-
+ private static final long serialVersionUID = 1;
private static final Logger log = LoggingManager.getLoggerForClass();
/**
@@ -43,7 +43,23 @@
* timer will be calculated so that the next request happens at this time.
*/
private long previousTime = 0;
+
+ private boolean legacyMode = true;
+/**
+ * @return Returns the legacyMode.
+ */
+public boolean isLegacyMode()
+{
+ return legacyMode;
+}
+/**
+ * @param legacyMode The legacyMode to set.
+ */
+public void setLegacyMode(boolean legacyMode)
+{
+ this.legacyMode = legacyMode;
+}
/**
* Desired throughput, in samples per minute.
*/
@@ -85,11 +101,7 @@
public synchronized long delay()
{
long currentTime = System.currentTimeMillis();
- long currentTarget =
- (previousTime == 0) ? currentTime
- + ((JMeterContextService.getContext().getThreadNum() + 1) *
(long) (60000.0 / getThroughput()))
- : previousTime
- + (JMeterContextService.getNumberOfThreads() * (long)
(60000.0 / getThroughput()));
+ long currentTarget = calculateCurrentTarget(currentTime);
previousTime = currentTarget;
if (currentTime > currentTarget)
{
@@ -100,6 +112,29 @@
}
/**
+ * @param currentTime
+ * @return
+ */
+protected long calculateCurrentTarget(long currentTime)
+{
+ long currentTarget = currentTime;
+ if(previousTime == 0)
+ {
+ currentTarget = currentTime + (
+ (legacyMode) ? (long) (60000.0 / getThroughput()) :
+ (JMeterContextService.getContext().getThreadNum() +
1) * (long) (60000.0 / getThroughput())
+ );
+ }
+ else
+ {
+ currentTarget = currentTime + (
+ (legacyMode) ? (long) (60000.0 / getThroughput()) :
+ (JMeterContextService.getNumberOfThreads()) *
(long) (60000.0 / getThroughput())
+ );
+ }
+ return currentTarget;
+}
+/**
* Provide a description of this timer class.
*
* TODO: Is this ever used? I can't remember where. Remove if it isn't --
1.3 +2 -0
jakarta-jmeter/src/components/org/apache/jmeter/timers/ConstantThroughputTimerResources.properties
Index: ConstantThroughputTimerResources.properties
===================================================================
RCS file:
/home/cvs/jakarta-jmeter/src/components/org/apache/jmeter/timers/ConstantThroughputTimerResources.properties,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- ConstantThroughputTimerResources.properties 16 Jan 2004 02:56:09
-0000 1.2
+++ ConstantThroughputTimerResources.properties 14 Dec 2004 00:37:13
-0000 1.3
@@ -2,3 +2,5 @@
delay.displayName=Delay before each affected sampler
throughput.displayName=Target throughput (in samples per minute)
throughput.shortDescription=Maximum number of samples you want to obtain per
minute, per thread, from all affected samplers.
+legacyMode.displayName=Legacy Mode
+legacyMode.shortDescription=The Constant Throughput Timer used to delay each
thread as though it was the only thread in the test. Now, it calculates the
delay taking into account the number of threads in the test.
\ No newline at end of file
1.3 +2 -0
jakarta-jmeter/src/components/org/apache/jmeter/timers/ConstantThroughputTimerResources_ja.properties
Index: ConstantThroughputTimerResources_ja.properties
===================================================================
RCS file:
/home/cvs/jakarta-jmeter/src/components/org/apache/jmeter/timers/ConstantThroughputTimerResources_ja.properties,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- ConstantThroughputTimerResources_ja.properties 20 Jan 2004 01:27:30
-0000 1.2
+++ ConstantThroughputTimerResources_ja.properties 14 Dec 2004 00:37:13
-0000 1.3
@@ -1,3 +1,5 @@
#Stored by I18NEdit, may be edited!
displayName=\u5B9A\u6570\u30B9\u30EB\u30FC\u30D7\u30C3\u30C8\u30BF\u30A4\u30DE
throughput.displayName=\u30BF\u30FC\u30B2\u30C3\u30C8\u30B9\u30EB\u30FC\u30D7\u30C3\u30C8(\u30B5\u30F3\u30D7\u30EB\u6570/\u30DF\u30EA\u79D2)
+legacyMode.displayName=Legacy Mode
+legacyMode.shortDescription=The Constant Throughput Timer used to delay each
thread as though it was the only thread in the test. Now, it calculates the
delay taking into account the number of threads in the test.
1.6 +9 -3
jakarta-jmeter/src/components/org/apache/jmeter/timers/ConstantThroughputTimerBeanInfo.java
Index: ConstantThroughputTimerBeanInfo.java
===================================================================
RCS file:
/home/cvs/jakarta-jmeter/src/components/org/apache/jmeter/timers/ConstantThroughputTimerBeanInfo.java,v
retrieving revision 1.5
retrieving revision 1.6
diff -u -r1.5 -r1.6
--- ConstantThroughputTimerBeanInfo.java 11 Mar 2004 01:21:03 -0000
1.5
+++ ConstantThroughputTimerBeanInfo.java 14 Dec 2004 00:37:13 -0000
1.6
@@ -33,10 +33,16 @@
{
super(ConstantThroughputTimer.class);
- createPropertyGroup("delay", new String[] { "throughput" });
+ createPropertyGroup("delay", new String[] { "throughput",
"legacyMode" });
PropertyDescriptor p= property("throughput");
p.setValue(NOT_UNDEFINED, Boolean.TRUE);
p.setValue(DEFAULT, new Double(0.0));
+
+ p = property("legacyMode");
+ p.setValue(NOT_UNDEFINED,Boolean.TRUE);
+ p.setValue(DEFAULT, Boolean.FALSE);
+ p.setValue(NOT_OTHER,Boolean.TRUE);
+ p.setValue(NOT_EXPRESSION,Boolean.TRUE);
}
}
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]