View | Details | Raw Unified | Return to bug 62195
Collapse All | Expand All

(-)src/core/org/apache/jmeter/reporters/ResultSaver.java (-17 / +86 lines)
Lines 28-33 Link Here
28
import java.text.SimpleDateFormat;
28
import java.text.SimpleDateFormat;
29
import java.util.Date;
29
import java.util.Date;
30
30
31
import org.apache.jmeter.control.TransactionController;
31
import org.apache.jmeter.engine.util.NoThreadClone;
32
import org.apache.jmeter.engine.util.NoThreadClone;
32
import org.apache.jmeter.samplers.SampleEvent;
33
import org.apache.jmeter.samplers.SampleEvent;
33
import org.apache.jmeter.samplers.SampleListener;
34
import org.apache.jmeter.samplers.SampleListener;
Lines 36-41 Link Here
36
import org.apache.jmeter.testelement.AbstractTestElement;
37
import org.apache.jmeter.testelement.AbstractTestElement;
37
import org.apache.jmeter.testelement.TestStateListener;
38
import org.apache.jmeter.testelement.TestStateListener;
38
import org.apache.jmeter.threads.JMeterContextService;
39
import org.apache.jmeter.threads.JMeterContextService;
40
import org.apache.jorphan.util.JMeterStopTestNowException;
39
import org.apache.jorphan.util.JOrphanUtils;
41
import org.apache.jorphan.util.JOrphanUtils;
40
import org.slf4j.Logger;
42
import org.slf4j.Logger;
41
import org.slf4j.LoggerFactory;
43
import org.slf4j.LoggerFactory;
Lines 73-78 Link Here
73
    public static final String ADD_TIMESTAMP = "FileSaver.addTimstamp"; // $NON-NLS-1$
75
    public static final String ADD_TIMESTAMP = "FileSaver.addTimstamp"; // $NON-NLS-1$
74
76
75
    public static final String NUMBER_PAD_LENGTH = "FileSaver.numberPadLen"; // $NON-NLS-1$
77
    public static final String NUMBER_PAD_LENGTH = "FileSaver.numberPadLen"; // $NON-NLS-1$
78
    
79
    public static final String IGNORE_TC = "FileSaver.ignoreTC"; // $NON-NLS-1$
76
80
77
    //- JMX property names
81
    //- JMX property names
78
82
Lines 150-156 Link Here
150
     */
154
     */
151
    @Override
155
    @Override
152
    public void sampleOccurred(SampleEvent e) {
156
    public void sampleOccurred(SampleEvent e) {
153
      processSample(e.getResult(), new Counter());
157
        processSample(e.getResult(), new Counter());
154
   }
158
   }
155
159
156
   /**
160
   /**
Lines 172-186 Link Here
172
     * @param num number to append to variable (if >0)
176
     * @param num number to append to variable (if >0)
173
     */
177
     */
174
    private void saveSample(SampleResult s, int num) {
178
    private void saveSample(SampleResult s, int num) {
175
        // Should we save the sample?
179
        if(ignoreSampler(s)) {
176
        if (s.isSuccessful()){
180
            if (log.isDebugEnabled()) {
177
            if (getErrorsOnly()){
181
                log.debug("Ignoring SampleResult from Sampler {}", s.getSampleLabel());
178
                return;
179
            }
182
            }
180
        } else {
183
            return;
181
            if (getSuccessOnly()){
182
                return;
183
            }
184
        }
184
        }
185
185
186
        String fileName = makeFileName(s.getContentType(), getSkipAutoNumber(), getSkipSuffix());
186
        String fileName = makeFileName(s.getContentType(), getSkipAutoNumber(), getSkipSuffix());
Lines 198-203 Link Here
198
            JMeterContextService.getContext().getVariables().put(variable, fileName);
198
            JMeterContextService.getContext().getVariables().put(variable, fileName);
199
        }
199
        }
200
        File out = new File(fileName);
200
        File out = new File(fileName);
201
        createFoldersIfNeeded(out.getParentFile());
