Author: sebb
Date: Fri Nov 23 11:17:10 2007
New Revision: 597726

URL: http://svn.apache.org/viewvc?rev=597726&view=rev
Log:
Add Successes Only logging and display

Modified:
    jakarta/jmeter/trunk/docs/changes.html
    jakarta/jmeter/trunk/docs/images/screenshots/simpledatawriter.png
    jakarta/jmeter/trunk/docs/usermanual/component_reference.html
    
jakarta/jmeter/trunk/src/core/org/apache/jmeter/reporters/ResultCollector.java
    
jakarta/jmeter/trunk/src/core/org/apache/jmeter/resources/messages.properties
    jakarta/jmeter/trunk/src/core/org/apache/jmeter/save/OldSaveService.java
    
jakarta/jmeter/trunk/src/core/org/apache/jmeter/visualizers/gui/AbstractVisualizer.java
    jakarta/jmeter/trunk/xdocs/changes.xml
    jakarta/jmeter/trunk/xdocs/images/screenshots/simpledatawriter.png
    jakarta/jmeter/trunk/xdocs/usermanual/component_reference.xml

Modified: jakarta/jmeter/trunk/docs/changes.html
URL: 
http://svn.apache.org/viewvc/jakarta/jmeter/trunk/docs/changes.html?rev=597726&r1=597725&r2=597726&view=diff
==============================================================================
--- jakarta/jmeter/trunk/docs/changes.html (original)
+++ jakarta/jmeter/trunk/docs/changes.html Fri Nov 23 11:17:10 2007
@@ -569,6 +569,11 @@
                                                </li>
                                                                        
 
+                                                                               
                <li     >
+                                                               Add Successes 
Only logging and display
+                                               </li>
+                                                                       
+
                                                </ul>
                                                                                
                                                                                
<h4     >
                                                                Non-functional 
Improvements

Modified: jakarta/jmeter/trunk/docs/images/screenshots/simpledatawriter.png
URL: 
http://svn.apache.org/viewvc/jakarta/jmeter/trunk/docs/images/screenshots/simpledatawriter.png?rev=597726&r1=597725&r2=597726&view=diff
==============================================================================
Binary files - no diff available.

Modified: jakarta/jmeter/trunk/docs/usermanual/component_reference.html
URL: 
http://svn.apache.org/viewvc/jakarta/jmeter/trunk/docs/usermanual/component_reference.html?rev=597726&r1=597725&r2=597726&view=diff
==============================================================================
--- jakarta/jmeter/trunk/docs/usermanual/component_reference.html (original)
+++ jakarta/jmeter/trunk/docs/usermanual/component_reference.html Fri Nov 23 
11:17:10 2007
@@ -5464,6 +5464,67 @@
        </table></p>
                                                                        
 
+                                                                               
                <p      >
+                                                               
+       The figure below shows an example of the result file configuration panel
+
+                                                                               
                <p><table border="0" cellspacing="0" 
cellpadding="0"><tr><td><img 
src="../images/screenshots/simpledatawriter.png"><br>
+       <font size="-1">                                                Result 
file configuration panel
+                       </font></td></tr></table></p>
+                                                                       
+
+                                               </p>
+                                                                       
+
+                                                                               
         <p>
+       <b>Parameters</b>
+       <table border="1" cellspacing="0" cellpadding="2">
+       <tr><th>Attribute</th><th>Description</th><th>Required</th></tr>
+                       <tr>
+                       <td>File Name</td>
+                       <td>                                            Name of 
the file containing sample results
+                       </td>
+                       <td>
+                                                                               
        No
+                                                               </td>
+               </tr>
+                       <tr>
+                       <td>Browse...</td>
+                       <td>                                            File 
Browse Button
+                       </td>
+                       <td>
+                                                                               
        No
+                                                               </td>
+               </tr>
+                       <tr>
+                       <td>Errors</td>
+                       <td>                                            Select 
this to write/read only results with errors
+                       </td>
+                       <td>
+                                                                               
        No
+                                                               </td>
+               </tr>
+                       <tr>
+                       <td>Successes</td>
+                       <td>                                            Select 
this to write/read only results without errors.
+        If neither Errors nor Successes is selected, then all results are 
processed.
+                       </td>
+                       <td>
+                                                                               
        No
