You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@jmeter.apache.org by pm...@apache.org on 2013/01/20 15:59:13 UTC
svn commit: r1435860 - in /jmeter/trunk:
src/components/org/apache/jmeter/visualizers/RespTimeGraphVisualizer.java
xdocs/changes.xml
Author: pmouawad
Date: Sun Jan 20 14:59:12 2013
New Revision: 1435860
URL: http://svn.apache.org/viewvc?rev=1435860&view=rev
Log:
Bug 54451 - Response Time Graph reports wrong times when the are many samples for same time
Also fixed OOM in getData() introduced by 54287 (reset of values was not impacted to use Long.MAX_VALUE and Long.MIN_VALUE)
Bugzilla Id: 54451
Modified:
jmeter/trunk/src/components/org/apache/jmeter/visualizers/RespTimeGraphVisualizer.java
jmeter/trunk/xdocs/changes.xml
Modified: jmeter/trunk/src/components/org/apache/jmeter/visualizers/RespTimeGraphVisualizer.java
URL: http://svn.apache.org/viewvc/jmeter/trunk/src/components/org/apache/jmeter/visualizers/RespTimeGraphVisualizer.java?rev=1435860&r1=1435859&r2=1435860&view=diff
==============================================================================
--- jmeter/trunk/src/components/org/apache/jmeter/visualizers/RespTimeGraphVisualizer.java (original)
+++ jmeter/trunk/src/components/org/apache/jmeter/visualizers/RespTimeGraphVisualizer.java Sun Jan 20 14:59:12 2013
@@ -69,6 +69,7 @@ import org.apache.jmeter.visualizers.uti
import org.apache.jorphan.gui.GuiUtils;
import org.apache.jorphan.gui.JLabeledTextField;
import org.apache.jorphan.logging.LoggingManager;
+import org.apache.jorphan.math.StatCalculatorLong;
import org.apache.log.Logger;
public class RespTimeGraphVisualizer extends AbstractVisualizer implements ActionListener, Clearable {
@@ -181,7 +182,7 @@ public class RespTimeGraphVisualizer ext
/**
* We want to retain insertion order, so LinkedHashMap is necessary
*/
- private final Map<String, Map<Long, Long>> pList = new LinkedHashMap<String, Map<Long, Long>>();
+ private final Map<String, Map<Long, StatCalculatorLong>> pList = new LinkedHashMap<String, Map<Long, StatCalculatorLong>>();
private long durationTest = 0;
@@ -234,19 +235,22 @@ public class RespTimeGraphVisualizer ext
}
}
// List of value by sampler
- Map<Long, Long> subList = pList.get(sampleLabel);
+ Map<Long, StatCalculatorLong> subList = pList.get(sampleLabel);
final Long startTimeIntervalLong = Long.valueOf(startTimeInterval);
if (subList != null) {
long respTime = sampleResult.getTime();
- Long value = subList.get(startTimeIntervalLong);
- if (value!=null) {
- respTime = (value.longValue() + respTime) / 2;
+ StatCalculatorLong value = subList.get(startTimeIntervalLong);
+ if (value==null) {
+ value = new StatCalculatorLong();
+ subList.put(startTimeIntervalLong, value);
}
- subList.put(startTimeIntervalLong, Long.valueOf(respTime));
+ value.addValue(respTime, 1);
} else {
// We want to retain insertion order, so LinkedHashMap is necessary
- Map<Long, Long> newSubList = new LinkedHashMap<Long, Long>();
- newSubList.put(startTimeIntervalLong, Long.valueOf(sampleResult.getTime()));
+ Map<Long, StatCalculatorLong> newSubList = new LinkedHashMap<Long, StatCalculatorLong>(5);
+ StatCalculatorLong helper = new StatCalculatorLong();
+ helper.addValue(Long.valueOf(sampleResult.getTime()),1);
+ newSubList.put(startTimeIntervalLong, helper);
pList.put(sampleLabel, newSubList);
}
}
@@ -316,13 +320,13 @@ public class RespTimeGraphVisualizer ext
double nanBegin = 0;
List<Double> nanList = new ArrayList<Double>();
int s = 0;
- for (Map<Long, Long> subList : pList.values()) {
+ for (Map<Long, StatCalculatorLong> subList : pList.values()) {
int idx = 0;
while (idx < durationTest) {
long keyShift = minStartTime + idx;
- Long value = subList.get(Long.valueOf(keyShift));
+ StatCalculatorLong value = subList.get(Long.valueOf(keyShift));
if (value != null) {
- nanLast = value.doubleValue();
+ nanLast = value.getMean();
data[s][idx] = nanLast;
// Calculate intermediate values (if needed)
int nlsize = nanList.size();
@@ -360,8 +364,8 @@ public class RespTimeGraphVisualizer ext
internalList.clear();
seriesNames.clear();
pList.clear();
- minStartTime = Integer.MAX_VALUE;
- maxStartTime = Integer.MIN_VALUE;
+ minStartTime = Long.MAX_VALUE;
+ maxStartTime = Long.MIN_VALUE;
durationTest = 0;
colorIdx = 0;
}
Modified: jmeter/trunk/xdocs/changes.xml
URL: http://svn.apache.org/viewvc/jmeter/trunk/xdocs/changes.xml?rev=1435860&r1=1435859&r2=1435860&view=diff
==============================================================================
--- jmeter/trunk/xdocs/changes.xml (original)
+++ jmeter/trunk/xdocs/changes.xml Sun Jan 20 14:59:12 2013
@@ -171,6 +171,7 @@ and right angle bracket (>) in search
<li><bugzilla>54088</bugzilla> - The type video/f4m is text, not binary</li>
<li><bugzilla>54166</bugzilla> - ViewResultsTree could not render the HTML response: handle failure to parse HTML</li>
<li><bugzilla>54287</bugzilla> - Incorrect Timestamp in Response Time Graph when using a date with time in Date format field</li>
+<li><bugzilla>54451</bugzilla> - Response Time Graph reports wrong times when the are many samples for same time</li>
</ul>
<h3>Timers, Assertions, Config, Pre- & Post-Processors</h3>