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]

Reply via email to