Author: sebb
Date: Wed Nov 14 10:26:50 2007
New Revision: 595004
URL: http://svn.apache.org/viewvc?rev=595004&view=rev
Log:
Hostname can now be saved in XML files
Modified:
jakarta/jmeter/trunk/src/core/org/apache/jmeter/save/SaveService.java
jakarta/jmeter/trunk/src/core/org/apache/jmeter/save/converters/SampleResultConverter.java
jakarta/jmeter/trunk/xdocs/changes.xml
Modified: jakarta/jmeter/trunk/src/core/org/apache/jmeter/save/SaveService.java
URL:
http://svn.apache.org/viewvc/jakarta/jmeter/trunk/src/core/org/apache/jmeter/save/SaveService.java?rev=595004&r1=595003&r2=595004&view=diff
==============================================================================
--- jakarta/jmeter/trunk/src/core/org/apache/jmeter/save/SaveService.java
(original)
+++ jakarta/jmeter/trunk/src/core/org/apache/jmeter/save/SaveService.java Wed
Nov 14 10:26:50 2007
@@ -44,11 +44,13 @@
import org.apache.log.Logger;
import com.thoughtworks.xstream.XStream;
+import com.thoughtworks.xstream.io.xml.XppDriver;
import com.thoughtworks.xstream.mapper.CannotResolveClassException;
import com.thoughtworks.xstream.mapper.Mapper;
import com.thoughtworks.xstream.mapper.MapperWrapper;
import com.thoughtworks.xstream.converters.ConversionException;
import com.thoughtworks.xstream.converters.Converter;
+import com.thoughtworks.xstream.converters.DataHolder;
import
com.thoughtworks.xstream.converters.reflection.PureJavaReflectionProvider;
/**
@@ -60,6 +62,8 @@
private static final Logger log = LoggingManager.getLoggerForClass();
+ public static final String SAMPLE_EVENT_OBJECT = "SampleEvent"; //
$NON-NLS-1$
+
private static final XStream saver = new XStream(new
PureJavaReflectionProvider()){
// Override wrapMapper in order to insert the Wrapper in the chain
protected MapperWrapper wrapMapper(MapperWrapper next) {
@@ -278,6 +282,7 @@
saver.toXML(el, writer);
}
+ // Used by Test code
public static Object loadElement(InputStream in) throws IOException {
// Get the InputReader to use
InputStreamReader inputStreamReader = getInputStreamReader(in);
@@ -295,7 +300,7 @@
return saver.fromXML(in);
}
- public synchronized static void saveSampleResult(SampleEvent event,
OutputStream out) throws Exception {
+ public synchronized static void saveSampleResult(SampleEvent event,
OutputStream out) throws IOException {
// Get the OutputWriter to use
OutputStreamWriter outputStreamWriter =
getOutputStreamWriter(out);
writeXmlHeader(outputStreamWriter);
@@ -308,12 +313,17 @@
* @deprecated Use saveSampleResult(SampleResult res, OutputStream out)
instead, which
* takes the fileEncoding property of SaveService into consideration
*/
- public synchronized static void saveSampleResult(SampleEvent evt,
Writer writer) throws Exception {
- saver.toXML(evt.getResult(), writer); // TODO use event when
can get unmarshall working
+ // Used by ResultCollector#recordResult()
+ public synchronized static void saveSampleResult(SampleEvent evt,
Writer writer) throws IOException {
+ DataHolder dh = saver.newDataHolder();
+ 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
+ saver.marshal(evt.getResult(), new
XppDriver().createWriter(writer), dh); // TODO use event when can get
unmarshall working
writer.write('\n');
}
- public synchronized static void saveTestElement(TestElement elem,
OutputStream out) throws Exception {
+ public synchronized static void saveTestElement(TestElement elem,
OutputStream out) throws IOException {
// Get the OutputWriter to use
OutputStreamWriter outputStreamWriter =
getOutputStreamWriter(out);
// Use deprecated method, to avoid duplicating code
@@ -325,7 +335,8 @@
* @deprecated Use saveTestElement(TestElement elem, OutputStream out)
instead, which
* takes the fileEncoding property of SaveService into consideration
*/
- public synchronized static void saveTestElement(TestElement elem,
Writer writer) throws Exception {
+ // Used by ResultCollector#recordStats()
+ public synchronized static void saveTestElement(TestElement elem,
Writer writer) throws IOException {
saver.toXML(elem, writer);
writer.write('\n');
}
Modified:
jakarta/jmeter/trunk/src/core/org/apache/jmeter/save/converters/SampleResultConverter.java
URL:
http://svn.apache.org/viewvc/jakarta/jmeter/trunk/src/core/org/apache/jmeter/save/converters/SampleResultConverter.java?rev=595004&r1=595003&r2=595004&view=diff
==============================================================================
---
jakarta/jmeter/trunk/src/core/org/apache/jmeter/save/converters/SampleResultConverter.java
(original)
+++
jakarta/jmeter/trunk/src/core/org/apache/jmeter/save/converters/SampleResultConverter.java
Wed Nov 14 10:26:50 2007
@@ -27,8 +27,10 @@
import java.net.URL;
import org.apache.jmeter.assertions.AssertionResult;
+import org.apache.jmeter.samplers.SampleEvent;
import org.apache.jmeter.samplers.SampleResult;
import org.apache.jmeter.samplers.SampleSaveConfiguration;
+import org.apache.jmeter.save.SaveService;
import org.apache.jorphan.util.Converter;
import com.thoughtworks.xstream.mapper.Mapper;
import com.thoughtworks.xstream.converters.MarshallingContext;
@@ -61,10 +63,13 @@
protected static final String TAG_RESPONSE_FILE = "responseFile";
//$NON-NLS-1$
// samplerData attributes. Must be unique. Keep sorted by string value.
+ // Ensure the documentation is updated when new attributes are added
+ // Current in component_reference.xml "Sample Result Save Configuration"
private static final String ATT_BYTES = "by"; //$NON-NLS-1$
private static final String ATT_DATA_ENCODING = "de"; //$NON-NLS-1$
private static final String ATT_DATA_TYPE = "dt"; //$NON-NLS-1$
- private static final String ATT_ERROR_COUNT = "ec"; //$NON-NLS-1$
+ private static final String ATT_ERROR_COUNT = "ec"; //$NON-NLS-1$
+ private static final String ATT_HOSTNAME = "hn"; //$NON-NLS-1$
private static final String ATT_LABEL = "lb"; //$NON-NLS-1$
private static final String ATT_LATENCY = "lt"; //$NON-NLS-1$
@@ -81,8 +86,8 @@
private static final String ATT_SUCCESS = "s"; //$NON-NLS-1$
private static final String ATT_SAMPLE_COUNT = "sc"; //$NON-NLS-1$
private static final String ATT_TIME = "t"; //$NON-NLS-1$
- private static final String ATT_TIME_STAMP = "ts"; //$NON-NLS-1$
private static final String ATT_THREADNAME = "tn"; //$NON-NLS-1$
+ private static final String ATT_TIME_STAMP = "ts"; //$NON-NLS-1$
/**
* Returns the converter version; used to check for possible
@@ -150,7 +155,7 @@
writer.addAttribute(ATT_CLASS, JAVA_LANG_STRING);
try {
if (SampleResult.TEXT.equals(res.getDataType())){
- writer.setValue(new
String(res.getResponseData(), res.getDataEncoding()));
+ writer.setValue(new
String(res.getResponseData(), res.getDataEncodingWithDefault()));
}
// Otherwise don't save anything - no point
} catch (UnsupportedEncodingException e) {
@@ -250,7 +255,7 @@
if (save.saveDataType())
writer.addAttribute(ATT_DATA_TYPE,
ConversionHelp.encode(res.getDataType()));
if (save.saveEncoding())
- writer.addAttribute(ATT_DATA_ENCODING,
ConversionHelp.encode(res.getDataEncoding()));
+ writer.addAttribute(ATT_DATA_ENCODING,
ConversionHelp.encode(res.getDataEncodingNoDefault()));
if (save.saveBytes())
writer.addAttribute(ATT_BYTES,
String.valueOf(res.getBytes()));
if (save.saveSampleCount()){
@@ -261,6 +266,12 @@
writer.addAttribute(ATT_GRP_THRDS,
String.valueOf(res.getGroupThreads()));
writer.addAttribute(ATT_ALL_THRDS,
String.valueOf(res.getAllThreads()));
}
+ if (save.saveHostname()){
+ SampleEvent event = (SampleEvent)
context.get(SaveService.SAMPLE_EVENT_OBJECT);
+ if (event != null) {
+ writer.addAttribute(ATT_HOSTNAME, event.getHostname());
+ }
+ }
}
/**
@@ -321,10 +332,11 @@
} else if (nodeName.equals(TAG_REQUEST_HEADER)) {
res.setRequestHeaders((String) subItem);
} else if (nodeName.equals(TAG_RESPONSE_DATA)) {
+ final String dataEncoding =
res.getDataEncodingWithDefault();
try {
- res.setResponseData(((String)
subItem).getBytes(res.getDataEncoding()));
+ res.setResponseData(((String)
subItem).getBytes(dataEncoding));
} catch (UnsupportedEncodingException e) {
- res.setResponseData(("Can't support the char
set: " + res.getDataEncoding()).getBytes());
+ res.setResponseData(("Can't support the char
set: " + dataEncoding).getBytes());
}
} else if (nodeName.equals(TAG_SAMPLER_DATA)) {
res.setSamplerData((String) subItem);
Modified: jakarta/jmeter/trunk/xdocs/changes.xml
URL:
http://svn.apache.org/viewvc/jakarta/jmeter/trunk/xdocs/changes.xml?rev=595004&r1=595003&r2=595004&view=diff
==============================================================================
--- jakarta/jmeter/trunk/xdocs/changes.xml (original)
+++ jakarta/jmeter/trunk/xdocs/changes.xml Wed Nov 14 10:26:50 2007
@@ -95,6 +95,7 @@
To change the list of removed headers, define the property
proxy.headers.remove as a comma-separated list of headers to remove</li>
<li>The javaScript function now has access to JMeter variables and context
etc. See <a href="usermanual/functions.html#__javaScript">JavaScript
function</a></li>
<li>Use drop-down list for BSF Sampler language field</li>
+<li>Add hostname to items that can be saved in CSV and XML output files.</li>
</ul>
<h4>Non-functional Improvements</h4>
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]