Repository: camel
Updated Branches:
  refs/heads/master e82f798b5 -> 6a42b0220


Added dataset docs to Gitbook


Project: http://git-wip-us.apache.org/repos/asf/camel/repo
Commit: http://git-wip-us.apache.org/repos/asf/camel/commit/7e2c7333
Tree: http://git-wip-us.apache.org/repos/asf/camel/tree/7e2c7333
Diff: http://git-wip-us.apache.org/repos/asf/camel/diff/7e2c7333

Branch: refs/heads/master
Commit: 7e2c7333af236c84820fa9a1beffb1b4a6a626d2
Parents: e82f798
Author: Andrea Cosentino <[email protected]>
Authored: Mon Jun 13 11:09:20 2016 +0200
Committer: Andrea Cosentino <[email protected]>
Committed: Mon Jun 13 11:09:20 2016 +0200

----------------------------------------------------------------------
 camel-core/src/main/docs/dataset.adoc | 239 +++++++++++++++++++++++++++++
 docs/user-manual/en/SUMMARY.md        |   1 +
 2 files changed, 240 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/camel/blob/7e2c7333/camel-core/src/main/docs/dataset.adoc
----------------------------------------------------------------------
diff --git a/camel-core/src/main/docs/dataset.adoc 
b/camel-core/src/main/docs/dataset.adoc
new file mode 100644
index 0000000..970c712
--- /dev/null
+++ b/camel-core/src/main/docs/dataset.adoc
@@ -0,0 +1,239 @@
+[[DataSet-DataSetComponent]]
+DataSet Component
+~~~~~~~~~~~~~~~~~
+
+link:testing.html[Testing] of distributed and asynchronous processing is
+notoriously difficult. The link:mock.html[Mock], link:test.html[Test]
+and link:dataset.html[DataSet] endpoints work great with the
+link:testing.html[Camel Testing Framework] to simplify your unit and
+integration testing using
+link:enterprise-integration-patterns.html[Enterprise Integration
+Patterns] and Camel's large range of link:components.html[Components]
+together with the powerful link:bean-integration.html[Bean Integration].
+
+The DataSet component provides a mechanism to easily perform load & soak
+testing of your system. It works by allowing you to create
+http://camel.apache.org/maven/current/camel-core/apidocs/org/apache/camel/component/dataset/DataSet.html[DataSet
+instances] both as a source of messages and as a way to assert that the
+data set is received.
+
+Camel will use the link:log.html[throughput logger] when sending
+dataset's.
+
+[[DataSet-URIformat]]
+URI format
+^^^^^^^^^^
+
+[source,java]
+----------------------
+dataset:name[?options]
+----------------------
+
+Where *name* is used to find the
+http://camel.apache.org/maven/current/camel-core/apidocs/org/apache/camel/component/dataset/DataSet.html[DataSet
+instance] in the link:registry.html[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`
+and `org.apache.camel.component.dataset.FileDataSet`, all of which
+extend `DataSetSupport`.
+
+[[DataSet-Options]]
+Options
+^^^^^^^
+
+
+// component options: START
+The Dataset component has no options.
+// component options: END
+
+
+
+// endpoint options: START
+The Dataset component supports 20 endpoint options which are listed below:
+
+{% raw %}
+[width="100%",cols="2s,1,1m,1m,5",options="header"]
+|=======================================================================
+| Name | Group | Default | Java Type | Description
+| name | common |  | DataSet | *Required* Name of DataSet to lookup in the 
registry
+| dataSetIndex | common | lenient | String | Controls the behaviour of the 
CamelDataSetIndex header. For Consumers: - off = the header will not be set - 
strict/lenient = the header will be set For Producers: - off = the header value 
will not be verified and will not be set if it is not present = strict = the 
header value must be present and will be verified = lenient = the header value 
will be verified if it is present and will be set if it is not present
+| bridgeErrorHandler | consumer | false | boolean | Allows for bridging the 
consumer to the Camel routing Error Handler which mean any exceptions occurred 
while the consumer is trying to pickup incoming messages or the likes will now 
be processed as a message and handled by the routing Error Handler. By default 
the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with 
exceptions that will be logged at WARN/ERROR level and ignored.
+| initialDelay | consumer | 1000 | long | Time period in millis to wait before 
starting sending messages.
+| minRate | consumer | 0 | int | Wait until the DataSet contains at least this 
number of messages
+| preloadSize | consumer | 0 | long | Sets how many messages should be 
preloaded (sent) before the route completes its initialization
+| produceDelay | consumer | 3 | long | Allows a delay to be specified which 
causes a delay when a message is sent by the consumer (to simulate slow 
processing)
+| exceptionHandler | consumer (advanced) |  | ExceptionHandler | To let the 
consumer use a custom ExceptionHandler. Notice if the option bridgeErrorHandler 
is enabled then this options is not in use. By default the consumer will deal 
with exceptions that will be logged at WARN/ERROR level and ignored.
+| assertPeriod | producer | 0 | long | Sets a grace period after which the 
mock endpoint will re-assert to ensure the preliminary assertion is still 
valid. This is used for example to assert that exactly a number of messages 
arrives. For example if link expectedMessageCount(int) was set to 5 then the 
assertion is satisfied when 5 or more message arrives. To ensure that exactly 5 
messages arrives then you would need to wait a little period to ensure no 
further message arrives. This is what you can use this link 
setAssertPeriod(long) method for. By default this period is disabled.
+| consumeDelay | producer | 0 | long | Allows a delay to be specified which 
causes a delay when a message is consumed by the producer (to simulate slow 
processing)
+| expectedCount | producer | -1 | int | Specifies the expected number of 
message exchanges that should be received by this endpoint. Beware: If you want 
to expect that 0 messages then take extra care as 0 matches when the tests 
starts so you need to set a assert period time to let the test run for a while 
to make sure there are still no messages arrived; for that use link 
setAssertPeriod(long). An alternative is to use NotifyBuilder and use the 
notifier to know when Camel is done routing some messages before you call the 
link assertIsSatisfied() method on the mocks. This allows you to not use a 
fixed assert period to speedup testing times. If you want to assert that 
exactly n'th message arrives to this mock endpoint then see also the link 
setAssertPeriod(long) method for further details.
+| reportGroup | producer |  | int | A number that is used to turn on 
throughput logging based on groups of the size.
+| resultMinimumWaitTime | producer | 0 | long | Sets the minimum expected 
amount of time (in millis) the link assertIsSatisfied() will wait on a latch 
until it is satisfied
+| resultWaitTime | producer | 0 | long | Sets the maximum amount of time (in 
millis) the link assertIsSatisfied() will wait on a latch until it is satisfied
+| retainFirst | producer | -1 | int | Specifies to only retain the first n'th 
number of received Exchanges. This is used when testing with big data to reduce 
memory consumption by not storing copies of every Exchange this mock endpoint 
receives. Important: When using this limitation then the link 
getReceivedCounter() will still return the actual number of received Exchanges. 
For example if we have received 5000 Exchanges and have configured to only 
retain the first 10 Exchanges then the link getReceivedCounter() will still 
return 5000 but there is only the first 10 Exchanges in the link getExchanges() 
and link getReceivedExchanges() methods. When using this method then some of 
the other expectation methods is not supported for example the link 
expectedBodiesReceived(Object...) sets a expectation on the first number of 
bodies received. You can configure both link setRetainFirst(int) and link 
setRetainLast(int) methods to limit both the first and last received.
+| retainLast | producer | -1 | int | Specifies to only retain the last n'th 
number of received Exchanges. This is used when testing with big data to reduce 
memory consumption by not storing copies of every Exchange this mock endpoint 
receives. Important: When using this limitation then the link 
getReceivedCounter() will still return the actual number of received Exchanges. 
For example if we have received 5000 Exchanges and have configured to only 
retain the last 20 Exchanges then the link getReceivedCounter() will still 
return 5000 but there is only the last 20 Exchanges in the link getExchanges() 
and link getReceivedExchanges() methods. When using this method then some of 
the other expectation methods is not supported for example the link 
expectedBodiesReceived(Object...) sets a expectation on the first number of 
bodies received. You can configure both link setRetainFirst(int) and link 
setRetainLast(int) methods to limit both the first and last received.
+| sleepForEmptyTest | producer | 0 | long | Allows a sleep to be specified to 
wait to check that this endpoint really is empty when link 
expectedMessageCount(int) is called with zero
+| copyOnExchange | producer (advanced) | true | boolean | Sets whether to make 
a deep copy of the incoming Exchange when received at this mock endpoint. Is by 
default true.
+| exchangePattern | advanced | InOnly | ExchangePattern | Sets the default 
exchange pattern when creating an exchange.
+| synchronous | advanced | false | boolean | Sets whether synchronous 
processing should be strictly used or Camel is allowed to use asynchronous 
processing (if supported).
+|=======================================================================
+{% endraw %}
+// endpoint options: END
+
+
+You can append query options to the URI in the following format,
+`?option=value&option=value&...`
+
+[[DataSet-ConfiguringDataSet]]
+Configuring DataSet
+^^^^^^^^^^^^^^^^^^^
+
+Camel will lookup in the link:registry.html[Registry] for a bean
+implementing the DataSet interface. So you can register your own DataSet
+as:
+
+[source,xml]
+--------------------------------------------------------
+   <bean id="myDataSet" class="com.mycompany.MyDataSet">
+      <property name="size" value="100"/>
+   </bean>
+--------------------------------------------------------
+
+[[DataSet-Example]]
+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:
+
+[source,java]
+---------------------------------------------------------
+// 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 link:registry.html[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.  
+
+ 
+
+[[DataSet-DataSetSupport(abstractclass)]]
+`DataSetSupport` (abstract class)
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+The DataSetSupport abstract class is a nice starting point for new
+DataSets, and provides some useful features to derived classes.
+
+[[DataSet-PropertiesonDataSetSupport]]
+Properties on DataSetSupport
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+[width="100%",cols="10%,10%,10%,70%",options="header",]
+|=======================================================================
+|Property |Type |Default |Description
+
+|`defaultHeaders` |`Map<String,Object>` |`null` |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`.
+
+|`outputTransformer` |`org.apache.camel.Processor` |null |
+
+|`size` |`long` |`10` |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
+`size` / 5, if is 0 then `size`, else set to `reportCount` value.
+|=======================================================================
+
+[[DataSet-SimpleDataSet]]
+`SimpleDataSet`
+^^^^^^^^^^^^^^^
+
+The `SimpleDataSet` extends `DataSetSupport`, and adds a default body.
+
+[[DataSet-AdditionalPropertiesonSimpleDataSet]]
+Additional Properties on SimpleDataSet
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+[width="100%",cols="10%,10%,10%,70%",options="header",]
+|=======================================================================
+|Property |Type |Default |Description
+
+|`defaultBody` |`Object` |`<hello>world!</hello>` |Specifies the default 
message body. By default, the `SimpleDataSet`
+produces the same constant payload for each exchange. If you want to
+customize the payload for each exchange, create a Camel `Processor` and
+configure the `SimpleDataSet` to use it by setting the
+`outputTransformer` property.
+|=======================================================================
+
+[[DataSet-ListDataSet(Camel2.17)]]
+`ListDataSet (Camel 2.17)`
+^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+The List`DataSet` extends `DataSetSupport`, and adds a list of default
+bodies.
+
+[[DataSet-AdditionalPropertiesonListDataSet]]
+Additional Properties on ListDataSet
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+[width="100%",cols="10%,10%,10%,70%",options="header",]
+|=======================================================================
+|Property |Type |Default |Description
+
+|`defaultBodies` |`List<Object>` |`empty LinkedList<Object>` |Specifies the 
default message body. By default, the `ListDataSet`
+selects a constant payload from the list of `defaultBodies` using the
+`CamelDataSetIndex`. If you want to customize the payload, create a
+Camel `Processor` and configure the `ListDataSet` to use it by setting
+the `outputTransformer` property.
+
+|`size` |`long` |the size of the defaultBodies list |Specifies how many 
messages to send/consume. This value can be different
+from the size of the `defaultBodies` list. If the value is less than the
+size of the `defaultBodies` list, some of the list elements will not be
+used. If the value is greater than the size of the `defaultBodies` list,
+the payload for the exchange will be selected using the modulus of the
+`CamelDataSetIndex` and the size of the `defaultBodies` list (i.e.
+`CamelDataSetIndex % defaultBodies.size()` )
+|=======================================================================
+
+[[DataSet-FileDataSetCamel2.17]]
+FileDataSet (Camel 2.17)
+^^^^^^^^^^^^^^^^^^^^^^^^
+
+The `SimpleDataSet` extends `ListDataSet`, and adds support for loading
+the bodies from a file.
+
+[[DataSet-AdditionalPropertiesonFileDataSet]]
+Additional Properties on FileDataSet
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+[width="100%",cols="10%,10%,10%,70%",options="header",]
+|=======================================================================
+|Property |Type |Default |Description
+
+|`sourceFile` |`File` |null |Specifies the source file for payloads
+
+|`delimiter` |`String` |\z |Specifies the delimiter pattern used by a 
`java.util.Scanner` to split
+the file into multiple payloads.
+|=======================================================================
+
+[[DataSet-SeeAlso]]
+See Also
+^^^^^^^^
+
+* link:configuring-camel.html[Configuring Camel]
+* link:component.html[Component]
+* link:endpoint.html[Endpoint]
+* link:getting-started.html[Getting Started]
+* link:spring-testing.html[Spring Testing]
+

http://git-wip-us.apache.org/repos/asf/camel/blob/7e2c7333/docs/user-manual/en/SUMMARY.md
----------------------------------------------------------------------
diff --git a/docs/user-manual/en/SUMMARY.md b/docs/user-manual/en/SUMMARY.md
index b2a9bb4..1533e85 100644
--- a/docs/user-manual/en/SUMMARY.md
+++ b/docs/user-manual/en/SUMMARY.md
@@ -80,6 +80,7 @@
     * [Class](class.adoc)
     * [Controlbus](controlbus.adoc)
     * [Dataformat](dataformat.adoc)
+    * [Dataset](dataset.adoc)
     * [Mock](mock.adoc)
     * [Properties](properties.adoc)
 

Reply via email to