Class MockEndpoint

java.lang.Object
org.apache.camel.support.service.BaseService
org.apache.camel.support.service.ServiceSupport
org.apache.camel.support.DefaultEndpoint
org.apache.camel.component.mock.MockEndpoint
All Implemented Interfaces:
AutoCloseable, org.apache.camel.CamelContextAware, org.apache.camel.ComponentAware, org.apache.camel.Endpoint, org.apache.camel.IsSingleton, org.apache.camel.Service, org.apache.camel.ShutdownableService, org.apache.camel.spi.BrowsableEndpoint, org.apache.camel.spi.HasCamelContext, org.apache.camel.spi.HasId, org.apache.camel.spi.NotifyBuilderMatcher, org.apache.camel.StatefulService, org.apache.camel.SuspendableService

@UriEndpoint(firstVersion="1.0.0", scheme="mock", title="Mock", syntax="mock:name", producerOnly=true, remote=false, category={CORE,TESTING}, lenientProperties=true) public class MockEndpoint extends org.apache.camel.support.DefaultEndpoint implements org.apache.camel.spi.BrowsableEndpoint, org.apache.camel.spi.NotifyBuilderMatcher
Test routes and mediation rules using mocks.

A Mock endpoint which provides a literate, fluent API for testing routes using a JMock style API.

The mock endpoint have two set of methods

  • expectedXXX or expectsXXX - To set pre conditions, before the test is executed
  • assertXXX - To assert assertions, after the test has been executed
Its important to know the difference between the two set. The former is used to set expectations before the test is being started (eg before the mock receives messages). The latter is used after the test has been executed, to verify the expectations; or other assertions which you can perform after the test has been completed.

Beware: If you want to expect a mock does not receive any messages, by calling setExpectedMessageCount(int) with 0, 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 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 assertIsSatisfied() method on the mocks. This allows you to not use a fixed assert period, to speedup testing times.

