# Class ResultCollector

java.lang.Object
org.apache.jmeter.testelement.AbstractTestElement
org.apache.jmeter.reporters.AbstractListenerElement
org.apache.jmeter.reporters.ResultCollector

All Implemented Interfaces:
  `Serializable, Cloneable, NoThreadClone, Searchable, Clearable, Remoteable, SampleListener, TestElement, TestStateListener`

Direct Known Subclasses:
  `MailerResultCollector`

public class ResultCollector extends AbstractListenerElement implements SampleListener, Clearable, Serializable, TestStateListener, Remoteable, NoThreadClone
This class handles all saving of samples. The class must be thread-safe because it is shared between threads (NoThreadClone).

See Also:
  - Serialized Form

## Field Summary

Fields
Modifier and Type
Field
Description
`static final String`
`FILENAME`

### Fields inherited from interface TestElement

`COMMENTS, ENABLED, GUI_CLASS, NAME, TEST_CLASS`

## Constructor Summary

Constructors
Constructor
Description
`ResultCollector()`
No-arg constructor.
`ResultCollector(Summariser summer)`
Constructor which sets the used `Summariser`

## Method Summary

Modifier and Type
Method
Description
`void`
`clearData()`
Clears the current data of the object.
`Object`
`clone()`
`protected void`
`flushFile()`
Flush PrintWriter to synchronize file contents
`String`
`getFilename()`
Get the filename of the file this collector uses
`SampleSaveConfiguration`
`getSaveConfig()`
`boolean`
`isErrorLogging()`
Get the state of error logging
`boolean`
`isSampleWanted(boolean success)`
Decides whether or not to a sample is wanted based on: errorOnly successOnly sample success Should only be called for single samples.
`static boolean`
`isSampleWanted(boolean success, boolean errorOnly, boolean successOnly)`
Decides whether or not to a sample is wanted based on: errorOnly successOnly sample success This version is intended to be called by code that loops over many samples; it is cheaper than fetching the settings each time.
`boolean`
`isSuccessOnlyLogging()`
Get the state of successful only logging
`void`
`loadExistingFile()`
Loads an existing sample data (JTL) file.
`void`
`recordStats(TestElement e)`
recordStats is used to save statistics generated by visualizers
`void`
`sampleOccurred(SampleEvent event)`
When a test result is received, display it and save it.
`void`
`sampleStarted(SampleEvent e)`
A sample has started.
`void`
`sampleStopped(SampleEvent e)`
A sample has stopped.
`protected final void`
`sendToVisualizer(SampleResult r)`
`final void`
`setErrorLogging(boolean errorLogging)`
Sets error logging flag
`void`
`setFilename(String f)`
Sets the filename attribute of the ResultCollector object.
`void`
`setSaveConfig(SampleSaveConfiguration saveConfig)`
`final void`
`setSuccessOnlyLogging(boolean value)`
Sets the flag whether only successful samples should be logged
`void`
`testEnded()`
Called once for all threads after the end of a test.
`void`
`testEnded(String host)`
Called once for all threads after the end of a test.
`void`
`testStarted()`
Called just before the start of the test from the main engine thread.
`void`
`testStarted(String host)`
Called just before the start of the test from the main engine thread.

### Methods inherited from class AbstractListenerElement

`getVisualizer, setListener`

### Methods inherited from class AbstractTestElement

`addPropertiesValues, addProperty, addProperty, addTestElement, canRemove, clear, clearTemporary, clearTestElementChildren, emptyTemporary, equals, getComment, getName, getProperty, getPropertyAsBoolean, getPropertyAsBoolean, getPropertyAsDouble, getPropertyAsFloat, getPropertyAsInt, getPropertyAsInt, getPropertyAsLong, getPropertyAsLong, getPropertyAsString, getPropertyAsString, getSearchableTokens, getThreadContext, getThreadName, hashCode, isEnabled, isRunningVersion, isTemporary, logProperties, mergeIn, propertyIterator, recoverRunningVersion, removeProperty, setComment, setEnabled, setName, setProperty, setProperty, setProperty, setProperty, setProperty, setProperty, setProperty, setProperty, setProperty, setRunningVersion, setTemporary, setThreadContext, setThreadName, traverse, traverseCollection, traverseMap, traverseProperty`

### Methods inherited from class Object

`finalize, getClass, notify, notifyAll, toString, wait, wait, wait`

## Field Details

### FILENAME

public static final String FILENAME

See Also:
  - Constant Field Values

## Constructor Details

### ResultCollector

public ResultCollector()
No-arg constructor.

### ResultCollector

public ResultCollector(Summariser summer)
Constructor which sets the used `Summariser`

Parameters:
  `summer` - The `Summariser` to use

## Method Details

### clone

public Object clone()

Specified by:
  `clone` in interface `TestElement`
Overrides:
  `clone` in class `AbstractListenerElement`