201
        try (FileOutputStream fos = new FileOutputStream(out);
202
        try (FileOutputStream fos = new FileOutputStream(out);
202
                BufferedOutputStream bos = new BufferedOutputStream(fos)){
203
                BufferedOutputStream bos = new BufferedOutputStream(fos)){
203
            JOrphanUtils.write(s.getResponseData(), bos); // chunk the output if necessary
204
            JOrphanUtils.write(s.getResponseData(), bos); // chunk the output if necessary
Lines 209-214 Link Here
209
    }
210
    }
210
211
211
    /**
212
    /**
213
     * @param s {@link SamplerResult}
214
     * @return true if we should ignore SampleResult
215
     */
216
    private boolean ignoreSampler(SampleResult s) {
217
        if(getIgnoreTC() && TransactionController.isFromTransactionController(s)) {
218
            return true;
219
        }
220
        // Should we save the sample?
221
        return ((s.isSuccessful() && getErrorsOnly()) ||
222
                (!s.isSuccessful() && getSuccessOnly()));
223
    }
224
225
    /**
226
     * Create path hierarchy to parentFile 
227
     * @param parentFile
228
     */
229
    private void createFoldersIfNeeded(File parentFile) {
230
        if (!parentFile.exists()) {
231
            log.debug("Creating path hierarchy for folder {}", parentFile.getAbsolutePath());
232
            if(!parentFile.mkdirs()) {
233
                throw new JMeterStopTestNowException("Cannot create path hierarchy for folder "+ parentFile.getAbsolutePath());
234
            }
235
        } else {
236
            log.debug("Folder {} already exists", parentFile.getAbsolutePath());
237
        }
238
    }
