Hi,

I have created a unit test using camel-2.4 to send HTTP request to a
Jetty Server deployed on SMX4. It works fine when I create an HTTP
request from my browser but get the following error when running the
test

Tests run: 1, Failures: 0, Errors: 1, Skipped: 0, Time elapsed: 1.055
sec <<< FAILURE!
testHttpRouteWithMessageHeader(com.isightpartners.streaming.RouteTest)
 Time elapsed: 1.019 sec  <<< ERROR!
org.apache.camel.CamelExecutionException: Exception occurred during
execution on the exchange: Exchange[Message: [Body is instance of
java.io.InputStream]]
        at 
org.apache.camel.util.ObjectHelper.wrapCamelExecutionException(ObjectHelper.java:1149)
        at 
org.apache.camel.util.ExchangeHelper.extractResultBody(ExchangeHelper.java:452)
        at 
org.apache.camel.impl.DefaultProducerTemplate.extractResultBody(DefaultProducerTemplate.java:441)
        at 
org.apache.camel.impl.DefaultProducerTemplate.sendBodyAndHeader(DefaultProducerTemplate.java:169)
        at 
org.apache.camel.impl.DefaultProducerTemplate.requestBodyAndHeader(DefaultProducerTemplate.java:287)
        at 
com.isightpartners.streaming.RouteTest.testHttpClient(RouteTest.java:41)
        at 
com.isightpartners.streaming.RouteTest.testHttpRouteWithMessageHeader(RouteTest.java:31)

Caused by: org.apache.camel.component.http.HttpOperationFailedException:
HTTP operation failed invoking http://localhost:9090/upload) with
statusCode: 404
        at 
org.apache.camel.component.http.HttpProducer.populateHttpOperationFailedException(HttpProducer.java:157)
        at 
org.apache.camel.component.http.HttpProducer.process(HttpProducer.java:99)
        at 
org.apache.camel.impl.converter.AsyncProcessorTypeConverter$ProcessorToAsyncProcessorBridge.process(AsyncProcessorTypeConverter.java:50)
        at 
org.apache.camel.util.AsyncProcessorHelper.process(AsyncProcessorHelper.java:70)
        at 
org.apache.camel.processor.SendProcessor$2.doInAsyncProducer(SendProcessor.java:104)
        at 
org.apache.camel.impl.ProducerCache.doInAsyncProducer(ProducerCache.java:272)
        at 
org.apache.camel.processor.SendProcessor.process(SendProcessor.java:98)


Is it because the class used to stream the content has changed between
camel 2.4 and camel 2.5 ?

    private void testHttpClient(String uri) throws Exception {
        System.getProperties().put("HTTPClient.dontChunkRequests", "yes");

        MockEndpoint mockEndpoint = getMockEndpoint("mock:a");
        mockEndpoint.expectedBodiesReceived("<html><body>Book 123 is
Camel in Action</body></html>");

        template.requestBodyAndHeader(uri, new
ByteArrayInputStream("This is a test".getBytes()), "Content-Type",
"application/xml");

        mockEndpoint.assertIsSatisfied();
        List<Exchange> list = mockEndpoint.getReceivedExchanges();
        Exchange exchange = list.get(0);
        assertNotNull("exchange", exchange);

        Message in = exchange.getIn();
        assertNotNull("in", in);

        Map<String, Object> headers = in.getHeaders();

        log.info("Headers: " + headers);

        assertTrue("Should be more than one header but was: " +
headers, headers.size() > 0);

        // should get the Content-Length
        // assertNotNull("Should get the content-lenghth ",
headers.get("Content-Length"));
    }


    protected RouteBuilder createRouteBuilder() throws Exception {
        return new RouteBuilder() {
            public void configure() {

                errorHandler(noErrorHandler());

                from("direct:start")
                  .to("http://localhost:9090/upload)")
                     .convertBodyTo(String.class)
                        .to("mock:a");
            }
        };
    }

Regards,


Charles Moulliard

Sr. Principal Solution Architect - FuseSource
Apache Committer

Blog : http://cmoulliard.blogspot.com
Twitter : http://twitter.com/cmoulliard
Linkedin : http://www.linkedin.com/in/charlesmoulliard
Skype: cmoulliard

Reply via email to