Important: If using expectedMessageCount(int) and also expectedBodiesReceived(java.util.List) or expectedHeaderReceived(String, Object) then the latter overrides the number of expected message based on the number of values provided in the bodies/headers.

  • Field Summary

    Fields
    Modifier and Type
    Field
    Description
    protected org.apache.camel.Processor
     

    Fields inherited from class org.apache.camel.support.service.BaseService

    BUILT, FAILED, INITIALIZED, INITIALIZING, lock, NEW, SHUTDOWN, SHUTTING_DOWN, STARTED, STARTING, status, STOPPED, STOPPING, SUSPENDED, SUSPENDING
  • Constructor Summary

    Constructors
    Constructor
    Description
     
    MockEndpoint(String endpointUri, org.apache.camel.Component component)
     
  • Method Summary

    Modifier and Type
    Method
    Description
    protected void
    addReceivedExchange(org.apache.camel.Exchange copy)
    Adds the received exchange.
    Adds an assertion to all the received messages
    protected void
    assertEquals(String message, int expectedValue, int actualValue)
     
    protected void
    assertEquals(String message, Object expectedValue, Object actualValue)
     
    org.apache.camel.Exchange
    Asserts that the given index of message is received (starting at zero)
    protected void
    assertFalse(String message, boolean predicate)
    Asserts that the given predicate is false, if not an AssertionError is raised with the give message.
    void
    Validates that the assertions fail on this endpoint
    void
    assertIsNotSatisfied(long timeoutForEmptyEndpoints)
    Validates that the assertions fail on this endpoint
    void
    Validates that all the available expectations on this endpoint are satisfied; or throw an exception
    void
    assertIsSatisfied(long timeoutForEmptyEndpoints)
    Validates that all the available expectations on this endpoint are satisfied; or throw an exception
    static void
    assertIsSatisfied(long timeout, TimeUnit unit, MockEndpoint... endpoints)
     
    static void
    assertIsSatisfied(org.apache.camel.CamelContext context)
    Asserts that all the expectations on any MockEndpoint instances registered in the given context are valid
    static void
    assertIsSatisfied(org.apache.camel.CamelContext context, long timeout, TimeUnit unit)
    Asserts that all the expectations on any MockEndpoint instances registered in the given context are valid
    static void
     
    void
    assertMessagesAscending(org.apache.camel.Expression expression)
    Asserts that the messages have ascending values of the given expression
    void
    assertMessagesDescending(org.apache.camel.Expression expression)
    Asserts that the messages have descending values of the given expression
    protected void
    assertMessagesSorted(org.apache.camel.Expression expression, boolean ascending)
     
    protected void
    assertMessagesSorted(org.apache.camel.Expression expression, boolean ascending, int index)
     
    void
    assertNoDuplicates(org.apache.camel.Expression expression)
    Asserts among all the current received exchanges that there are no duplicate message
    protected void
    assertTrue(String message, boolean predicate)
    Asserts that the given predicate is true, if not an AssertionError is raised with the give message.
    static void
    assertWait(long timeout, TimeUnit unit, MockEndpoint... endpoints)
     
    void
     
    boolean
    await(long timeout, TimeUnit unit)
     
    org.apache.camel.Consumer
    createConsumer(org.apache.camel.Processor processor)
     
    org.apache.camel.Producer
     
    protected void
    doAssertIsSatisfied(long timeoutForEmptyEndpoints)
     
    void
    Sets an expectation that the given body values are received by this endpoint
    void
    Adds an expectation that this endpoint receives the given body values in the specified order
    void
    Adds an expectation that this endpoint receives the given body values in any order
    void
    Adds an expectation that this endpoint receives the given body values in any order
    Adds an expectation that the given body value are received by this endpoint
    void
    expectedExchangePattern(org.apache.camel.ExchangePattern exchangePattern)
    Adds an expectation that messages received should have the given exchange pattern
    void
    Adds an expectation that a file exists with the given name
    void
    Adds an expectation that a file exists with the given name
    void
    Adds an expectation that a file exists with the given name
    void
    expectedFileExists(Path name, String content)
    Adds an expectation that a file exists with the given name
    void
    Sets an expectation that the given header name invalid input: '&' value are received by this endpoint
    void
    Adds an expectation that this endpoint receives the given header values in any order
    void
    Adds an expectation that this endpoint receives the given header values in any order.
    void
    expectedMessageCount(int expectedCount)
    Specifies the expected number of message exchanges that should be received by this endpoint If you want to assert that exactly n messages arrives to this mock endpoint, then see also the setAssertPeriod(long) method for further details.
    void
    expectedMessagesMatches(org.apache.camel.Predicate... predicates)
    Sets an expectation that the given predicates matches the received messages by this endpoint
    void
    expectedMinimumMessageCount(int expectedCount)
    Specifies the minimum number of expected message exchanges that should be received by this endpoint
    void
    Sets an expectation that the messages received by this endpoint have no header
    void
    Sets an expectation that the given property name invalid input: '&' value are received by this endpoint
    void
    Adds an expectation that this endpoint receives the given property values in any order
    void
    Adds an expectation that this endpoint receives the given property values in any order.
    void
    Sets an expectation that the given variable name invalid input: '&' value are received by this endpoint
    void
    Adds an expectation that this endpoint receives the given variable values in any order
    void
    Adds an expectation that this endpoint receives the given variable values in any order.
    void
    expects(Runnable runnable)
    Adds the expectation which will be invoked when enough messages are received
    Adds an expectation that messages received should have ascending values of the given expression such as a user generated counter value
    void
    expectsAscending(org.apache.camel.Expression expression)
    Adds an expectation that messages received should have ascending values of the given expression such as a user generated counter value
    Adds an expectation that messages received should have descending values of the given expression such as a user generated counter value
    void
    expectsDescending(org.apache.camel.Expression expression)
    Adds an expectation that messages received should have descending values of the given expression such as a user generated counter value
    static void
    expectsMessageCount(int count, MockEndpoint... endpoints)
     
    Adds an expectation that no duplicate messages should be received using the expression to determine the message ID
    void
    expectsNoDuplicates(org.apache.camel.Expression expression)
    Adds an expectation that no duplicate messages should be received using the expression to determine the message ID
    protected void
    fail(Object message)
     
    long
     
     
    List<org.apache.camel.Exchange>
     
    int
     
    int
     
     
     
    int
     
    List<org.apache.camel.Exchange>
     
    org.apache.camel.Processor
     
    int
     
    long
     
    long
     
    int
     
    int
     
    long
     
    void
    handle(org.apache.camel.Exchange exchange)
    Handles the incoming exchange.
    boolean
     
    boolean
     
    boolean
     
    boolean
     
    message(int messageIndex)
    Adds an assertion to the given message index
    boolean
     
    void
    notifyBuilderOnExchange(org.apache.camel.Exchange exchange)
     
    void
     
    protected void
    onExchange(org.apache.camel.Exchange exchange)
     
    protected void
    performAssertions(org.apache.camel.Exchange exchange, org.apache.camel.Exchange copy)
    Performs the assertions on the incoming exchange.
    void
     
    static void
    resetMocks(org.apache.camel.CamelContext context)
    Reset all mock endpoints
    resolve(org.apache.camel.CamelContext context, String uri)
    A helper method to resolve the mock endpoint of the given URI on the given context
    void
    returnReplyBody(org.apache.camel.Expression expression)
    Set the expression which value will be set to the message body
    void
    returnReplyHeader(String headerName, org.apache.camel.Expression expression)
    Set the expression which value will be set to the message header
    void
    setAssertPeriod(long period)
    Sets a grace period after which the mock endpoint will re-assert to ensure the preliminary assertion is still valid.
    static void
    setAssertPeriod(org.apache.camel.CamelContext context, long period)
    Sets the assert period on all the expectations on any MockEndpoint instances registered in the given context.
    void
    setCopyOnExchange(boolean copyOnExchange)
    Sets whether to make a deep copy of the incoming Exchange when received at this mock endpoint.
    void
    setExpectedCount(int expectedCount)
    Specifies the expected number of message exchanges that should be received by this endpoint.
    void
    setExpectedMessageCount(int expectedCount)
     
    void
    setFailFast(boolean failFast)
    Sets whether assertIsSatisfied() should fail fast at the first detected failed expectation while it may otherwise wait for all expected messages to arrive before performing expectations verifications.
    void
    setLog(boolean log)
    To turn on logging when the mock receives an incoming message.
    void
    setMinimumExpectedMessageCount(int expectedCount)
    Specifies the minimum number of expected message exchanges that should be received by this endpoint
    void
     
    void
    setReporter(org.apache.camel.Processor reporter)
    Allows a processor to added to the endpoint to report on progress of the test
    void
    setReportGroup(int reportGroup)
    A number that is used to turn on throughput logging based on groups of the size.
    void
    setResultMinimumWaitTime(long resultMinimumWaitTime)
    Sets the minimum expected amount of time (in millis) the assertIsSatisfied() will wait on a latch until it is satisfied
    void
    setResultWaitTime(long resultWaitTime)
    Sets the maximum amount of time (in millis) the assertIsSatisfied() will wait on a latch until it is satisfied
    void
    setRetainFirst(int retainFirst)
    Specifies to only retain the first nth number of received Exchanges.
    void
    setRetainLast(int retainLast)
    Specifies to only retain the last nth number of received Exchanges.
    void
    setSleepForEmptyTest(long sleepForEmptyTest)
    Allows a sleep to be specified to wait to check that this endpoint really is empty when expectedMessageCount(int) is called with zero
    protected void
     
    protected void
    waitForCompleteLatch(long timeout)
     
    void
    whenAnyExchangeReceived(org.apache.camel.Processor processor)
    Set the processor that will be invoked when the some message is received.
    void
    whenExchangeReceived(int index, org.apache.camel.Processor processor)
    Set the processor that will be invoked when the index message is received.

    Methods inherited from class org.apache.camel.support.DefaultEndpoint

    configureConsumer, configureExchange, configurePollingConsumer, configureProperties, createAsyncProducer, createEndpointUri, createExchange, createExchange, createPollingConsumer, doInit, equals, getCamelContext, getEndpointKey, getEndpointUri, getExceptionHandler, getExchangePattern, getId, getPollingConsumerBlockTimeout, getPollingConsumerQueueSize, hashCode, isAutowiredEnabled, isBridgeErrorHandler, isLazyStartProducer, isPollingConsumerBlockWhenFull, isPollingConsumerCopy, isSingleton, setAutowiredEnabled, setBridgeErrorHandler, setCamelContext, setComponent, setEndpointUri, setEndpointUriIfNotSpecified, setExceptionHandler, setExchangePattern, setLazyStartProducer, setPollingConsumerBlockTimeout, setPollingConsumerBlockWhenFull, setPollingConsumerCopy, setPollingConsumerQueueSize, setProperties, toString

    Methods inherited from class org.apache.camel.support.service.BaseService

    build, doBuild, doFail, doLifecycleChange, doResume, doShutdown, doStart, doStop, doSuspend, fail, getStatus, init, isBuild, isInit, isNew, isRunAllowed, isShutdown, isStarted, isStarting, isStartingOrStarted, isStopped, isStopping, isStoppingOrStopped, isSuspended, isSuspending, isSuspendingOrSuspended, resume, shutdown, start, stop, suspend

    Methods inherited from class java.lang.Object

    clone, finalize, getClass, notify, notifyAll, wait, wait, wait

    Methods inherited from interface org.apache.camel.ComponentAware

    getComponent, setComponent

    Methods inherited from interface org.apache.camel.Endpoint

    configureExchange, configureProperties, createAsyncProducer, createExchange, createExchange, createPollingConsumer, getCamelContext, getEndpointBaseUri, getEndpointKey, getEndpointUri, getExchangePattern, isSingletonProducer, setCamelContext

    Methods inherited from interface org.apache.camel.IsSingleton

    isSingleton

    Methods inherited from interface org.apache.camel.Service

    build, close, init, start, stop

    Methods inherited from interface org.apache.camel.ShutdownableService

    shutdown

    Methods inherited from interface org.apache.camel.StatefulService

    getStatus, isRunAllowed, isStarted, isStarting, isStopped, isStopping, isSuspending

    Methods inherited from interface org.apache.camel.SuspendableService

    isSuspended, resume, suspend
  • Field Details

    • reporter

      protected volatile org.apache.camel.Processor reporter
  • Constructor Details

    • MockEndpoint

      public MockEndpoint()
    • MockEndpoint

      public MockEndpoint(String endpointUri, org.apache.camel.Component component)
  • Method Details

    • resolve

      public static MockEndpoint resolve(org.apache.camel.CamelContext context, String uri)
      A helper method to resolve the mock endpoint of the given URI on the given context
      Parameters:
      context - the camel context to try resolve the mock endpoint from
      uri - the uri of the endpoint to resolve
      Returns:
      the endpoint
    • assertWait

      public static void assertWait(long timeout, TimeUnit unit, MockEndpoint... endpoints) throws InterruptedException
      Throws:
      InterruptedException
    • assertIsSatisfied

      public static void assertIsSatisfied(long timeout, TimeUnit unit, MockEndpoint... endpoints) throws InterruptedException
      Throws:
      InterruptedException
    • assertIsSatisfied

      public static void assertIsSatisfied(MockEndpoint... endpoints) throws InterruptedException
      Throws:
      InterruptedException
    • assertIsSatisfied

      public static void assertIsSatisfied(org.apache.camel.CamelContext context) throws InterruptedException
      Asserts that all the expectations on any MockEndpoint instances registered in the given context are valid
      Parameters:
      context - the camel context used to find all the available endpoints to be asserted
      Throws:
      InterruptedException
    • assertIsSatisfied

      public static void assertIsSatisfied(org.apache.camel.CamelContext context, long timeout, TimeUnit unit) throws InterruptedException
      Asserts that all the expectations on any MockEndpoint instances registered in the given context are valid
      Parameters:
      context - the camel context used to find all the available endpoints to be asserted
      timeout - timeout
      unit - time unit
      Throws:
      InterruptedException
    • setAssertPeriod

      public static void setAssertPeriod(org.apache.camel.CamelContext context, long period)
      Sets the assert period on all the expectations on any MockEndpoint instances registered in the given context.
      Parameters:
      context - the camel context used to find all the available endpoints
      period - the period in millis
    • resetMocks

      public static void resetMocks(org.apache.camel.CamelContext context)
      Reset all mock endpoints
      Parameters:
      context - the camel context used to find all the available endpoints to reset
    • expectsMessageCount

      public static void expectsMessageCount(int count, MockEndpoint... endpoints)
    • getExchanges

      public List<org.apache.camel.Exchange> getExchanges()
      Specified by:
      getExchanges in interface org.apache.camel.spi.BrowsableEndpoint
    • createConsumer

      public org.apache.camel.Consumer createConsumer(org.apache.camel.Processor processor) throws Exception
      Specified by:
      createConsumer in interface org.apache.camel.Endpoint
      Throws:
      Exception
    • createProducer

      public org.apache.camel.Producer createProducer() throws Exception
      Specified by:
      createProducer in interface org.apache.camel.Endpoint
      Throws:
      Exception
    • reset

      public void reset()
    • handle

      @Handler public void handle(org.apache.camel.Exchange exchange) throws Exception
      Handles the incoming exchange.

      This method turns this mock endpoint into a bean which you can use in the Camel routes, which allows you to inject MockEndpoint as beans in your routes and use the features of the mock to control the bean.

      Parameters:
      exchange - the exchange
      Throws:
      Exception - can be thrown
    • whenExchangeReceived

      public void whenExchangeReceived(int index, org.apache.camel.Processor processor)
      Set the processor that will be invoked when the index message is received.
    • whenAnyExchangeReceived

      public void whenAnyExchangeReceived(org.apache.camel.Processor processor)
      Set the processor that will be invoked when the some message is received. This processor could be overwritten by whenExchangeReceived(int, Processor) method.
    • returnReplyBody

      public void returnReplyBody(org.apache.camel.Expression expression)
      Set the expression which value will be set to the message body
      Parameters:
      expression - which is use to set the message body
    • returnReplyHeader

      public void returnReplyHeader(String headerName, org.apache.camel.Expression expression)
      Set the expression which value will be set to the message header
      Parameters:
      headerName - that will be set value
      expression - which is use to set the message header
    • assertIsSatisfied

      public void assertIsSatisfied() throws InterruptedException
      Validates that all the available expectations on this endpoint are satisfied; or throw an exception
      Throws:
      InterruptedException
    • assertIsSatisfied

      public void assertIsSatisfied(long timeoutForEmptyEndpoints) throws InterruptedException
      Validates that all the available expectations on this endpoint are satisfied; or throw an exception
      Parameters:
      timeoutForEmptyEndpoints - the timeout in milliseconds that we should wait for the test to be true
      Throws:
      InterruptedException
    • doAssertIsSatisfied

      protected void doAssertIsSatisfied(long timeoutForEmptyEndpoints) throws InterruptedException
      Throws:
      InterruptedException
    • assertIsNotSatisfied

      public void assertIsNotSatisfied() throws InterruptedException
      Validates that the assertions fail on this endpoint
      Throws:
      InterruptedException
    • assertIsNotSatisfied

      public void assertIsNotSatisfied(long timeoutForEmptyEndpoints) throws InterruptedException
      Validates that the assertions fail on this endpoint
      Parameters:
      timeoutForEmptyEndpoints - the timeout in milliseconds that we should wait for the test to be true
      Throws:
      InterruptedException
    • expectedMessageCount

      public void expectedMessageCount(int expectedCount)
      Specifies the expected number of message exchanges that should be received by this endpoint If you want to assert that exactly n messages arrives to this mock endpoint, then see also the setAssertPeriod(long) method for further details.
      Parameters:
      expectedCount - the number of message exchanges that should be expected by this endpoint
      See Also:
    • getAssertPeriod

      public long getAssertPeriod()
    • setAssertPeriod

      public void setAssertPeriod(long period)
      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 expected count 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 method for.

      By default this period is disabled.

      Parameters:
      period - grace period in millis
    • expectedMinimumMessageCount

      public void expectedMinimumMessageCount(int expectedCount)
      Specifies the minimum number of expected message exchanges that should be received by this endpoint
      Parameters:
      expectedCount - the number of message exchanges that should be expected by this endpoint
    • expectedHeaderReceived

      public void expectedHeaderReceived(String name, Object value)
      Sets an expectation that the given header name invalid input: '&' value are received by this endpoint

      You can set multiple expectations for different header names. If you set a value of null that means we accept either the header is absent, or its value is null

    • expectedNoHeaderReceived

      public void expectedNoHeaderReceived()
      Sets an expectation that the messages received by this endpoint have no header
    • expectedHeaderValuesReceivedInAnyOrder

      public void expectedHeaderValuesReceivedInAnyOrder(String name, List<?> values)
      Adds an expectation that this endpoint receives the given header values in any order.

      Important: The number of values must match the expected number of messages, so if you expect 3 messages, then there must be 3 values.

      Important: This overrides any previous set value using expectedMessageCount(int)

    • expectedHeaderValuesReceivedInAnyOrder

      public void expectedHeaderValuesReceivedInAnyOrder(String name, Object... values)
      Adds an expectation that this endpoint receives the given header values in any order

      Important: The number of values must match the expected number of messages, so if you expect 3 messages, then there must be 3 values.

      Important: This overrides any previous set value using expectedMessageCount(int)

    • expectedVariableReceived

      public void expectedVariableReceived(String name, Object value)
      Sets an expectation that the given variable name invalid input: '&' value are received by this endpoint

      You can set multiple expectations for different variable names. If you set a value of null that means we accept either the variable is absent, or its value is null

    • expectedVariableValuesReceivedInAnyOrder

      public void expectedVariableValuesReceivedInAnyOrder(String name, List<?> values)
      Adds an expectation that this endpoint receives the given variable values in any order.

      Important: The number of variable must match the expected number of messages, so if you expect 3 messages, then there must be 3 values.

      Important: This overrides any previous set value using expectedMessageCount(int)

    • expectedVariableValuesReceivedInAnyOrder

      public void expectedVariableValuesReceivedInAnyOrder(String name, Object... values)
      Adds an expectation that this endpoint receives the given variable values in any order

      Important: The number of values must match the expected number of messages, so if you expect 3 messages, then there must be 3 values.

      Important: This overrides any previous set value using expectedMessageCount(int)

    • expectedPropertyReceived

      public void expectedPropertyReceived(String name, Object value)
      Sets an expectation that the given property name invalid input: '&' value are received by this endpoint

      You can set multiple expectations for different property names. If you set a value of null that means we accept either the property is absent, or its value is null

    • expectedPropertyValuesReceivedInAnyOrder

      public void expectedPropertyValuesReceivedInAnyOrder(String name, List<?> values)
      Adds an expectation that this endpoint receives the given property values in any order.

      Important: The number of values must match the expected number of messages, so if you expect 3 messages, then there must be 3 values.

      Important: This overrides any previous set value using expectedMessageCount(int)

    • expectedPropertyValuesReceivedInAnyOrder

      public void expectedPropertyValuesReceivedInAnyOrder(String name, Object... values)
      Adds an expectation that this endpoint receives the given property values in any order

      Important: The number of values must match the expected number of messages, so if you expect 3 messages, then there must be 3 values.

      Important: This overrides any previous set value using expectedMessageCount(int)

    • expectedBodiesReceived

      public void expectedBodiesReceived(List<?> bodies)
      Adds an expectation that this endpoint receives the given body values in the specified order

      Important: The number of values must match the expected number of messages, so if you expect 3 messages, then there must be 3 values.

      Important: This overrides any previous set value using expectedMessageCount(int)

    • expectedMessagesMatches

      public void expectedMessagesMatches(org.apache.camel.Predicate... predicates)
      Sets an expectation that the given predicates matches the received messages by this endpoint
    • expectedBodiesReceived

      public void expectedBodiesReceived(Object... bodies)
      Sets an expectation that the given body values are received by this endpoint

      Important: The number of bodies must match the expected number of messages, so if you expect 3 messages, then there must be 3 bodies.

      Important: This overrides any previous set value using expectedMessageCount(int)

    • expectedBodyReceived

      public AssertionClause expectedBodyReceived()
      Adds an expectation that the given body value are received by this endpoint
    • expectedBodiesReceivedInAnyOrder

      public void expectedBodiesReceivedInAnyOrder(List<?> bodies)
      Adds an expectation that this endpoint receives the given body values in any order

      Important: The number of bodies must match the expected number of messages, so if you expect 3 messages, then there must be 3 bodies.

      Important: This overrides any previous set value using expectedMessageCount(int)

    • expectedBodiesReceivedInAnyOrder

      public void expectedBodiesReceivedInAnyOrder(Object... bodies)
      Adds an expectation that this endpoint receives the given body values in any order

      Important: The number of bodies must match the expected number of messages, so if you expect 3 messages, then there must be 3 bodies.

      Important: This overrides any previous set value using expectedMessageCount(int)

    • expectedFileExists

      public void expectedFileExists(Path name)
      Adds an expectation that a file exists with the given name
      Parameters:
      name - name of file, will cater for / and \ on different OS platforms
    • expectedFileExists

      public void expectedFileExists(String name)
      Adds an expectation that a file exists with the given name
      Parameters:
      name - name of file, will cater for / and \ on different OS platforms
    • expectedFileExists

      public void expectedFileExists(Path name, String content)
      Adds an expectation that a file exists with the given name

      Will wait at most 5 seconds while checking for the existence of the file.

      Parameters:
      name - name of file, will cater for / and \ on different OS platforms
      content - content of file to compare, can be null to not compare content
    • expectedFileExists

      public void expectedFileExists(String name, String content)
      Adds an expectation that a file exists with the given name

      Will wait at most 5 seconds while checking for the existence of the file.

      Parameters:
      name - name of file, will cater for / and \ on different OS platforms
      content - content of file to compare, can be null to not compare content
    • expectedExchangePattern

      public void expectedExchangePattern(org.apache.camel.ExchangePattern exchangePattern)
      Adds an expectation that messages received should have the given exchange pattern
    • expectsAscending

      public void expectsAscending(org.apache.camel.Expression expression)
      Adds an expectation that messages received should have ascending values of the given expression such as a user generated counter value
    • expectsAscending

      public AssertionClause expectsAscending()
      Adds an expectation that messages received should have ascending values of the given expression such as a user generated counter value
    • expectsDescending

      public void expectsDescending(org.apache.camel.Expression expression)
      Adds an expectation that messages received should have descending values of the given expression such as a user generated counter value
    • expectsDescending

      public AssertionClause expectsDescending()
      Adds an expectation that messages received should have descending values of the given expression such as a user generated counter value
    • expectsNoDuplicates

      public void expectsNoDuplicates(org.apache.camel.Expression expression)
      Adds an expectation that no duplicate messages should be received using the expression to determine the message ID
      Parameters:
      expression - the expression used to create a unique message ID for message comparison (which could just be the message payload if the payload can be tested for uniqueness using Object.equals(Object) and Object.hashCode()
    • expectsNoDuplicates

      public AssertionClause expectsNoDuplicates()
      Adds an expectation that no duplicate messages should be received using the expression to determine the message ID
    • assertMessagesAscending

      public void assertMessagesAscending(org.apache.camel.Expression expression)
      Asserts that the messages have ascending values of the given expression
    • assertMessagesDescending

      public void assertMessagesDescending(org.apache.camel.Expression expression)
      Asserts that the messages have descending values of the given expression
    • assertMessagesSorted

      protected void assertMessagesSorted(org.apache.camel.Expression expression, boolean ascending)
    • assertMessagesSorted

      protected void assertMessagesSorted(org.apache.camel.Expression expression, boolean ascending, int index)
    • assertNoDuplicates

      public void assertNoDuplicates(org.apache.camel.Expression expression)
      Asserts among all the current received exchanges that there are no duplicate message
      Parameters:
      expression - the expression to use for duplication check
    • expects

      public void expects(Runnable runnable)
      Adds the expectation which will be invoked when enough messages are received
    • message

      public AssertionClause message(int messageIndex)
      Adds an assertion to the given message index
      Parameters:
      messageIndex - the number of the message
      Returns:
      the assertion clause
    • allMessages

      public AssertionClause allMessages()
      Adds an assertion to all the received messages
      Returns:
      the assertion clause
    • assertExchangeReceived

      public org.apache.camel.Exchange assertExchangeReceived(int index)
      Asserts that the given index of message is received (starting at zero)
    • notifyBuilderOnExchange

      public void notifyBuilderOnExchange(org.apache.camel.Exchange exchange)
      Specified by:
      notifyBuilderOnExchange in interface org.apache.camel.spi.NotifyBuilderMatcher
    • notifyBuilderReset

      public void notifyBuilderReset()
      Specified by:
      notifyBuilderReset in interface org.apache.camel.spi.NotifyBuilderMatcher
    • notifyBuilderMatches

      public boolean notifyBuilderMatches()
      Specified by:
      notifyBuilderMatches in interface org.apache.camel.spi.NotifyBuilderMatcher
    • getName

      public String getName()
    • setName

      public void setName(String name)
    • getFailures

      public List<Throwable> getFailures()
    • getReceivedCounter

      public int getReceivedCounter()
    • getReceivedExchanges

      public List<org.apache.camel.Exchange> getReceivedExchanges()
    • getExpectedCount

      public int getExpectedCount()
    • getSleepForEmptyTest

      public long getSleepForEmptyTest()
    • setSleepForEmptyTest

      public void setSleepForEmptyTest(long sleepForEmptyTest)
      Allows a sleep to be specified to wait to check that this endpoint really is empty when expectedMessageCount(int) is called with zero
      Parameters:
      sleepForEmptyTest - the milliseconds to sleep for to determine that this endpoint really is empty
    • getResultWaitTime

      public long getResultWaitTime()
    • setResultWaitTime

      public void setResultWaitTime(long resultWaitTime)
      Sets the maximum amount of time (in millis) the assertIsSatisfied() will wait on a latch until it is satisfied
    • getResultMinimumWaitTime

      public long getResultMinimumWaitTime()
    • setResultMinimumWaitTime

      public void setResultMinimumWaitTime(long resultMinimumWaitTime)
      Sets the minimum expected amount of time (in millis) the assertIsSatisfied() will wait on a latch until it is satisfied
    • setExpectedCount

      public void setExpectedCount(int expectedCount)
      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 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 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 nth message arrives to this mock endpoint, then see also the setAssertPeriod(long) method for further details.

      Parameters:
      expectedCount - the number of message exchanges that should be expected by this endpoint
      See Also:
    • setExpectedMessageCount

      public void setExpectedMessageCount(int expectedCount)
      See Also:
    • setMinimumExpectedMessageCount

      public void setMinimumExpectedMessageCount(int expectedCount)
      Specifies the minimum number of expected message exchanges that should be received by this endpoint
      Parameters:
      expectedCount - the number of message exchanges that should be expected by this endpoint
    • getReporter

      public org.apache.camel.Processor getReporter()
    • setReporter

      public void setReporter(org.apache.camel.Processor reporter)
      Allows a processor to added to the endpoint to report on progress of the test
    • getRetainFirst

      public int getRetainFirst()
    • setRetainFirst

      public void setRetainFirst(int retainFirst)
      Specifies to only retain the first nth 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 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 getReceivedCounter() will still return 5000 but there is only the first 10 Exchanges in the getExchanges() and getReceivedExchanges() methods.

      When using this method, then some of the other expectation methods is not supported, for example the expectedBodiesReceived(Object...) sets a expectation on the first number of bodies received.

      You can configure both setRetainFirst(int) and setRetainLast(int) methods, to limit both the first and last received.

      Parameters:
      retainFirst - to limit and only keep the first n'th received Exchanges, use 0 to not retain any messages, or -1 to retain all.
      See Also:
    • getRetainLast

      public int getRetainLast()
    • setRetainLast

      public void setRetainLast(int retainLast)
      Specifies to only retain the last nth 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 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 getReceivedCounter() will still return 5000 but there is only the last 20 Exchanges in the getExchanges() and getReceivedExchanges() methods.

      When using this method, then some of the other expectation methods is not supported, for example the expectedBodiesReceived(Object...) sets a expectation on the first number of bodies received.

      You can configure both setRetainFirst(int) and setRetainLast(int) methods, to limit both the first and last received.

      Parameters:
      retainLast - to limit and only keep the last n'th received Exchanges, use 0 to not retain any messages, or -1 to retain all.
      See Also:
    • getReportGroup

      public int getReportGroup()
    • setReportGroup

      public void setReportGroup(int reportGroup)
      A number that is used to turn on throughput logging based on groups of the size.
    • isLog

      public boolean isLog()
    • setLog

      public void setLog(boolean log)
      To turn on logging when the mock receives an incoming message.

      This will log only one time at INFO level for the incoming message. For more detailed logging then set the logger to DEBUG level for the org.apache.camel.component.mock.MockEndpoint class.

    • isCopyOnExchange

      public boolean isCopyOnExchange()
    • setCopyOnExchange

      public void setCopyOnExchange(boolean copyOnExchange)
      Sets whether to make a deep copy of the incoming Exchange when received at this mock endpoint.

      Is by default true.

    • isFailFast

      public boolean isFailFast()
    • setFailFast

      public void setFailFast(boolean failFast)
      Sets whether assertIsSatisfied() should fail fast at the first detected failed expectation while it may otherwise wait for all expected messages to arrive before performing expectations verifications. Is by default true. Set to false to use behavior as in Camel 2.x.
    • getComponent

      public MockComponent getComponent()
      Specified by:
      getComponent in interface org.apache.camel.ComponentAware
      Overrides:
      getComponent in class org.apache.camel.support.DefaultEndpoint
    • onExchange

      protected void onExchange(org.apache.camel.Exchange exchange)
    • performAssertions

      protected void performAssertions(org.apache.camel.Exchange exchange, org.apache.camel.Exchange copy) throws Exception
      Performs the assertions on the incoming exchange.
      Parameters:
      exchange - the actual exchange
      copy - a copy of the exchange (only store this)
      Throws:
      Exception - can be thrown if something went wrong
    • addReceivedExchange

      protected void addReceivedExchange(org.apache.camel.Exchange copy)
      Adds the received exchange.
      Parameters:
      copy - a copy of the received exchange
    • waitForCompleteLatch

      protected void waitForCompleteLatch() throws InterruptedException
      Throws:
      InterruptedException
    • waitForCompleteLatch

      protected void waitForCompleteLatch(long timeout) throws InterruptedException
      Throws:
      InterruptedException
    • assertEquals

      protected void assertEquals(String message, int expectedValue, int actualValue)
    • assertEquals

      protected void assertEquals(String message, Object expectedValue, Object actualValue)
    • assertTrue

      protected void assertTrue(String message, boolean predicate)
      Asserts that the given predicate is true, if not an AssertionError is raised with the give message.
      Parameters:
      message - the message to use in case of a failure.
      predicate - the predicate allowing to determinate if it is a failure or not.
    • assertFalse

      protected void assertFalse(String message, boolean predicate)
      Asserts that the given predicate is false, if not an AssertionError is raised with the give message.
      Parameters:
      message - the message to use in case of a failure.
      predicate - the predicate allowing to determinate if it is a failure or not.
    • fail

      protected void fail(Object message)
    • getExpectedMinimumCount

      public int getExpectedMinimumCount()
    • await

      public void await() throws InterruptedException
      Throws:
      InterruptedException
    • await

      public boolean await(long timeout, TimeUnit unit) throws InterruptedException
      Throws:
      InterruptedException
    • isLenientProperties

      public boolean isLenientProperties()
      Specified by:
      isLenientProperties in interface org.apache.camel.Endpoint
      Overrides:
      isLenientProperties in class org.apache.camel.support.DefaultEndpoint