+                                                               </td>
+               </tr>
+                       <tr>
+                       <td>Configure</td>
+                       <td>                                            
Configure Button, see below
+                       </td>
+                       <td>
+                                                                               
        No
+                                                               </td>
+               </tr>
+               </table>
+       </p>
+                                                                       
+
                                                </description>
                                                                                
                                                                                
                <table border="0" cellspacing="0" cellpadding="2">
                <tr><td>
@@ -5827,7 +5888,7 @@
 See the jmeter.properties file for details.
 
                                                                                
                                <p><b>Control Panel</b></p>
-                                               <div align="center"><img 
width='649' height='157' src="../images/screenshots/simpledatawriter.png"></div>
+                                               <div align="center"><img 
width='786' height='145' src="../images/screenshots/simpledatawriter.png"></div>
                                                                                
                        </td></tr>
                <tr><td><br></td></tr>
         </table>
@@ -10518,6 +10579,7 @@
                                                                         
serially rather than in parallel.
                                                </p>
                                                                        
+
 
                                                                                
                <p      >
                                                                Test plan now 
provides an easy way to add classpath setting to a specific test plan. The 
feature is additive, meaning that you can add jar files or directories, but 
removing an entry requires restarting JMeter. In the past, users had to copy 
all the jar files to jmeter/lib/ directory. Now that is not necessary. JMeter 
properties also provides an entry for loading additional classpaths.

Modified: 
jakarta/jmeter/trunk/src/core/org/apache/jmeter/reporters/ResultCollector.java
URL: 
http://svn.apache.org/viewvc/jakarta/jmeter/trunk/src/core/org/apache/jmeter/reporters/ResultCollector.java?rev=597726&r1=597725&r2=597726&view=diff
==============================================================================
--- 
jakarta/jmeter/trunk/src/core/org/apache/jmeter/reporters/ResultCollector.java 
(original)
+++ 
jakarta/jmeter/trunk/src/core/org/apache/jmeter/reporters/ResultCollector.java 
Fri Nov 23 11:17:10 2007
@@ -90,6 +90,8 @@
 
        private static final String ERROR_LOGGING = 
"ResultCollector.error_logging"; // $NON-NLS-1$
 
+       private static final String SUCCESS_ONLY_LOGGING = 
"ResultCollector.success_only_logging"; // $NON-NLS-1$
+
        transient private DefaultConfigurationSerializer serializer;
 
        transient private volatile PrintWriter out;
@@ -109,6 +111,7 @@
                // current = -1;
                // serializer = new DefaultConfigurationSerializer();
                setErrorLogging(false);
+               setSuccessOnlyLogging(false);
                setProperty(new ObjectProperty(SAVE_CONFIG, new 
SampleSaveConfiguration()));
        }
 
@@ -135,6 +138,35 @@
                setProperty(new BooleanProperty(ERROR_LOGGING, errorLogging));
        }
 