239
240
    /**
212
     * @param contentType Content type
241
     * @param contentType Content type
213
     * @param skipAutoNumber Skip auto number
242
     * @param skipAutoNumber Skip auto number
214
     * @param skipSuffix Skip suffix
243
     * @param skipSuffix Skip suffix
Lines 263-299 Link Here
263
        // not used
292
        // not used
264
    }
293
    }
265
294
266
    private String getFilename() {
295
    public String getFilename() {
267
        return getPropertyAsString(FILENAME);
296
        return getPropertyAsString(FILENAME);
268
    }
297
    }
269
298
270
    private String getVariableName() {
299
    public String getVariableName() {
271
        return getPropertyAsString(VARIABLE_NAME,""); // $NON-NLS-1$
300
        return getPropertyAsString(VARIABLE_NAME,""); // $NON-NLS-1$
272
    }
301
    }
273
302
274
    private boolean getErrorsOnly() {
303
    public boolean getErrorsOnly() {
275
        return getPropertyAsBoolean(ERRORS_ONLY);
304
        return getPropertyAsBoolean(ERRORS_ONLY);
276
    }
305
    }
277
306
278
    private boolean getSkipAutoNumber() {
307
    public boolean getSkipAutoNumber() {
279
        return getPropertyAsBoolean(SKIP_AUTO_NUMBER);
308
        return getPropertyAsBoolean(SKIP_AUTO_NUMBER);
280
    }
309
    }
281
310
282
    private boolean getSkipSuffix() {
311
    public boolean getSkipSuffix() {
283
        return getPropertyAsBoolean(SKIP_SUFFIX);
312
        return getPropertyAsBoolean(SKIP_SUFFIX);
284
    }
313
    }
285
314
286
    private boolean getSuccessOnly() {
315
    public boolean getSuccessOnly() {
287
        return getPropertyAsBoolean(SUCCESS_ONLY);
316
        return getPropertyAsBoolean(SUCCESS_ONLY);
288
    }
317
    }
289
318
290
    private boolean getAddTimeStamp() {
319
    public boolean getAddTimeStamp() {
291
        return getPropertyAsBoolean(ADD_TIMESTAMP);
320
        return getPropertyAsBoolean(ADD_TIMESTAMP);
292
    }
321
    }
293
322
294
    private int getNumberPadLen() {
323
    public int getNumberPadLen() {
295
        return getPropertyAsInt(NUMBER_PAD_LENGTH, 0);
324
        return getPropertyAsInt(NUMBER_PAD_LENGTH, 0);
296
    }
325
    }
326
    
327
    public boolean getIgnoreTC() {
328
        return getPropertyAsBoolean(IGNORE_TC, true);
329
    }
330
    
331
    public void setIgnoreTC(boolean value) {
332
        setProperty(IGNORE_TC, value, true);
333
    }
334
    
335
    public void setFilename(String value) {
336
        setProperty(FILENAME, value);
337
    }
297
338
298
    // Mutable int to keep track of sample count
339
    // Mutable int to keep track of sample count
299
    private static class Counter{
340
    private static class Counter{
Lines 315-318 Link Here
315
    public boolean equals(Object obj) {
356
    public boolean equals(Object obj) {
316
        return super.equals(obj);
357
        return super.equals(obj);
317
    }
358
    }
359
360
    public void setAddTimestamp(boolean selected) {
361
        setProperty(ADD_TIMESTAMP, selected, false);
362
    }
363
364
    public void setVariableName(String value) {
365
        setProperty(VARIABLE_NAME, value,""); //$NON-NLS-1$
366
    }
367
368
    public void setNumberPadLength(String text) {
369
        setProperty(ResultSaver.NUMBER_PAD_LENGTH, text,""); //$NON-NLS-1$
370
    }
371
372
    public void setErrorsOnly(boolean selected) {
373
        setProperty(ResultSaver.ERRORS_ONLY, selected);
374
    }
375
376
    public void setSuccessOnly(boolean selected) {
377
        setProperty(ResultSaver.SUCCESS_ONLY, selected);
378
    }
379
380
    public void setSkipSuffix(boolean selected) {
381
        setProperty(ResultSaver.SKIP_SUFFIX, selected);
382
    }
383
384
    public void setSkipAutoNumber(boolean selected) {
385
        setProperty(ResultSaver.SKIP_AUTO_NUMBER, selected);
386
    }
318
}
387
}
(-)src/core/org/apache/jmeter/reporters/gui/ResultSaverGui.java (-61 / +121 lines)
Lines 19-34 Link Here
19
package org.apache.jmeter.reporters.gui;
19
package org.apache.jmeter.reporters.gui;
20
20
21
import java.awt.BorderLayout;
21
import java.awt.BorderLayout;
22
import java.awt.Component;
23
import java.awt.GridBagConstraints;
24
import java.awt.GridBagLayout;
25
import java.util.List;
22
26
27
import javax.swing.BorderFactory;
23
import javax.swing.Box;
28
import javax.swing.Box;
24
import javax.swing.JCheckBox;
29
import javax.swing.JCheckBox;
25
import javax.swing.JLabel;
30
import javax.swing.JComponent;
26
import javax.swing.JPanel;
31
import javax.swing.JPanel;
27
import javax.swing.JTextField;
28
32
29
import org.apache.jmeter.reporters.ResultSaver;
33
import org.apache.jmeter.reporters.ResultSaver;
30
import org.apache.jmeter.samplers.Clearable;
34
import org.apache.jmeter.samplers.Clearable;
31
import org.apache.jmeter.testelement.AbstractTestElement;
32
import org.apache.jmeter.testelement.TestElement;
35
import org.apache.jmeter.testelement.TestElement;
33
import org.apache.jmeter.util.JMeterUtils;
36
import org.apache.jmeter.util.JMeterUtils;
34
import org.apache.jmeter.visualizers.gui.AbstractListenerGui;
37
import org.apache.jmeter.visualizers.gui.AbstractListenerGui;
Lines 39-64 Link Here
39
 * of files
42
 * of files
40
 *
43
 *
41
 */
44
 */
