DataSet Component
The DataSet component provides a mechanism to easily perform load & soak testing of your system. It works by allowing you to create DataSet instances both as a source of messages and as a way to assert that the data set is received.
Camel will use the throughput logger when sending dataset's.
URI format
dataset:name[?options]
Where name
is used to find the DataSet instance in the Registry
Camel ships with a support implementation of org.apache.camel.component.dataset.DataSet
, the org.apache.camel.component.dataset.DataSetSupport
class, that can be used as a base for implementing your own DataSet
.
Camel also ships with some implementations that can be used for testing:
org.apache.camel.component.dataset.SimpleDataSet
org.apache.camel.component.dataset.ListDataSet
org.apache.camel.component.dataset.FileDataSet
all of which extend DataSetSupport
.
Options
Option | Default | Description | ||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
| Allows a delay in ms to be specified, which causes producers to pause in order to simulate slow producers. Uses a minimum of | ||||||||||||||||
|
| Allows a delay in ms to be specified, which causes consumers to pause in order to simulate slow consumers. | ||||||||||||||||
|
| Sets how many messages should be pre-loaded (sent) before the route completes its initialization. | ||||||||||||||||
|
| Camel 2.1: Time period in milliseconds to wait before starting sending messages. | ||||||||||||||||
|
| Wait until the | ||||||||||||||||
dataSetIndex | lenient | Camel 2.17: Controls the behavior of the The supported values are:
The default behavior prior to Camel 2.17 can be restored using
|
You can append query options to the URI in the following format: ?option=value&option=value&...
Configuring DataSet
Camel will lookup in the Registry for a bean implementing the DataSet
interface. So you can register your own DataSet
as:
<bean id="myDataSet" class="com.mycompany.MyDataSet"> <property name="size" value="100"/> </bean>
Example
For example, to test that a set of messages are sent to a queue and then consumed from the queue without losing any messages:
// Send the dataset to a queue from("dataset:foo") .to("activemq:SomeQueue"); // Now lets test that the messages are consumed correctly from("activemq:SomeQueue") .to("dataset:foo");
The above would look in the Registry to find the foo
DataSet
instance which is used to create the messages. Then you create a DataSet implementation, such as using the SimpleDataSet
as described below, configuring things like how big the data set is and what the messages look like etc.
DataSetSupport
(abstract class)
The DataSetSupport
abstract class is a nice starting point for new DataSets, and provides some useful features to derived classes.
Properties on DataSetSupport
Property | Type | Default | Description |
---|---|---|---|
|
|
| Specifies the default message body. For |
|
| null |
|
|
|
| Specifies how many messages to send/consume. |
reportCount | long | -1 | Specifies the number of messages to be received before reporting progress. Useful for showing progress of a large load test. If < 0, then If == 0 then Else set to |
SimpleDataSet
The SimpleDataSet
extends DataSetSupport
, and adds a default body.
Additional Properties on SimpleDataSet
Property | Type | Default | Description |
---|---|---|---|
|
|
| Specifies the default message body. By default, the |
ListDataSet (Camel 2.17)
The ListDataSet
extends DataSetSupport
, and adds a list of default bodies.
Additional Properties on ListDataSet
Property | Type | Default | Description |
---|---|---|---|
|
|
| Specifies the default message body. By default, the |
|
| the size of the | Specifies how many messages to send/consume. This value can be different from the size of the |
FileDataSet (Camel 2.17)
The SimpleDataSet
extends ListDataSet
, and adds support for loading the bodies from a file.
Additional Properties on FileDataSet
Property | Type | Default | Description |
---|---|---|---|
|
| null | Specifies the source file for payloads |
|
| \z | Specifies the delimiter pattern used by a |