+       public void setSuccessOnlyLogging(boolean value) {
+               if (value) {
+                   setProperty(new BooleanProperty(SUCCESS_ONLY_LOGGING, 
true));
+               } else {
+                       removeProperty(SUCCESS_ONLY_LOGGING);
+               }
+       }
+
+       public boolean isSuccessOnlyLogging() {
+               return getPropertyAsBoolean(SUCCESS_ONLY_LOGGING,false);
+       }
+
+       /**
+        * Decides whether or not to a sample is wanted based on:
+        * - errorOnly
+        * - successOnly
+        * - sample success
+        * 
+        * @param success is sample successful
+        * @return whether to log/display the sample
+        */
+       public boolean isSampleWanted(boolean success){
+               boolean errorOnly = isErrorLogging();
+               boolean successOnly = isSuccessOnlyLogging();
+               return (!errorOnly && !successOnly) || 
+                      (success && successOnly) ||
+                          (!success && errorOnly);
+               // successOnly and errorOnly cannot both be set
+       }
        /**
         * Sets the filename attribute of the ResultCollector object.
         * 
@@ -193,7 +225,6 @@
                boolean parsedOK = false, errorDetected = false;
                String filename = getFilename();
         File file = new File(filename);
-        boolean showAll = !isErrorLogging();
         if (file.exists()) {
                        clearVisualizer();
                        BufferedReader dataReader = null;
@@ -218,7 +249,7 @@
                             SampleEvent event = 
CSVSaveService.makeResultFromDelimitedString(line,saveConfig,lineNumber);
                             if (event != null){
                                                                final 
SampleResult result = event.getResult();
-                               if (showAll || !result.isSuccessful()) {
+                               if (isSampleWanted(result.isSuccessful())) {
                                                                        
visualizer.add(result);
                                                                }
                             }
@@ -229,12 +260,12 @@
                     } else { // We are processing XML
                         try { // Assume XStream
                             bufferedInputStream = new BufferedInputStream(new 
FileInputStream(file));
-                            
readSamples(SaveService.loadTestResults(bufferedInputStream), visualizer, 
showAll);
+                            
readSamples(SaveService.loadTestResults(bufferedInputStream), visualizer);
                             parsedOK = true;
                         } catch (Exception e) {
                             log.info("Failed to load "+filename+" using 
XStream, trying old XML format. Error was: "+e);
                             try {
-                                OldSaveService.processSamples(filename, 
visualizer, showAll);
+                                OldSaveService.processSamples(filename, 
visualizer, this);
                                 parsedOK = true;
                             } catch (Exception e1) {
                                 log.warn("Error parsing Avalon XML. " + 
e1.getLocalizedMessage());
@@ -367,12 +398,12 @@
        }
 
     // Only called if visualizer is non-null
-       private void readSamples(TestResultWrapper testResults, Visualizer 
visualizer, boolean showAll) throws Exception {
+       private void readSamples(TestResultWrapper testResults, Visualizer 
visualizer) throws Exception {
                Collection samples = testResults.getSampleResults();
                Iterator iter = samples.iterator();
                while (iter.hasNext()) {
                        SampleResult result = (SampleResult) iter.next();
-                       if (showAll || !result.isSuccessful()) {
+                       if (isSampleWanted(result.isSuccessful())) {
                                visualizer.add(result);
                        }
                }
@@ -401,7 +432,7 @@
        public void sampleOccurred(SampleEvent event) {
                SampleResult result = event.getResult();
 
-               if (!isErrorLogging() || !result.isSuccessful()) {
+               if (isSampleWanted(result.isSuccessful())) {
                        sendToVisualizer(result);
                        if ( out != null) {// no point otherwise
                                SampleSaveConfiguration config = 
getSaveConfig();

Modified: 
jakarta/jmeter/trunk/src/core/org/apache/jmeter/resources/messages.properties
URL: 
http://svn.apache.org/viewvc/jakarta/jmeter/trunk/src/core/org/apache/jmeter/resources/messages.properties?rev=597726&r1=597725&r2=597726&view=diff
==============================================================================
--- 
jakarta/jmeter/trunk/src/core/org/apache/jmeter/resources/messages.properties 
(original)
+++ 
jakarta/jmeter/trunk/src/core/org/apache/jmeter/resources/messages.properties 
Fri Nov 23 11:17:10 2007
@@ -190,7 +190,7 @@
 file_visualizer_flush=Flush
 file_visualizer_missing_filename=No output filename specified.
 file_visualizer_open=Open
-file_visualizer_output_file=Write All Data to a File / Read from file
+file_visualizer_output_file=Write results to file / Read from file
 file_visualizer_submit_data=Include Submitted Data
 file_visualizer_title=File Reporter
 file_visualizer_verbose=Verbose Output
@@ -391,13 +391,15 @@
 ldapext_testing_title= LDAP Extended Request
 load=Load
 load_wsdl=Load WSDL
-log_errors_only=Errors Only (Log & Display)
+log_errors_only=Errors
 log_file=Location of log File
+log_only=Log/Display Only:
 log_parser=Name of Log Parser class
 log_parser_cnf_msg=Could not find the class. Please make sure you place your 
jar file in the /lib directory.
 log_parser_illegal_msg=Could not access the class due to IllegalAcessException.
 log_parser_instantiate_msg=Could not create an instance of the log parser. 
Please make sure the parser implements LogParser interface.
 log_sampler=Tomcat Access Log Sampler
+log_success_only=Successes
 logic_controller_title=Simple Controller
 login_config=Login Configuration
 login_config_element=Login Config Element

Modified: 
jakarta/jmeter/trunk/src/core/org/apache/jmeter/save/OldSaveService.java
URL: 
http://svn.apache.org/viewvc/jakarta/jmeter/trunk/src/core/org/apache/jmeter/save/OldSaveService.java?rev=597726&r1=597725&r2=597726&view=diff
==============================================================================
--- jakarta/jmeter/trunk/src/core/org/apache/jmeter/save/OldSaveService.java 
(original)
+++ jakarta/jmeter/trunk/src/core/org/apache/jmeter/save/OldSaveService.java 
Fri Nov 23 11:17:10 2007
@@ -36,6 +36,7 @@
 import org.apache.avalon.framework.configuration.DefaultConfigurationBuilder;
 import 
org.apache.avalon.framework.configuration.DefaultConfigurationSerializer;
 import org.apache.jmeter.assertions.AssertionResult;
+import org.apache.jmeter.reporters.ResultCollector;
 import org.apache.jmeter.samplers.SampleResult;
 import org.apache.jmeter.samplers.SampleSaveConfiguration;
 import org.apache.jmeter.testelement.TestElement;
@@ -473,7 +474,7 @@
        }
 
        // Called by ResultCollector#loadExistingFile()
-       public static void processSamples(String filename, Visualizer 
visualizer, boolean showAll) 
+       public static void processSamples(String filename, Visualizer 
visualizer, ResultCollector rc) 
     throws SAXException, IOException, ConfigurationException 
        {
                DefaultConfigurationBuilder cfgbuilder = new 
DefaultConfigurationBuilder();
@@ -481,7 +482,7 @@
                Configuration[] samples = savedSamples.getChildren();
                for (int i = 0; i < samples.length; i++) {
                    SampleResult result = 
OldSaveService.getSampleResult(samples[i]);
-                   if (showAll || !result.isSuccessful()) {
+                   if (rc.isSampleWanted(result.isSuccessful())) {
                        visualizer.add(result);
                    }
                }

Modified: 
jakarta/jmeter/trunk/src/core/org/apache/jmeter/visualizers/gui/AbstractVisualizer.java
URL: 
http://svn.apache.org/viewvc/jakarta/jmeter/trunk/src/core/org/apache/jmeter/visualizers/gui/AbstractVisualizer.java?rev=597726&r1=597725&r2=597726&view=diff
==============================================================================
--- 
jakarta/jmeter/trunk/src/core/org/apache/jmeter/visualizers/gui/AbstractVisualizer.java
 (original)
+++ 
jakarta/jmeter/trunk/src/core/org/apache/jmeter/visualizers/gui/AbstractVisualizer.java
 Fri Nov 23 11:17:10 2007
@@ -27,6 +27,7 @@
 
 import javax.swing.JButton;
 import javax.swing.JCheckBox;
+import javax.swing.JLabel;
 import javax.swing.JPopupMenu;
 import javax.swing.event.ChangeEvent;
 import javax.swing.event.ChangeListener;
@@ -116,6 +117,9 @@
 
        /** A checkbox choosing whether or not only errors should be logged. */
        private JCheckBox errorLogging;