42
public class ResultSaverGui extends AbstractListenerGui implements Clearable {
45
public class ResultSaverGui extends AbstractListenerGui implements Clearable { // NOSONAR Ignore inheritance rule
43
46
44
    private static final long serialVersionUID = 240L;
47
    private static final long serialVersionUID = 241L;
45
48
46
    private JTextField filename;
49
    private JLabeledTextField filename;
47
50
48
    private JTextField variableName;
51
    private JLabeledTextField variableName;
52
    
53
    private JLabeledTextField numberPadLength;
49
54
50
    private JCheckBox errorsOnly;
55
    private JCheckBox errorsOnly;
51
56
52
    private JCheckBox successOnly;
57
    private JCheckBox successOnly;
53
58
59
    private JCheckBox ignoreTC;
60
54
    private JCheckBox skipAutoNumber;
61
    private JCheckBox skipAutoNumber;
55
62
56
    private JCheckBox skipSuffix;
63
    private JCheckBox skipSuffix;
57
64
58
    private JCheckBox addTimestamp;
65
    private JCheckBox addTimestamp;
59
66
60
    private JLabeledTextField numberPadLength;
61
62
    public ResultSaverGui() {
67
    public ResultSaverGui() {
63
        super();
68
        super();
64
        init();
69
        init();
Lines 78-91 Link Here
78
    @Override
83
    @Override
79
    public void configure(TestElement el) {
84
    public void configure(TestElement el) {
80
        super.configure(el);
85
        super.configure(el);
81
        filename.setText(el.getPropertyAsString(ResultSaver.FILENAME));
86
        ResultSaver resultSaver = (ResultSaver) el;
82
        errorsOnly.setSelected(el.getPropertyAsBoolean(ResultSaver.ERRORS_ONLY));
87
        filename.setText(resultSaver.getFilename());
83
        successOnly.setSelected(el.getPropertyAsBoolean(ResultSaver.SUCCESS_ONLY));
88
        errorsOnly.setSelected(resultSaver.getErrorsOnly());
84
        skipAutoNumber.setSelected(el.getPropertyAsBoolean(ResultSaver.SKIP_AUTO_NUMBER));
89
        successOnly.setSelected(resultSaver.getSuccessOnly());
85
        skipSuffix.setSelected(el.getPropertyAsBoolean(ResultSaver.SKIP_SUFFIX));
90
        ignoreTC.setSelected(resultSaver.getIgnoreTC());
86
        variableName.setText(el.getPropertyAsString(ResultSaver.VARIABLE_NAME,""));
91
        skipAutoNumber.setSelected(resultSaver.getSkipAutoNumber());
87
        addTimestamp.setSelected(el.getPropertyAsBoolean(ResultSaver.ADD_TIMESTAMP));
92
        skipSuffix.setSelected(resultSaver.getSkipSuffix());
88
        numberPadLength.setText(el.getPropertyAsString(ResultSaver.NUMBER_PAD_LENGTH,""));
93
        variableName.setText(resultSaver.getVariableName());
94
        addTimestamp.setSelected(resultSaver.getAddTimeStamp());
95
        numberPadLength.setText(resultSaver.getNumberPadLen() == 0 ? 
96
                "" : Integer.toString(resultSaver.getNumberPadLen()));
89
    }
97
    }
90
98
91
    /**
99
    /**
Lines 106-120 Link Here
106
    @Override
114
    @Override
107
    public void modifyTestElement(TestElement te) {
115
    public void modifyTestElement(TestElement te) {
108
        super.configureTestElement(te);
116
        super.configureTestElement(te);
109
        te.setProperty(ResultSaver.FILENAME, filename.getText());
117
        ResultSaver resultSaver = (ResultSaver) te;
110
        te.setProperty(ResultSaver.ERRORS_ONLY, errorsOnly.isSelected());
118
        resultSaver.setFilename(filename.getText());
111
        te.setProperty(ResultSaver.SKIP_AUTO_NUMBER, skipAutoNumber.isSelected());
119
        resultSaver.setErrorsOnly(errorsOnly.isSelected());
112
        te.setProperty(ResultSaver.SKIP_SUFFIX, skipSuffix.isSelected());
120
        resultSaver.setSuccessOnly(successOnly.isSelected());
113
        te.setProperty(ResultSaver.SUCCESS_ONLY, successOnly.isSelected());
121
        resultSaver.setSkipSuffix(skipSuffix.isSelected());
114
        te.setProperty(ResultSaver.ADD_TIMESTAMP, addTimestamp.isSelected(), false);
122
        resultSaver.setSkipAutoNumber(skipAutoNumber.isSelected());
115
        AbstractTestElement at = (AbstractTestElement) te;
123
        resultSaver.setIgnoreTC(ignoreTC.isSelected());
116
        at.setProperty(ResultSaver.VARIABLE_NAME, variableName.getText(),""); //$NON-NLS-1$
124
        resultSaver.setAddTimestamp(addTimestamp.isSelected());
117
        at.setProperty(ResultSaver.NUMBER_PAD_LENGTH, numberPadLength.getText(),""); //$NON-NLS-1$
125
        resultSaver.setVariableName(variableName.getText());
126
        resultSaver.setNumberPadLength(numberPadLength.getText());
118
    }
127
    }
119
128
120
    /**
129
    /**
Lines 129-134 Link Here
129
        filename.setText(""); //$NON-NLS-1$
138
        filename.setText(""); //$NON-NLS-1$
130
        errorsOnly.setSelected(false);
139
        errorsOnly.setSelected(false);
131
        successOnly.setSelected(false);
140
        successOnly.setSelected(false);
141
        ignoreTC.setSelected(true);
132
        addTimestamp.setSelected(false);
142
        addTimestamp.setSelected(false);
133
        variableName.setText(""); //$NON-NLS-1$
143
        variableName.setText(""); //$NON-NLS-1$
134
        numberPadLength.setText(""); //$NON-NLS-1$
144
        numberPadLength.setText(""); //$NON-NLS-1$
Lines 137-193 Link Here
137
    private void init() { // WARNING: called from ctor so must not be overridden (i.e. must be private or final)
147
    private void init() { // WARNING: called from ctor so must not be overridden (i.e. must be private or final)
138
        setLayout(new BorderLayout());
148
        setLayout(new BorderLayout());
139
        setBorder(makeBorder());
149
        setBorder(makeBorder());
150
        
140
        Box box = Box.createVerticalBox();
151
        Box box = Box.createVerticalBox();
141
        box.add(makeTitlePanel());
152
        box.add(makeTitlePanel());
142
        box.add(createFilenamePrefixPanel());
153
        box.add(createSaveConditionsPanel());
143
        box.add(createVariableNamePanel());
154
        box.add(createSaveFormatPanel());
144
        errorsOnly = new JCheckBox(JMeterUtils.getResString("resultsaver_errors")); // $NON-NLS-1$
145
        box.add(errorsOnly);
146
        successOnly = new JCheckBox(JMeterUtils.getResString("resultsaver_success")); // $NON-NLS-1$
147
        box.add(successOnly);
148
        skipAutoNumber = new JCheckBox(JMeterUtils.getResString("resultsaver_skipautonumber")); // $NON-NLS-1$
149
        box.add(skipAutoNumber);
150
        skipSuffix = new JCheckBox(JMeterUtils.getResString("resultsaver_skipsuffix")); // $NON-NLS-1$
151
        box.add(skipSuffix);
152
        addTimestamp = new JCheckBox(JMeterUtils.getResString("resultsaver_addtimestamp")); // $NON-NLS-1$
153
        box.add(addTimestamp);
154
        numberPadLength = new JLabeledTextField(JMeterUtils.getResString("resultsaver_numberpadlen"));// $NON-NLS-1$
155
        box.add(numberPadLength);
156
        add(box, BorderLayout.NORTH);
155
        add(box, BorderLayout.NORTH);
157
    }
156
    }
158
157
159
    private JPanel createFilenamePrefixPanel()
158
    private Component createSaveFormatPanel() {
160
    {
159
        filename = new JLabeledTextField(JMeterUtils.getResString("resultsaver_prefix"));
161
        JLabel label = new JLabel(JMeterUtils.getResString("resultsaver_prefix")); // $NON-NLS-1$
162
163
        filename = new JTextField(10);
164
        filename.setName(ResultSaver.FILENAME);
160
        filename.setName(ResultSaver.FILENAME);
165
        label.setLabelFor(filename);
166
167
        JPanel filenamePanel = new JPanel(new BorderLayout(5, 0));
168
        filenamePanel.add(label, BorderLayout.WEST);
169
        filenamePanel.add(filename, BorderLayout.CENTER);
170
        return filenamePanel;
171
    }
172
161
162
        numberPadLength = new JLabeledTextField(JMeterUtils.getResString("resultsaver_numberpadlen"));// $NON-NLS-1$
163
        numberPadLength.setName(ResultSaver.NUMBER_PAD_LENGTH);
173
164
174
    private JPanel createVariableNamePanel()
165
        skipAutoNumber = new JCheckBox(JMeterUtils.getResString("resultsaver_skipautonumber")); // $NON-NLS-1$
175
    {
166
        skipSuffix = new JCheckBox(JMeterUtils.getResString("resultsaver_skipsuffix")); // $NON-NLS-1$
176
        JLabel label = new JLabel(JMeterUtils.getResString("resultsaver_variable")); // $NON-NLS-1$
167
        addTimestamp = new JCheckBox(JMeterUtils.getResString("resultsaver_addtimestamp")); // $NON-NLS-1$
177
168
178
        variableName = new JTextField(10);
169
        variableName = new JLabeledTextField(JMeterUtils.getResString("resultsaver_variable"));
179
        variableName.setName(ResultSaver.VARIABLE_NAME);
170
        variableName.setName(ResultSaver.VARIABLE_NAME);
180
        label.setLabelFor(variableName);
171
172
        JPanel panel = new JPanel(new GridBagLayout());
173
        panel.setBorder(BorderFactory.createTitledBorder(JMeterUtils.getResString("resultsaver_save_format"))); //$NON-NLS-1$
174
        GridBagConstraints gbc = new GridBagConstraints();
175
        initConstraints(gbc);
176
177
        addField(panel, variableName, gbc);
178
        resetContraints(gbc);
179
        addField(panel, filename, gbc);
180
        resetContraints(gbc);
181
        addField(panel, skipAutoNumber, gbc);
182
        resetContraints(gbc);
183
        addField(panel, skipSuffix, gbc);
184
        resetContraints(gbc);
185
        addField(panel, addTimestamp, gbc);
186
        resetContraints(gbc);
187
        addField(panel, numberPadLength, gbc);
188
        resetContraints(gbc);
181
189
182
        JPanel filenamePanel = new JPanel(new BorderLayout(5, 0));
190
        return panel;
183
        filenamePanel.add(label, BorderLayout.WEST);
184
        filenamePanel.add(variableName, BorderLayout.CENTER);
185
        return filenamePanel;
186
    }
191
    }
187
192
193
    private Component createSaveConditionsPanel() {
194
        successOnly = new JCheckBox(JMeterUtils.getResString("resultsaver_success")); // $NON-NLS-1$
195
        errorsOnly = new JCheckBox(JMeterUtils.getResString("resultsaver_errors")); // $NON-NLS-1$
196
        ignoreTC = new JCheckBox(JMeterUtils.getResString("resultsaver_ignore_tc")); // $NON-NLS-1$
197
198
        JPanel panel = new JPanel(new GridBagLayout());
199
        panel.setBorder(BorderFactory.createTitledBorder(JMeterUtils.getResString("resultsaver_save_conditions"))); //$NON-NLS-1$
200
        GridBagConstraints gbc = new GridBagConstraints();
201
        initConstraints(gbc);
202
        
203
        addField(panel, successOnly, gbc);
204
        resetContraints(gbc);
205
        addField(panel, errorsOnly, gbc);
206
        resetContraints(gbc);
207
        addField(panel, ignoreTC, gbc);
208
        resetContraints(gbc);
209
210
        return panel;
211
    }
212
    
188
    // Needed to avoid Class cast error in Clear.java
213
    // Needed to avoid Class cast error in Clear.java
189
    @Override
214
    @Override
190
    public void clearData() {
215
    public void clearData() {
216
        // NOOP
217
    }
218
219
    private void addField(JPanel panel, JCheckBox field, GridBagConstraints gbc) {
220
        gbc.weightx = 2;
221
        gbc.fill=GridBagConstraints.HORIZONTAL;
222
        panel.add(field, gbc.clone());
223
    }
224
    
225
    private void addField(JPanel panel, JLabeledTextField field, GridBagConstraints gbc) {
226
        List<JComponent> item = field.getComponentList();
227
        panel.add(item.get(0), gbc.clone());
228
        gbc.gridx++;
229
        gbc.weightx = 1;
230
        gbc.fill=GridBagConstraints.HORIZONTAL;
231
        panel.add(item.get(1), gbc.clone());
232
    }
233
234
    // Next line
235
    private void resetContraints(GridBagConstraints gbc) {
236
        gbc.gridx = 0;
237
        gbc.gridy++;
238
        gbc.weightx = 0;
239
        gbc.fill=GridBagConstraints.NONE;
240
    }
241
242
    private void initConstraints(GridBagConstraints gbc) {
243
        gbc.anchor = GridBagConstraints.NORTHWEST;
244
        gbc.fill = GridBagConstraints.NONE;
245
        gbc.gridheight = 1;
246
        gbc.gridwidth = 1;
247
        gbc.gridx = 0;
248
        gbc.gridy = 0;
249
        gbc.weightx = 0;
250
        gbc.weighty = 0;
191
    }
251
    }
192
252
193
}
253
}
(-)src/core/org/apache/jmeter/resources/messages.properties (-4 / +7 lines)
Lines 939-951 Link Here
939
resultaction_title=Result Status Action Handler
939
resultaction_title=Result Status Action Handler
940
resultsaver_addtimestamp=Add timestamp
940
resultsaver_addtimestamp=Add timestamp
941
resultsaver_errors=Save Failed Responses only
941
resultsaver_errors=Save Failed Responses only
942
resultsaver_numberpadlen=Minimum Length of sequence number
942
resultsaver_ignore_tc=Don't save Transaction Controller SampleResult
943
resultsaver_prefix=Filename prefix\:
943
resultsaver_numberpadlen=Minimum Length of sequence number \:
944
resultsaver_prefix=Filename prefix (can include folders) \:
945
resultsaver_save_conditions=Save conditions
946
resultsaver_save_format=Save details
944
resultsaver_skipautonumber=Don't add number to prefix
947
resultsaver_skipautonumber=Don't add number to prefix
945
resultsaver_skipsuffix=Don't add suffix
948
resultsaver_skipsuffix=Don't add content type suffix
946
resultsaver_success=Save Successful Responses only
949
resultsaver_success=Save Successful Responses only
947
resultsaver_title=Save Responses to a file
950
resultsaver_title=Save Responses to a file
948
resultsaver_variable=Variable Name:
951
resultsaver_variable=Variable Name containing saved file name \:
949
result_function=The result of the function is
952
result_function=The result of the function is
950
retobj=Return object
953
retobj=Return object
951
return_code_config_box_title=Return Code Configuration
954
return_code_config_box_title=Return Code Configuration
(-)src/core/org/apache/jmeter/resources/messages_fr.properties (-1 / +4 lines)
Lines 929-936 Link Here
929
resultaction_title=Op\u00E9rateur R\u00E9sultats Action
929
resultaction_title=Op\u00E9rateur R\u00E9sultats Action
930
resultsaver_addtimestamp=Ajouter un timestamp
930
resultsaver_addtimestamp=Ajouter un timestamp
931
resultsaver_errors=Enregistrer seulement les r\u00E9ponses en \u00E9checs
931
resultsaver_errors=Enregistrer seulement les r\u00E9ponses en \u00E9checs
932
resultsaver_ignore_tc=Ne pas enregistrer l''\u00E9chantillon Transaction Controller 
932
resultsaver_numberpadlen=Taille minimale du num\u00E9ro de s\u00E9quence
933
resultsaver_numberpadlen=Taille minimale du num\u00E9ro de s\u00E9quence
933
resultsaver_prefix=Pr\u00E9fixe du nom de fichier \: 
934
resultsaver_prefix=Pr\u00E9fixe du nom de fichier \:
935
resultsaver_save_conditions=Conditions d''enregistrement
936
resultsaver_save_format=D\u00E9tails de l''enregistrement
934
resultsaver_skipautonumber=Ne pas ajouter de nombre au pr\u00E9fixe
937
resultsaver_skipautonumber=Ne pas ajouter de nombre au pr\u00E9fixe
935
resultsaver_skipsuffix=Ne pas ajouter de suffixe
938
resultsaver_skipsuffix=Ne pas ajouter de suffixe
936
resultsaver_success=Enregistrer seulement les r\u00E9ponses en succ\u00E8s
939
resultsaver_success=Enregistrer seulement les r\u00E9ponses en succ\u00E8s
(-)xdocs/usermanual/component_reference.xml (-5 / +8 lines)
Lines 3178-3200 Link Here
3178
    </description>
3178
    </description>
3179
 <properties>
3179
 <properties>
3180
 <property name="Name" required="No">Descriptive name for this element that is shown in the tree.</property>
3180
 <property name="Name" required="No">Descriptive name for this element that is shown in the tree.</property>
3181
 <property name="Filename Prefix" required="Yes">Prefix for the generated file names; this can include a directory name.
3181
 <property name="Filename Prefix (can include folders)" required="Yes">Prefix for the generated file names; this can include a directory name.
3182
        Relative paths are resolved relative to the current working directory (which defaults to the <code>bin/</code> directory).
3182
        Relative paths are resolved relative to the current working directory (which defaults to the <code>bin/</code> directory).
3183
        JMeter also supports paths relative to the directory containing the current test plan (JMX file).
3183
        JMeter also supports paths relative to the directory containing the current test plan (JMX file).
3184
        If the path name begins with "<code>~/</code>" (or whatever is in the <code>jmeter.save.saveservice.base_prefix</code> JMeter property),
3184
        If the path name begins with "<code>~/</code>" (or whatever is in the <code>jmeter.save.saveservice.base_prefix</code> JMeter property),
3185
        then the path is assumed to be relative to the JMX file location. 
3185
        then the path is assumed to be relative to the JMX file location. <br/>
3186
        If parent folders in prefix do not exists, JMeter will create them and stop test if it fails.
3186
 </property>
3187
 </property>
3187
 <property name="Variable Name" required="No">
3188
 <property name="Variable Name containing saved file name" required="No">
3188
 Name of a variable in which to save the generated file name (so it can be used later in the test plan).
3189
 Name of a variable in which to save the generated file name (so it can be used later in the test plan).
3189
 If there are sub-samples then a numeric suffix is added to the variable name.
3190
 If there are sub-samples then a numeric suffix is added to the variable name.
3190
 E.g. if the variable name is <code>FILENAME</code>, then the parent sample file name is saved in the variable <code>FILENAME</code>, 
3191
 E.g. if the variable name is <code>FILENAME</code>, then the parent sample file name is saved in the variable <code>FILENAME</code>, 
3191
 and the filenames for the child samplers are saved in <code>FILENAME1</code>, <code>FILENAME2</code> etc.
3192
 and the filenames for the child samplers are saved in <code>FILENAME1</code>, <code>FILENAME2</code> etc.
3192
 </property>
3193
 </property>
3194
 <property name="Minimum Length of sequence number" required="No">If "<code>Don't add number to prefix</code>" is not checked, then numbers added to prefix will be padded by <code>0</code> so that prefix is has size of this value. Defaults to <code>0</code>.</property>
3193
 <property name="Save Failed Responses only" required="Yes">If selected, then only failed responses are saved</property>
3195
 <property name="Save Failed Responses only" required="Yes">If selected, then only failed responses are saved</property>
3194
 <property name="Save Successful Responses only" required="Yes">If selected, then only successful responses are saved</property>
3196
 <property name="Save Successful Responses only" required="Yes">If selected, then only successful responses are saved</property>
3195
 <property name="Don't add number to prefix" required="Yes">If selected, then no number is added to the prefix. If you select this option, make sure that the prefix is unique or the file may be overwritten.</property>
3197
 <property name="Don't add number to prefix" required="Yes">If selected, then no number is added to the prefix. If you select this option, make sure that the prefix is unique or the file may be overwritten.</property>
3196
 <property name="Don't add suffix" required="Yes">If selected, then no suffix is added. If you select this option, make sure that the prefix is unique or the file may be overwritten.</property>
3198
 <property name="Don't add content type suffix" required="Yes">If selected, then no suffix is added. If you select this option, make sure that the prefix is unique or the file may be overwritten.</property>
3197
 <property name="Minimum Length of sequence number" required="No">If "<code>Don't add number to prefix</code>" is not checked, then numbers added to prefix will be padded by <code>0</code> so that prefix is has size of this value. Defaults to <code>0</code>.</property>
3199
 <property name="Add timestamp" required="Yes">If selected, then date will be included in file suffix following format <code>yyyyMMdd-HHmm_</code></property>
3200
 <property name="Don't Save Transaction Controller SampleResult" required="Yes">If selected, then SamplerResult generated by Transaction Controller will be ignored</property>
3198
 </properties>
3201
 </properties>
3199
</component>
3202
</component>
3200
3203

Return to bug 62195