Author: davsclaus Date: Wed Apr 6 08:26:11 2011 New Revision: 1089348 URL: http://svn.apache.org/viewvc?rev=1089348&view=rev Log: CAMEL-3838: Added unit test.
Added: camel/trunk/components/camel-jetty/src/test/java/org/apache/camel/component/jetty/HttpStreamCacheFileIssueTest.java camel/trunk/components/camel-jetty/src/test/java/org/apache/camel/component/jetty/HttpStreamCacheFileStopIssueTest.java - copied, changed from r1088914, camel/trunk/components/camel-jetty/src/test/java/org/apache/camel/component/jetty/HttpStreamCacheFileTest.java Modified: camel/trunk/components/camel-jetty/src/test/java/org/apache/camel/component/jetty/HttpStreamCacheFileTest.java Added: camel/trunk/components/camel-jetty/src/test/java/org/apache/camel/component/jetty/HttpStreamCacheFileIssueTest.java URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-jetty/src/test/java/org/apache/camel/component/jetty/HttpStreamCacheFileIssueTest.java?rev=1089348&view=auto ============================================================================== --- camel/trunk/components/camel-jetty/src/test/java/org/apache/camel/component/jetty/HttpStreamCacheFileIssueTest.java (added) +++ camel/trunk/components/camel-jetty/src/test/java/org/apache/camel/component/jetty/HttpStreamCacheFileIssueTest.java Wed Apr 6 08:26:11 2011 @@ -0,0 +1,90 @@ +/** + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.apache.camel.component.jetty; + +import java.io.File; + +import org.apache.camel.Exchange; +import org.apache.camel.Processor; +import org.apache.camel.builder.RouteBuilder; +import org.apache.camel.converter.stream.CachedOutputStream; +import org.junit.Before; +import org.junit.Test; + +/** + * @version + */ +public class HttpStreamCacheFileIssueTest extends BaseJettyTest { + + private String body = "12345678901234567890123456789012345678901234567890"; + + @Override + @Before + public void setUp() throws Exception { + deleteDirectory("./target/cachedir"); + createDirectory("./target/cachedir"); + super.setUp(); + } + + @Test + public void testStreamCacheToFileShouldBeDeletedInCaseOfStop() throws Exception { + getMockEndpoint("mock:result").expectedMessageCount(1); + + String out = template.requestBody("direct:start", "Hello World", String.class); + assertEquals(body, out); + + // the temporary files should have been deleted + File file = new File("./target/cachedir"); + String[] files = file.list(); + assertEquals("There should be no files", 0, files.length); + + assertMockEndpointsSatisfied(); + } + + @Override + protected RouteBuilder createRouteBuilder() throws Exception { + return new RouteBuilder() { + @Override + public void configure() throws Exception { + // enable stream caching and use a low threshold so its forced to write to file + context.getProperties().put(CachedOutputStream.TEMP_DIR, "./target/cachedir"); + context.getProperties().put(CachedOutputStream.THRESHOLD, "16"); + context.setStreamCaching(true); + + // use a route so we got an unit of work + from("direct:start") + .to("http://localhost:{{port}}/myserver") + .process(new Processor() { + public void process(Exchange exchange) throws Exception { + // there should be a temp cache file + File file = new File("./target/cachedir"); + String[] files = file.list(); + assertTrue("There should be a temp cache file", files.length > 0); + } + }) + // TODO: CAMEL-3839: need to convert the body to a String as the tmp file will be deleted + // before the producer template can convert the result back + .convertBodyTo(String.class) + .to("mock:result"); + + from("jetty://http://localhost:{{port}}/myserver") + .transform().constant(body); + } + }; + } + +} Copied: camel/trunk/components/camel-jetty/src/test/java/org/apache/camel/component/jetty/HttpStreamCacheFileStopIssueTest.java (from r1088914, camel/trunk/components/camel-jetty/src/test/java/org/apache/camel/component/jetty/HttpStreamCacheFileTest.java) URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-jetty/src/test/java/org/apache/camel/component/jetty/HttpStreamCacheFileStopIssueTest.java?p2=camel/trunk/components/camel-jetty/src/test/java/org/apache/camel/component/jetty/HttpStreamCacheFileStopIssueTest.java&p1=camel/trunk/components/camel-jetty/src/test/java/org/apache/camel/component/jetty/HttpStreamCacheFileTest.java&r1=1088914&r2=1089348&rev=1089348&view=diff ============================================================================== --- camel/trunk/components/camel-jetty/src/test/java/org/apache/camel/component/jetty/HttpStreamCacheFileTest.java (original) +++ camel/trunk/components/camel-jetty/src/test/java/org/apache/camel/component/jetty/HttpStreamCacheFileStopIssueTest.java Wed Apr 6 08:26:11 2011 @@ -18,19 +18,17 @@ package org.apache.camel.component.jetty import java.io.File; -import org.apache.camel.CamelExecutionException; import org.apache.camel.Exchange; import org.apache.camel.Processor; import org.apache.camel.builder.RouteBuilder; -import org.apache.camel.component.http.HttpOperationFailedException; import org.apache.camel.converter.stream.CachedOutputStream; import org.junit.Before; import org.junit.Test; /** - * @version + * @version */ -public class HttpStreamCacheFileTest extends BaseJettyTest { +public class HttpStreamCacheFileStopIssueTest extends BaseJettyTest { private String body = "12345678901234567890123456789012345678901234567890"; @@ -43,37 +41,18 @@ public class HttpStreamCacheFileTest ext } @Test - public void testStreamCacheToFileShouldBeDeletedInCaseOfResponse() throws Exception { - String out = template.requestBody("direct:start", "Hello World", String.class); - assertEquals("Bye World", out); + public void testStreamCacheToFileShouldBeDeletedInCaseOfStop() throws Exception { + getMockEndpoint("mock:result").expectedMessageCount(0); - // give time for files to be deleted etc. - Thread.sleep(2000); + String out = template.requestBody("direct:start", "Hello World", String.class); + assertEquals(body, out); // the temporary files should have been deleted File file = new File("./target/cachedir"); String[] files = file.list(); assertEquals("There should be no files", 0, files.length); - } - - @Test - public void testStreamCacheToFileShouldBeDeletedInCaseOfException() throws Exception { - try { - template.requestBody("direct:start", null, String.class); - fail("Should have thrown an exception"); - } catch (CamelExecutionException e) { - HttpOperationFailedException hofe = assertIsInstanceOf(HttpOperationFailedException.class, e.getCause()); - String s = context.getTypeConverter().convertTo(String.class, hofe.getResponseBody()); - assertEquals("Response body", body, s); - } - // give time for files to be deleted etc. - Thread.sleep(2000); - - // the temporary files should have been deleted - File file = new File("./target/cachedir"); - String[] files = file.list(); - assertEquals("There should be no files", 0, files.length); + assertMockEndpointsSatisfied(); } @Override @@ -87,19 +66,25 @@ public class HttpStreamCacheFileTest ext context.setStreamCaching(true); // use a route so we got an unit of work - from("direct:start").to("http://localhost:{{port}}/myserver"); + from("direct:start") + .to("http://localhost:{{port}}/myserver") + .process(new Processor() { + public void process(Exchange exchange) throws Exception { + // there should be a temp cache file + File file = new File("./target/cachedir"); + String[] files = file.list(); + assertTrue("There should be a temp cache file", files.length > 0); + } + }) + // TODO: CAMEL-3839: need to convert the body to a String as the tmp file will be deleted + // before the producer template can convert the result back + .convertBodyTo(String.class) + // mark the exchange to stop continue routing + .stop() + .to("mock:result"); from("jetty://http://localhost:{{port}}/myserver") - .process(new Processor() { - public void process(Exchange exchange) throws Exception { - if (exchange.getIn().getBody() == null) { - exchange.getOut().setBody("12345678901234567890123456789012345678901234567890"); - exchange.getOut().setHeader(Exchange.HTTP_RESPONSE_CODE, 500); - } else { - exchange.getOut().setBody("Bye World"); - } - } - }); + .transform().constant(body); } }; } Modified: camel/trunk/components/camel-jetty/src/test/java/org/apache/camel/component/jetty/HttpStreamCacheFileTest.java URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-jetty/src/test/java/org/apache/camel/component/jetty/HttpStreamCacheFileTest.java?rev=1089348&r1=1089347&r2=1089348&view=diff ============================================================================== --- camel/trunk/components/camel-jetty/src/test/java/org/apache/camel/component/jetty/HttpStreamCacheFileTest.java (original) +++ camel/trunk/components/camel-jetty/src/test/java/org/apache/camel/component/jetty/HttpStreamCacheFileTest.java Wed Apr 6 08:26:11 2011 @@ -47,9 +47,6 @@ public class HttpStreamCacheFileTest ext String out = template.requestBody("direct:start", "Hello World", String.class); assertEquals("Bye World", out); - // give time for files to be deleted etc. - Thread.sleep(2000); - // the temporary files should have been deleted File file = new File("./target/cachedir"); String[] files = file.list(); @@ -67,9 +64,6 @@ public class HttpStreamCacheFileTest ext assertEquals("Response body", body, s); } - // give time for files to be deleted etc. - Thread.sleep(2000); - // the temporary files should have been deleted File file = new File("./target/cachedir"); String[] files = file.list(); @@ -93,7 +87,7 @@ public class HttpStreamCacheFileTest ext .process(new Processor() { public void process(Exchange exchange) throws Exception { if (exchange.getIn().getBody() == null) { - exchange.getOut().setBody("12345678901234567890123456789012345678901234567890"); + exchange.getOut().setBody(body); exchange.getOut().setHeader(Exchange.HTTP_RESPONSE_CODE, 500); } else { exchange.getOut().setBody("Bye World");