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");