3
votes

I configured a simple route inside a test class see below:

import org.apache.camel.builder.RouteBuilder;
import org.apache.camel.component.mock.MockEndpoint;
import org.apache.camel.test.junit4.CamelTestSupport;
import org.junit.Test;

public class TestClass extends CamelTestSupport {   
    String ftpSourceUri = "ftp://some.server.com:21?username=user&password=secret&fileName=test.csv";


    @Test
    public void testRouteConsumesTestFileFromFTPEndpoint() throws Exception{
        MockEndpoint mock = getMockEndpoint("mock:result");
        mock.expectedMinimumMessageCount(1);
        assertMockEndpointsSatisfied();
    }

    @Override
    protected RouteBuilder createRouteBuilder() throws Exception {
        return new RouteBuilder() {

            @Override
            public void configure() throws Exception {
                from(ftpSourceUri)
                .multicast().to("mock:result","stream:out");

            }
        };
    }
}

I have validated the authentication details and the file location via FileZilla.

This is the trace snippet produced by camel when I execute the above code:

[ main] DefaultCamelContext INFO Apache Camel 2.14.0 (CamelContext: camel-1) is starting [
main] DefaultManagementStrategy INFO JMX is disabled [
main] DefaultTypeConverter INFO Loaded 192 type converters [ main] DefaultCamelContext INFO AllowUseOriginalMessage is enabled. If access to the original message is not needed, then its recommended to turn this option off as it may improve performance. [ main] DefaultCamelContext INFO StreamCaching is not in use. If using streams then its recommended to enable stream caching. See more details at [ main] DefaultCamelContext
INFO Route: route1 started and consuming from: Endpoint['endpoint url'] <-- I can't post more than 2 links apparently [
main] DefaultCamelContext INFO Total 1 routes, of which 1 is started. [ main] DefaultCamelContext
INFO Apache Camel 2.14.0 (CamelContext: camel-1) started in 0.140 seconds [ main] MockEndpoint
INFO Asserting: Endpoint[mock://result] is satisfied [tal-music-ftp.amazonmp3.com:21] FtpConsumer INFO Connected and logged in to: ['endpoint url'] <-- I can't post more than 2 links apparently [ main] AmazonMP3SimpleFTPRouteTest INFO ******************************************************************************** [ main] AmazonMP3SimpleFTPRouteTest INFO Testing done: testRouteConsumesTestFileFromFTPEndpoint(com.test.camel.SimpleFTPRouteTest) [ main] AmazonMP3SimpleFTPRouteTest INFO Took: 10.010 seconds (10010 millis) [ main] AmazonMP3SimpleFTPRouteTest INFO ******************************************************************************** [ main] DefaultCamelContext INFO Apache Camel 2.14.0 (CamelContext: camel-1) is shutting down [
main] DefaultShutdownStrategy INFO Starting to graceful shutdown 1 routes (timeout 10 seconds) [el-1) thread #1 - ShutdownTask] DefaultShutdownStrategy INFO Waiting as there are still 1 inflight and pending exchanges to complete, timeout in 10 seconds. [el-1) thread #1 - ShutdownTask] DefaultShutdownStrategy
INFO Waiting as there are still 1 inflight and pending exchanges to complete, timeout in 9 seconds. [el-1) thread #1 - ShutdownTask] DefaultShutdownStrategy INFO Waiting as there are still 1 inflight and pending exchanges to complete, timeout in 8 seconds. [el-1) thread #1 - ShutdownTask] DefaultShutdownStrategy INFO Waiting as there are still 1 inflight and pending exchanges to complete, timeout in 7 seconds. [el-1) thread #1 - ShutdownTask] DefaultShutdownStrategy INFO Waiting as there are still 1 inflight and pending exchanges to complete, timeout in 6 seconds. [el-1) thread #1 - ShutdownTask] DefaultShutdownStrategy INFO Waiting as there are still 1 inflight and pending exchanges to complete, timeout in 5 seconds. [el-1) thread #1 - ShutdownTask] DefaultShutdownStrategy INFO Waiting as there are still 1 inflight and pending exchanges to complete, timeout in 4 seconds. [el-1) thread #1 - ShutdownTask] DefaultShutdownStrategy INFO Waiting as there are still 1 inflight and pending exchanges to complete, timeout in 3 seconds. [el-1) thread #1 - ShutdownTask] DefaultShutdownStrategy INFO Waiting as there are still 1 inflight and pending exchanges to complete, timeout in 2 seconds. [el-1) thread #1 - ShutdownTask] DefaultShutdownStrategy INFO Waiting as there are still 1 inflight and pending exchanges to complete, timeout in 1 seconds. [ main] DefaultShutdownStrategy WARN Timeout occurred. Forcing the routes to be shutdown now. Some resources may still be running. [el-1) thread #1 - ShutdownTask] DefaultShutdownStrategy WARN Interrupted while waiting during graceful shutdown, will force shutdown now. [el-1) thread #1 - ShutdownTask] DefaultShutdownStrategy INFO Route: route1 shutdown complete, was consuming from: Endpoint['endpoint url'] <-- I can't post more than 2 links apparently [ main] DefaultShutdownStrategy INFO Graceful shutdown of 1 routes completed in 52 seconds [
main] DefaultCamelContext INFO Apache Camel 2.14.0 (CamelContext: camel-1) uptime 1 minute [
main] DefaultCamelContext INFO Apache Camel 2.14.0 (CamelContext: camel-1) is shutdown in 52.486 seconds

What can I do to simply download the file?

1
camel-ftp 2.14.0Eric Ekong

1 Answers

5
votes

The MockEndpoint will by default timeout after 10 seconds from unit testing. So you need to set a higher wait time for the FTP to download and process the file.

You can pass in a timeout value in, for example

assertMockEndpointsSatisfied(5, TimeUnit.MINUTES);