Class MockEndpoint

  • All Implemented Interfaces:
    AutoCloseable, org.apache.camel.CamelContextAware, 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.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,
                 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 reporter  
      • 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()  
      MockEndpoint​(String endpointUri, org.apache.camel.Component component)  
    • Method Summary

      All Methods Static Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      protected void addReceivedExchange​(org.apache.camel.Exchange copy)
      Adds the received exchange.
      AssertionClause allMessages()
      Adds an assertion to all the received messages
      protected void assertEquals​(String message, Object expectedValue, Object actualValue)  
      org.apache.camel.Exchange assertExchangeReceived​(int index)
      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 assertIsNotSatisfied()
      Validates that the assertions fail on this endpoint
      void assertIsNotSatisfied​(long timeoutForEmptyEndpoints)
      Validates that the assertions fail on this endpoint
      void assertIsSatisfied()
      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 assertIsSatisfied​(MockEndpoint... endpoints)  
      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 await()  
      boolean await​(long timeout, TimeUnit unit)  
      org.apache.camel.Consumer createConsumer​(org.apache.camel.Processor processor)  
      org.apache.camel.Producer createProducer()  
      protected void doAssertIsSatisfied​(long timeoutForEmptyEndpoints)  
      void expectedBodiesReceived​(Object... bodies)
      Sets an expectation that the given body values are received by this endpoint
      void expectedBodiesReceived​(List<?> bodies)
      Adds an expectation that the given body values are received by this endpoint in the specified order
      void expectedBodiesReceivedInAnyOrder​(Object... bodies)
      Adds an expectation that the given body values are received by this endpoint in any order
      void expectedBodiesReceivedInAnyOrder​(List<?> bodies)
      Adds an expectation that the given body values are received by this endpoint in any order
      AssertionClause expectedBodyReceived()
      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 expectedFileExists​(String name)
      Adds an expectation that a file exists with the given name
      void expectedFileExists​(String name, String content)
      Adds an expectation that a file exists with the given name
      void expectedFileExists​(Path name)
      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 expectedHeaderReceived​(String name, Object value)
      Sets an expectation that the given header name & value are received by this endpoint
      void expectedHeaderValuesReceivedInAnyOrder​(String name, Object... values)
      Adds an expectation that the given header values are received by this endpoint in any order
      void expectedHeaderValuesReceivedInAnyOrder​(String name, List<?> values)
      Adds an expectation that the given header values are received by this endpoint 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 expectedNoHeaderReceived()
      Sets an expectation that the messages received by this endpoint have no header
      void expectedPropertyReceived​(String name, Object value)
      Sets an expectation that the given property name & value are received by this endpoint
      void expectedPropertyValuesReceivedInAnyOrder​(String name, Object... values)
      Adds an expectation that the given property values are received by this endpoint in any order
      void expectedPropertyValuesReceivedInAnyOrder​(String name, List<?> values)
      Adds an expectation that the given property values are received by this endpoint in any order.
      void expects​(Runnable runnable)
      Adds the expectation which will be invoked when enough messages are received
      AssertionClause expectsAscending()
      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
      AssertionClause expectsDescending()
      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)  
      AssertionClause expectsNoDuplicates()
      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 getAssertPeriod()  
      MockComponent getComponent()  
      List<org.apache.camel.Exchange> getExchanges()  
      int getExpectedCount()  
      int getExpectedMinimumCount()  
      List<Throwable> getFailures()  
      String getName()  
      int getReceivedCounter()  
      List<org.apache.camel.Exchange> getReceivedExchanges()  
      org.apache.camel.Processor getReporter()  
      int getReportGroup()  
      long getResultMinimumWaitTime()  
      long getResultWaitTime()  
      int getRetainFirst()  
      int getRetainLast()  
      long getSleepForEmptyTest()  
      void handle​(org.apache.camel.Exchange exchange)
      Handles the incoming exchange.
      boolean isCopyOnExchange()  
      boolean isFailFast()  
      boolean isLenientProperties()  
      boolean isLog()  
      AssertionClause message​(int messageIndex)
      Adds an assertion to the given message index
      boolean notifyBuilderMatches()  
      void notifyBuilderOnExchange​(org.apache.camel.Exchange exchange)  
      void notifyBuilderReset()  
      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 reset()  
      static void resetMocks​(org.apache.camel.CamelContext context)
      Reset all mock endpoints
      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
      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 setName​(String name)  
      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 n'th number of received Exchanges.
      void setRetainLast​(int retainLast)
      Specifies to only retain the last n'th 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 waitForCompleteLatch()  
      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, doStart, doStop, 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, 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 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 Detail

      • reporter

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

      • MockEndpoint

        public MockEndpoint()
      • MockEndpoint

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

      • 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
      • 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
      • 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:
        setAssertPeriod(long)
      • 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 & 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 the given header values are received by this endpoint 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 the given header values are received by this endpoint 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 & 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 the given property values are received by this endpoint 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 the given property values are received by this endpoint 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 the given body values are received by this endpoint 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 the given body values are received by this endpoint 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 the given body values are received by this endpoint 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)
      • 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 n'th 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:
        setAssertPeriod(long)
      • setExpectedMessageCount

        public void setExpectedMessageCount​(int expectedCount)
        See Also:
        setExpectedCount(int)
      • 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 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 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:
        setRetainLast(int)
      • getRetainLast

        public int getRetainLast()
      • setRetainLast

        public void setRetainLast​(int retainLast)
        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 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:
        setRetainFirst(int)
      • 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()
        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
      • 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()
      • isLenientProperties

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