Wiki Markup |
---|
h2. DataSet Component |
...
{include |
...
:Testing Summary |
...
Include} The DataSet component (available since 1.3.0) provides a mechanism to easily perform load & soak testing of your system. It works by allowing you to create [DataSet instances|http://camel.apache.org/maven/camel-core/apidocs/org/apache/camel/component/dataset/DataSet.html] both as a source of messages and as a way to assert that the data set is received. |
...
Camel will use the [throughput logger|Log] when sending dataset's |
...
URI format
Code Block |
---|
.
h3. URI format
{code}
dataset:name[?options]
|
Where name is used to find the DataSet instance in the Registry
...
{code} Where *name* is used to find the [DataSet instance|http://camel.apache.org/maven/camel-core/apidocs/org/apache/camel/component/dataset/DataSet.html] 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 a default implementation, the {{org.apache.camel.component.dataset.SimpleDataSet}} that can be used for testing. h3. |
...
Options
Option | Default | Description |
---|---|---|
| 3 | Allows a delay in ms to be specified, which causes producers to pause in order to simulate slow producers. Uses a minimum of 3 ms delay unless you set this option to -1 to force no delay at all. |
| 0 | Allows a delay in ms to be specified, which causes consumers to pause in order to simulate slow consumers. |
| 0 | Sets how many messages should be preloaded (sent) before the route completes its initialization. |
| 1000 | Camel 2.1: Time period in millis to wait before starting sending messages. |
| 0 | Wait until the DataSet contains at least this number of messages |
...
Options {div:class=confluenceTableSmall} || Option || Default || Description || | {{produceDelay}} | 3 | Allows a delay in ms to be specified, which causes producers to pause in order to simulate slow producers. Uses a minimum of 3 ms delay unless you set this option to -1 to force no delay at all. | | {{consumeDelay}} | 0 | Allows a delay in ms to be specified, which causes consumers to pause in order to simulate slow consumers. | | {{preloadSize}} | 0 | Sets how many messages should be preloaded (sent) before the route completes its initialization. | | {{initialDelay}} | 1000 | *Camel 2.1:* Time period in millis to wait before starting sending messages. | | {{minRate}} | 0 | Wait until the DataSet contains at least this number of messages | {div} 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:
Code Block | ||
---|---|---|
xml | xml | }} h3. Configuring DataSet Camel will lookup in the [Registry] for a bean implementing the DataSet interface. So you can register your own DataSet as: {code:xml} <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:
Code Block |
---|
{code} h3. 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: {code} // 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"); {code} 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. |
...
h3. Properties on |
...
Property | Type | Description |
---|---|---|
| | Specifies the default message body. For SimpleDataSet it is a constant payload; though if you want to create custom payloads per message, create your own derivation of |
| | Specifies the number of messages to be received before reporting progress. Useful for showing progress of a large load test. |
| | Specifies how many messages to send/consume. |
...
SimpleDataSet
{div:class=confluenceTableSmall}
||Property||Type||Description||
|{{defaultBody}} | {{Object}} | Specifies the default message body. For SimpleDataSet it is a constant payload; though if you want to create custom payloads per message, create your own derivation of {{DataSetSupport}}. |
|{{reportGroup}} | {{long}} | Specifies the number of messages to be received before reporting progress. Useful for showing progress of a large load test.|
|{{size}} | {{long}} |Specifies how many messages to send/consume.|
{div}
{include:Endpoint See Also}
* [Spring Testing] |