### getFilename

public String getFilename()
Get the filename of the file this collector uses

Returns:
  The name of the file

### isErrorLogging

public boolean isErrorLogging()
Get the state of error logging

Returns:
  Flag whether errors should be logged

### setErrorLogging

public final void setErrorLogging(boolean errorLogging)
Sets error logging flag

Parameters:
  `errorLogging` - The flag whether errors should be logged

### setSuccessOnlyLogging

public final void setSuccessOnlyLogging(boolean value)
Sets the flag whether only successful samples should be logged

Parameters:
  `value` - The flag whether only successful samples should be logged

### isSuccessOnlyLogging

public boolean isSuccessOnlyLogging()
Get the state of successful only logging

Returns:
  Flag whether only successful samples should be logged

### isSampleWanted

public boolean isSampleWanted(boolean success)
Decides whether or not to a sample is wanted based on:

- errorOnly
- successOnly
- sample success

Should only be called for single samples.

Parameters:
  `success` - is sample successful
Returns:
  whether to log/display the sample

### isSampleWanted

public static boolean isSampleWanted(boolean success, boolean errorOnly, boolean successOnly)
Decides whether or not to a sample is wanted based on:

- errorOnly
- successOnly
- sample success

This version is intended to be called by code that loops over many samples; it is cheaper than fetching the settings each time.

Parameters:
  `success` - status of sample
  `errorOnly` - if errors only wanted
  `successOnly` - if success only wanted
Returns:
  whether to log/display the sample

### setFilename

public void setFilename(String f)
Sets the filename attribute of the ResultCollector object.

Parameters:
  `f` - the new filename value

### testEnded

public void testEnded(String host)
Description copied from interface: `TestStateListener`

Called once for all threads after the end of a test. This will use the same element instances as at the start of the test.

N.B. testStarted() and testEnded() are called from different threads.

Specified by:
  `testEnded` in interface `TestStateListener`
Parameters:
  `host` - name of host
See Also:
  - `StandardJMeterEngine.stopTest()`

### testStarted

public void testStarted(String host)
Description copied from interface: `TestStateListener`

Called just before the start of the test from the main engine thread. This is before the test elements are cloned. Note that not all the test variables will have been set up at this point.

N.B. testStarted() and testEnded() are called from different threads.

Specified by:
  `testStarted` in interface `TestStateListener`
Parameters:
  `host` - name of host
See Also:
  - `StandardJMeterEngine.run()`

### testEnded

public void testEnded()
Description copied from interface: `TestStateListener`

Called once for all threads after the end of a test. This will use the same element instances as at the start of the test.

N.B. testStarted() and testEnded() are called from different threads.

Specified by:
  `testEnded` in interface `TestStateListener`
See Also:
  - `StandardJMeterEngine.stopTest()`

### testStarted

public void testStarted()
Description copied from interface: `TestStateListener`

Called just before the start of the test from the main engine thread. This is before the test elements are cloned. Note that not all the test variables will have been set up at this point.

N.B. testStarted() and testEnded() are called from different threads.

Specified by:
  `testStarted` in interface `TestStateListener`
See Also:
  - `StandardJMeterEngine.run()`

### loadExistingFile

public void loadExistingFile()
Loads an existing sample data (JTL) file. This can be one of:

- XStream format
- Avalon format
- CSV format

### sampleStarted

public void sampleStarted(SampleEvent e)
Description copied from interface: `SampleListener`
A sample has started.

Specified by:
  `sampleStarted` in interface `SampleListener`
Parameters:
  `e` - the `SampleEvent` that has started

### sampleStopped

public void sampleStopped(SampleEvent e)
Description copied from interface: `SampleListener`
A sample has stopped.

Specified by:
  `sampleStopped` in interface `SampleListener`
Parameters:
  `e` - the `SampleEvent` that has stopped

### sampleOccurred

public void sampleOccurred(SampleEvent event)
When a test result is received, display it and save it.

Specified by:
  `sampleOccurred` in interface `SampleListener`
Parameters:
  `event` - the sample event that was received

### sendToVisualizer

protected final void sendToVisualizer(SampleResult r)

### recordStats

public void recordStats(TestElement e) throws IOException
recordStats is used to save statistics generated by visualizers

Parameters:
  `e` - The data to save
Throws:
  `IOException` - when data writing fails

### flushFile

protected void flushFile()
Flush PrintWriter to synchronize file contents

### getSaveConfig

public SampleSaveConfiguration getSaveConfig()

Returns:
  Returns the saveConfig.

### setSaveConfig

public void setSaveConfig(SampleSaveConfiguration saveConfig)

Parameters:
  `saveConfig` - The saveConfig to set.

### clearData

public void clearData()
Description copied from interface: `Clearable`
Clears the current data of the object.

Specified by:
  `clearData` in interface `Clearable`