+       
+       /* A checkbox choosing whether or not only successes should be logged. 
*/
+       private JCheckBox successOnlyLogging;
 
        private JButton saveConfigButton;
 
@@ -126,7 +130,19 @@
        public AbstractVisualizer() {
                super();
 
+               // errorLogging and successOnlyLogging are mutually exclusive
                errorLogging = new 
JCheckBox(JMeterUtils.getResString("log_errors_only")); // $NON-NLS-1$
+               errorLogging.addActionListener(new ActionListener(){
+                       public void actionPerformed(ActionEvent e) {
+                               if (errorLogging.isSelected()) 
successOnlyLogging.setSelected(false);
+                       }                       
+               });
+               successOnlyLogging = new 
JCheckBox(JMeterUtils.getResString("log_success_only")); // $NON-NLS-1$
+               successOnlyLogging.addActionListener(new ActionListener(){
+                       public void actionPerformed(ActionEvent e) {
+                               if (successOnlyLogging.isSelected()) 
errorLogging.setSelected(false);
+                       }                       
+               });
                saveConfigButton = new 
JButton(JMeterUtils.getResString("config_save_settings")); // $NON-NLS-1$
                saveConfigButton.addActionListener(new ActionListener() {
                        public void actionPerformed(ActionEvent e) {
@@ -142,7 +158,9 @@
 
                filePanel = new 
FilePanel(JMeterUtils.getResString("file_visualizer_output_file"), ".jtl"); // 
$NON-NLS-1$ $NON-NLS-2$
                filePanel.addChangeListener(this);
+               filePanel.add(new 
JLabel(JMeterUtils.getResString("log_only"))); // $NON-NLS-1$
                filePanel.add(errorLogging);
+               filePanel.add(successOnlyLogging);
                filePanel.add(saveConfigButton);
 
        }
@@ -275,6 +293,7 @@
                if (c instanceof ResultCollector) {
                        ResultCollector rc = (ResultCollector) c;
                        rc.setErrorLogging(errorLogging.isSelected());
+                       
rc.setSuccessOnlyLogging(successOnlyLogging.isSelected());
                        rc.setFilename(getFile());
                        collector = rc;
                }
@@ -286,6 +305,7 @@
                setFile(el.getPropertyAsString(ResultCollector.FILENAME));
                ResultCollector rc = (ResultCollector) el;
                errorLogging.setSelected(rc.isErrorLogging());
+               successOnlyLogging.setSelected(rc.isSuccessOnlyLogging());
                if (collector == null) {
                        collector = new ResultCollector();
                }

Modified: jakarta/jmeter/trunk/xdocs/changes.xml
URL: 
http://svn.apache.org/viewvc/jakarta/jmeter/trunk/xdocs/changes.xml?rev=597726&r1=597725&r2=597726&view=diff
==============================================================================
--- jakarta/jmeter/trunk/xdocs/changes.xml (original)
+++ jakarta/jmeter/trunk/xdocs/changes.xml Fri Nov 23 11:17:10 2007
@@ -196,6 +196,7 @@
 <li>Proxy now rejects attempts to use it with https</li>
 <li>Proxy spoofing can now use RE matching to determine which urls to spoof 
(useful if images are not https)</li>
 <li>Proxy spoofing now drops the default HTTPS port (443) when converting 
https: links to http:</li>
+<li>Add Successes Only logging and display</li>
 </ul>
 
 <h4>Non-functional Improvements</h4>

Modified: jakarta/jmeter/trunk/xdocs/images/screenshots/simpledatawriter.png
URL: 
http://svn.apache.org/viewvc/jakarta/jmeter/trunk/xdocs/images/screenshots/simpledatawriter.png?rev=597726&r1=597725&r2=597726&view=diff
==============================================================================
Binary files - no diff available.

Modified: jakarta/jmeter/trunk/xdocs/usermanual/component_reference.xml
URL: 
http://svn.apache.org/viewvc/jakarta/jmeter/trunk/xdocs/usermanual/component_reference.xml?rev=597726&r1=597725&r2=597726&view=diff
==============================================================================
--- jakarta/jmeter/trunk/xdocs/usermanual/component_reference.xml (original)
+++ jakarta/jmeter/trunk/xdocs/usermanual/component_reference.xml Fri Nov 23 
11:17:10 2007
@@ -1698,6 +1698,18 @@
 The settings in jmeter.properties also apply to the listener that is added
 by using the -l command-line flag.
 </note>
+<p>
+       The figure below shows an example of the result file configuration panel
+<figure width="786" height="145" image="simpledatawriter.png">Result file 
configuration panel</figure>
+</p>
+<properties>
+        <property name="File Name" required="No">Name of the file containing 
sample results</property>
+        <property name="Browse..." required="No">File Browse Button</property>
+        <property name="Errors" required="No">Select this to write/read only 
results with errors</property>
+        <property name="Successes" required="No">Select this to write/read 
only results without errors.
+        If neither Errors nor Successes is selected, then all results are 
processed.</property>
+        <property name="Configure" required="No">Configure Button, see 
below</property>
+</properties>
 </description>
 
 <component name="Sample Result Save Configuration" index="&sect-num;.3.1"  
width="629" height="300" screenshot="sample_result_config.png">
@@ -1832,7 +1844,7 @@
 </description>
 </component>
 
-<component name="Simple Data Writer" index="&sect-num;.3.9"  width="649" 
height="157" screenshot="simpledatawriter.png">
+<component name="Simple Data Writer" index="&sect-num;.3.9"  width="786" 
height="145" screenshot="simpledatawriter.png">
 <description>This listener can record results to a file
 but not to the UI.  It is meant to provide an efficient means of
 recording data by eliminating GUI overhead.



---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to