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 2014/09/14 16:08:20 UTC
svn commit: r1624851 -
/jmeter/trunk/src/core/org/apache/jmeter/save/SaveService.java
Author: pmouawad
Date: Sun Sep 14 14:08:19 2014
New Revision: 1624851
URL: http://svn.apache.org/r1624851
Log:
Bug 56975 - Error when opening JTL(XML) file (that saves sub samplers results) due to TreeMarshaller$CircularReferenceException: Recursive reference to parent object
Adding more infos when error occurs (UbikLoadPack patch)
Bugzilla Id: 56975
Modified:
jmeter/trunk/src/core/org/apache/jmeter/save/SaveService.java
Modified: jmeter/trunk/src/core/org/apache/jmeter/save/SaveService.java
URL: http://svn.apache.org/viewvc/jmeter/trunk/src/core/org/apache/jmeter/save/SaveService.java?rev=1624851&r1=1624850&r2=1624851&view=diff
==============================================================================
--- jmeter/trunk/src/core/org/apache/jmeter/save/SaveService.java (original)
+++ jmeter/trunk/src/core/org/apache/jmeter/save/SaveService.java Sun Sep 14 14:08:19 2014
@@ -33,8 +33,10 @@ import java.util.List;
import java.util.Map;
import java.util.Properties;
+import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.jmeter.reporters.ResultCollectorHelper;
import org.apache.jmeter.samplers.SampleEvent;
+import org.apache.jmeter.samplers.SampleResult;
import org.apache.jmeter.testelement.TestElement;
import org.apache.jmeter.util.JMeterUtils;
import org.apache.jmeter.util.NameUpdater;
@@ -356,11 +358,28 @@ public class SaveService {
dh.put(SAMPLE_EVENT_OBJECT, evt);
// This is effectively the same as saver.toXML(Object, Writer) except we get to provide the DataHolder
// Don't know why there is no method for this in the XStream class
- JTLSAVER.marshal(evt.getResult(), new XppDriver().createWriter(writer), dh);
+ try {
+ JTLSAVER.marshal(evt.getResult(), new XppDriver().createWriter(writer), dh);
+ } catch(RuntimeException e) {
+ throw new IllegalArgumentException("Failed marshalling:"+(evt.getResult() != null ? showDebuggingInfo(evt.getResult()) : "null"), e);
+ }
writer.write('\n');
}
/**
+ *
+ * @param result SampleResult
+ * @return String debugging information
+ */
+ private static String showDebuggingInfo(SampleResult result) {
+ try {
+ return "class:"+result.getClass()+",content:"+ToStringBuilder.reflectionToString(result);
+ } catch(Exception e) {
+ return "Exception occured creating debug from event, message:"+e.getMessage();
+ }
+ }
+
+ /**
* @param elem test element
* @param writer output stream which must be created using {@link #getFileEncoding(String)}
*/