Skip to content

Commit

Permalink
CAMEL-628. Added unit test that can be used for wiki documentation. I…
Browse files Browse the repository at this point in the history
…nspired by request by user forum. Added disable/enable JMX to the ContextTestSupport.

git-svn-id: https://svn.apache.org/repos/asf/activemq/camel/trunk@670453 13f79535-47bb-0310-9956-ffa450edef68
  • Loading branch information
davsclaus committed Jun 23, 2008
1 parent d49f2bb commit 519d809
Show file tree
Hide file tree
Showing 4 changed files with 136 additions and 0 deletions.
16 changes: 16 additions & 0 deletions camel-core/src/test/java/org/apache/camel/ContextTestSupport.java
Expand Up @@ -27,6 +27,7 @@
import org.apache.camel.spi.Language;
import org.apache.camel.util.CamelContextHelper;
import org.apache.camel.util.jndi.JndiTest;
import org.apache.camel.management.JmxSystemPropertyKeys;

/**
* A useful base class which creates a {@link CamelContext} with some routes
Expand Down Expand Up @@ -273,4 +274,19 @@ protected Endpoint getMandatoryEndpoint(String uri) {
assertNotNull("No endpoint found for uri: " + uri, endpoint);
return endpoint;
}

/**
* Disables the JMX agent. Must be called before the {@link #setUp()} method.
*/
protected void disableJMX() {
System.setProperty(JmxSystemPropertyKeys.DISABLED, "true");
}

/**
* Enables the JMX agent. Must be called before the {@link #setUp()} method.
*/
protected void enableJMX() {
System.setProperty(JmxSystemPropertyKeys.DISABLED, "false");
}

}
6 changes: 6 additions & 0 deletions components/camel-jetty/pom.xml
Expand Up @@ -82,11 +82,17 @@
<optional>true</optional>
<scope>test</scope>
</dependency>

<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<scope>test</scope>
</dependency>
</dependencies>

</project>
@@ -0,0 +1,79 @@
/**
* 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.ContextTestSupport;
import org.apache.camel.Exchange;
import org.apache.camel.ExchangePattern;
import org.apache.camel.Processor;
import org.apache.camel.builder.RouteBuilder;
import org.apache.camel.component.file.FileComponent;
import org.apache.camel.converter.IOConverter;

/**
* Unit testing demonstrating how to store incomming requests as files and serving a reponse back.
*/
public class HttpToFileTest extends ContextTestSupport {

public void testToJettyAndSaveToFile() throws Exception {
Object out = template.sendBody("http://localhost:8080/myworld", "Hello World");

String response = context.getTypeConverter().convertTo(String.class, out);
assertEquals("Response from Jetty", "We got the file", response);

// give file some time to save
Thread.sleep(1000);

File file = new File("./target/myworld/hello.txt");
file = file.getAbsoluteFile();
assertTrue("File should exists", file.exists());

String content = IOConverter.toString(file);
assertEquals("File conent", "Hello World", content);
}

@Override
protected void setUp() throws Exception {
disableJMX();
super.setUp();
}

protected RouteBuilder createRouteBuilder() throws Exception {
return new RouteBuilder() {
public void configure() throws Exception {
// put the incoming data on the seda queue and return a fixed response that we got the file
from("jetty:http://localhost:8080/myworld").to("seda:in").setBody(constant("We got the file"));

// store the content from the queue as a file
from("seda:in").process(new MyJettyProcessor())
.setHeader(FileComponent.HEADER_FILE_NAME, "hello.txt")
.to("file://target/myworld?append=false");
}
};
}

private class MyJettyProcessor implements Processor {
public void process(Exchange exchange) throws Exception {
// must convert to in only as file producer will try to load the file if the exchange pattern
// is out capable.
exchange.setPattern(ExchangePattern.InOnly);
}
}

}
35 changes: 35 additions & 0 deletions components/camel-jetty/src/test/resources/log4j.properties
@@ -0,0 +1,35 @@
## ---------------------------------------------------------------------------
## 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.
## ---------------------------------------------------------------------------

#
# The logging properties used during tests..
#
log4j.rootLogger=INFO, file

# CONSOLE appender not used by default
log4j.appender.console=org.apache.log4j.ConsoleAppender
log4j.appender.console.layout=org.apache.log4j.PatternLayout
log4j.appender.console.layout.ConversionPattern=%d %-5p %c{1} - %m %n

# File appender
log4j.appender.file=org.apache.log4j.FileAppender
log4j.appender.file.layout=org.apache.log4j.PatternLayout
log4j.appender.file.layout.ConversionPattern=%d %-5p %c{1} - %m %n
log4j.appender.file.file=target/camel-jetty-test.log

# debug loging for Camel
log4j.logger.org.apache.camel.component.jetty=DEBUG

0 comments on commit 519d809

Please sign in to comment.