Author: sebb Date: Thu Jun 26 16:36:35 2008 New Revision: 672057 URL: http://svn.apache.org/viewvc?rev=672057&view=rev Log: Save Responses to a file can save the generated filename(s) to variables
Modified: jakarta/jmeter/trunk/docs/images/screenshots/savetofile.png jakarta/jmeter/trunk/src/core/org/apache/jmeter/reporters/ResultSaver.java jakarta/jmeter/trunk/src/core/org/apache/jmeter/reporters/gui/ResultSaverGui.java jakarta/jmeter/trunk/src/core/org/apache/jmeter/resources/messages.properties jakarta/jmeter/trunk/xdocs/changes.xml jakarta/jmeter/trunk/xdocs/images/screenshots/savetofile.png jakarta/jmeter/trunk/xdocs/usermanual/component_reference.xml Modified: jakarta/jmeter/trunk/docs/images/screenshots/savetofile.png URL: http://svn.apache.org/viewvc/jakarta/jmeter/trunk/docs/images/screenshots/savetofile.png?rev=672057&r1=672056&r2=672057&view=diff ============================================================================== Binary files - no diff available. Modified: jakarta/jmeter/trunk/src/core/org/apache/jmeter/reporters/ResultSaver.java URL: http://svn.apache.org/viewvc/jakarta/jmeter/trunk/src/core/org/apache/jmeter/reporters/ResultSaver.java?rev=672057&r1=672056&r2=672057&view=diff ============================================================================== --- jakarta/jmeter/trunk/src/core/org/apache/jmeter/reporters/ResultSaver.java (original) +++ jakarta/jmeter/trunk/src/core/org/apache/jmeter/reporters/ResultSaver.java Thu Jun 26 16:36:35 2008 @@ -24,11 +24,13 @@ import java.io.IOException; import java.io.Serializable; +import org.apache.commons.lang.text.StrBuilder; import org.apache.jmeter.samplers.Clearable; import org.apache.jmeter.samplers.SampleEvent; import org.apache.jmeter.samplers.SampleListener; import org.apache.jmeter.samplers.SampleResult; import org.apache.jmeter.testelement.AbstractTestElement; +import org.apache.jmeter.threads.JMeterContextService; import org.apache.jorphan.logging.LoggingManager; import org.apache.jorphan.util.JOrphanUtils; import org.apache.log.Logger; @@ -50,7 +52,9 @@ public static final String FILENAME = "FileSaver.filename"; // $NON-NLS-1$ - public static final String ERRORS_ONLY = "FileSaver.errorsonly"; // $NON-NLS-1$ + public static final String VARIABLE_NAME = "FileSaver.variablename"; // $NON-NLS-1$ + + public static final String ERRORS_ONLY = "FileSaver.errorsonly"; // $NON-NLS-1$ public static final String SUCCESS_ONLY = "FileSaver.successonly"; // $NON-NLS-1$ @@ -105,27 +109,28 @@ * @see org.apache.jmeter.samplers.SampleListener#sampleOccurred(org.apache.jmeter.samplers.SampleEvent) */ public void sampleOccurred(SampleEvent e) { - processSample(e.getResult()); + processSample(e.getResult(), new Counter()); } /** * Recurse the whole (sub)result hierarchy. * * @param s Sample result + * @param c sample counter */ - private void processSample(SampleResult s) { - saveSample(s); + private void processSample(SampleResult s, Counter c) { + saveSample(s, c.num++); SampleResult[] sr = s.getSubResults(); for (int i = 0; i < sr.length; i++) { - processSample(sr[i]); + processSample(sr[i], c); } } /** - * @param s - * SampleResult to save + * @param s SampleResult to save + * @param num number to append to variable (if >0) */ - private void saveSample(SampleResult s) { + private void saveSample(SampleResult s, int num) { // Should we save the sample? if (s.isSuccessful()){ if (getErrorsOnly()){ @@ -140,6 +145,15 @@ String fileName = makeFileName(s.getContentType()); log.debug("Saving " + s.getSampleLabel() + " in " + fileName); s.setResultFileName(fileName);// Associate sample with file name + String variable = getVariableName(); + if (variable.length()>0){ + if (num > 0) { + StrBuilder sb = new StrBuilder(variable); + sb.append(num); + variable=sb.toString(); + } + JMeterContextService.getContext().getVariables().put(variable, fileName); + } File out = new File(fileName); FileOutputStream pw = null; try { @@ -197,6 +211,10 @@ return getPropertyAsString(FILENAME); } + private String getVariableName() { + return getPropertyAsString(VARIABLE_NAME,""); // $NON-NLS-1$ + } + private boolean getErrorsOnly() { return getPropertyAsBoolean(ERRORS_ONLY); } @@ -205,4 +223,8 @@ return getPropertyAsBoolean(SUCCESS_ONLY); } + // Mutable int to keep track of sample count + private static class Counter{ + int num; + } } Modified: jakarta/jmeter/trunk/src/core/org/apache/jmeter/reporters/gui/ResultSaverGui.java URL: http://svn.apache.org/viewvc/jakarta/jmeter/trunk/src/core/org/apache/jmeter/reporters/gui/ResultSaverGui.java?rev=672057&r1=672056&r2=672057&view=diff ============================================================================== --- jakarta/jmeter/trunk/src/core/org/apache/jmeter/reporters/gui/ResultSaverGui.java (original) +++ jakarta/jmeter/trunk/src/core/org/apache/jmeter/reporters/gui/ResultSaverGui.java Thu Jun 26 16:36:35 2008 @@ -28,6 +28,7 @@ import org.apache.jmeter.reporters.ResultSaver; import org.apache.jmeter.samplers.Clearable; +import org.apache.jmeter.testelement.AbstractTestElement; import org.apache.jmeter.testelement.TestElement; import org.apache.jmeter.util.JMeterUtils; import org.apache.jmeter.visualizers.gui.AbstractListenerGui; @@ -41,7 +42,9 @@ private JTextField filename; - private JCheckBox errorsOnly; + private JTextField variableName; + + private JCheckBox errorsOnly; private JCheckBox successOnly; @@ -65,6 +68,7 @@ filename.setText(el.getPropertyAsString(ResultSaver.FILENAME)); errorsOnly.setSelected(el.getPropertyAsBoolean(ResultSaver.ERRORS_ONLY)); successOnly.setSelected(el.getPropertyAsBoolean(ResultSaver.SUCCESS_ONLY)); + variableName.setText(el.getPropertyAsString(ResultSaver.VARIABLE_NAME,"")); } /** @@ -86,6 +90,8 @@ te.setProperty(ResultSaver.FILENAME, filename.getText()); te.setProperty(ResultSaver.ERRORS_ONLY, errorsOnly.isSelected()); te.setProperty(ResultSaver.SUCCESS_ONLY, successOnly.isSelected()); + AbstractTestElement at = (AbstractTestElement) te; + at.setProperty(ResultSaver.VARIABLE_NAME, variableName.getText(),""); //$NON-NLS-1$ } /** @@ -97,6 +103,7 @@ filename.setText(""); //$NON-NLS-1$ errorsOnly.setSelected(false); successOnly.setSelected(false); + variableName.setText(""); //$NON-NLS-1$ } private void init() { @@ -105,6 +112,7 @@ Box box = Box.createVerticalBox(); box.add(makeTitlePanel()); box.add(createFilenamePrefixPanel()); + box.add(createVariableNamePanel()); errorsOnly = new JCheckBox(JMeterUtils.getResString("resultsaver_errors")); // $NON-NLS-1$ box.add(errorsOnly); successOnly = new JCheckBox(JMeterUtils.getResString("resultsaver_success")); // $NON-NLS-1$ @@ -127,6 +135,21 @@ } + private JPanel createVariableNamePanel() + { + JLabel label = new JLabel(JMeterUtils.getResString("resultsaver_variable")); // $NON-NLS-1$ + + variableName = new JTextField(10); + variableName.setName(ResultSaver.VARIABLE_NAME); + label.setLabelFor(variableName); + + JPanel filenamePanel = new JPanel(new BorderLayout(5, 0)); + filenamePanel.add(label, BorderLayout.WEST); + filenamePanel.add(variableName, BorderLayout.CENTER); + return filenamePanel; + } + + // Needed to avoid Class cast error in Clear.java public void clearData() { } 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=672057&r1=672056&r2=672057&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 Thu Jun 26 16:36:35 2008 @@ -639,6 +639,7 @@ resultsaver_prefix=Filename prefix\: resultsaver_success=Save Successful Responses only resultsaver_title=Save Responses to a file +resultsaver_variable=Variable Name: retobj=Return object reuseconnection=Re-use connection revert_project=Revert Modified: jakarta/jmeter/trunk/xdocs/changes.xml URL: http://svn.apache.org/viewvc/jakarta/jmeter/trunk/xdocs/changes.xml?rev=672057&r1=672056&r2=672057&view=diff ============================================================================== --- jakarta/jmeter/trunk/xdocs/changes.xml (original) +++ jakarta/jmeter/trunk/xdocs/changes.xml Thu Jun 26 16:36:35 2008 @@ -83,6 +83,7 @@ <ul> <li>LDAP result data now formatted with line breaks</li> <li>Add OUT variable to jexl function</li> +<li>Save Responses to a file can save the generated filename(s) to variables.</li> </ul> <h3>Non-functional changes</h3> Modified: jakarta/jmeter/trunk/xdocs/images/screenshots/savetofile.png URL: http://svn.apache.org/viewvc/jakarta/jmeter/trunk/xdocs/images/screenshots/savetofile.png?rev=672057&r1=672056&r2=672057&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=672057&r1=672056&r2=672057&view=diff ============================================================================== --- jakarta/jmeter/trunk/xdocs/usermanual/component_reference.xml (original) +++ jakarta/jmeter/trunk/xdocs/usermanual/component_reference.xml Thu Jun 26 16:36:35 2008 @@ -2143,7 +2143,7 @@ </div> </component> -<component name="Save Responses to a file" index="§-num;.3.16" width="361" height="165" screenshot="savetofile.png"> +<component name="Save Responses to a file" index="§-num;.3.16" width="361" height="178" screenshot="savetofile.png"> <description> <p> This test element can be placed anywhere in the test plan. @@ -2162,6 +2162,12 @@ <properties> <property name="Name" required="No">Descriptive name for this element that is shown in the tree.</property> <property name="Filename Prefix" required="Yes">Prefix for the generated file names; this can include a directory name.</property> + <property name="Variable Name" required="No"> + Name of a variable in which to save the generated file name (so it can be used later in the test plan). + If there are sub-samples then a numeric suffix is added to the variable name. + E.g. if the variable name is FILENAME, then the parent sample file name is saved in the variable FILENAME, + and the filenames for the child samplers are saved in FILENAME1, FILENAME2 etc. + </property> <property name="Save Failed Responses only" required="Yes">If selected, then only failed responses are saved</property> <property name="Save Successful Responses only" required="Yes">If selected, then only successful responses are saved</property> </properties> --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]