-
Notifications
You must be signed in to change notification settings - Fork 5
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Arsen A. Gutsal
committed
Feb 7, 2014
1 parent
f30ea69
commit cf6b746
Showing
2 changed files
with
217 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,110 @@ | ||
package gnutch | ||
|
||
import static org.junit.Assert.* | ||
import org.junit.* | ||
|
||
import org.apache.camel.CamelContext | ||
import org.apache.camel.Exchange | ||
import org.apache.camel.component.mock.MockEndpoint | ||
import org.apache.camel.ProducerTemplate | ||
import org.apache.camel.builder.AdviceWithRouteBuilder | ||
import org.apache.camel.test.junit4.CamelTestSupport | ||
import org.apache.camel.processor.interceptor.Tracer | ||
import org.apache.camel.processor.interceptor.DefaultTraceFormatter | ||
import org.apache.camel.LoggingLevel | ||
import org.apache.xpath.XPathAPI | ||
|
||
import org.springframework.test.annotation.DirtiesContext | ||
|
||
import javax.management.ObjectName | ||
import javax.management.remote.JMXConnectorFactory | ||
import javax.management.remote.JMXServiceURL | ||
|
||
import org.codehaus.groovy.grails.commons.ApplicationHolder | ||
import java.util.concurrent.TimeUnit | ||
|
||
import org.codehaus.groovy.grails.io.support.ClassPathResource | ||
|
||
import org.eclipse.jetty.server.Handler; | ||
import org.eclipse.jetty.server.Server; | ||
import org.eclipse.jetty.server.handler.DefaultHandler; | ||
import org.eclipse.jetty.server.handler.HandlerList; | ||
import org.eclipse.jetty.server.handler.ResourceHandler; | ||
|
||
class RouteFullCycleTests extends CamelTestSupport { | ||
|
||
def grailsApplication | ||
|
||
ProducerTemplate producerTemplate; | ||
CamelContext camelContext | ||
|
||
def jmsConnectionFactory | ||
|
||
private Server server // jetty server | ||
|
||
protected CamelContext createCamelContext() throws Exception { | ||
return camelContext | ||
} | ||
|
||
@Before | ||
void setUp(){ | ||
super.setUp() | ||
camelContext.start() // starting camel ourselves | ||
|
||
camelContext.shutdownStrategy.timeout = 60 // setting shutdown timeout to 1 minute (60 seconds) | ||
|
||
// Running embedded Jetty server to crawl from. Application sits in test/integation/resources/web-app | ||
server = new Server(8080); | ||
ResourceHandler resource_handler = new ResourceHandler(); | ||
resource_handler.directoriesListed = true; | ||
resource_handler.welcomeFiles = ["index.html"]; | ||
|
||
resource_handler.resourceBase = "test/integration/resources/web-app"; | ||
|
||
HandlerList handlers = new HandlerList(); | ||
handlers.handlers = [resource_handler, new DefaultHandler()]; | ||
server.handler = handlers; | ||
server.start(); | ||
} | ||
|
||
@After | ||
void tearDown(){ | ||
camelContext.stop() // stopping camel ourselves and after stop wiping out activemq queue | ||
|
||
server.stop(); | ||
|
||
super.tearDown() | ||
} | ||
|
||
@Test | ||
@DirtiesContext | ||
void testFullCycle() { | ||
camelContext. | ||
getRouteDefinition('aggregation'). | ||
adviceWith(camelContext, | ||
new AdviceWithRouteBuilder() { | ||
@Override | ||
public void configure() throws Exception { | ||
mockEndpointsAndSkip("direct:publish") | ||
} | ||
}); | ||
def mockEndpoint = getMockEndpoint("mock:direct:publish") | ||
|
||
mockEndpoint.expectedMessageCount(1) | ||
def expectation = {-> | ||
def ex = receivedExchanges[0] | ||
assert ex.in.body.documentElement.nodeName == 'add' | ||
assert ex.in.body.getElementsByTagName('doc').length > 0 | ||
|
||
} as Runnable | ||
expectation.delegate = mockEndpoint | ||
mockEndpoint.expects(expectation) | ||
|
||
// saving file | ||
def resourceStream = new ClassPathResource('xslt/localhost.xsl').inputStream | ||
def destFile = new File(grailsApplication.config.gnutch.inputRoute.replace('file://', '') + '/localhost.xsl') | ||
destFile.append(resourceStream) | ||
|
||
assertMockEndpointsSatisfied(15, TimeUnit.SECONDS) | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,107 @@ | ||
package gnutch | ||
|
||
import static org.junit.Assert.* | ||
import org.junit.* | ||
|
||
import org.apache.camel.CamelContext | ||
import org.apache.camel.Exchange | ||
import org.apache.camel.component.mock.MockEndpoint | ||
import org.apache.camel.ProducerTemplate | ||
import org.apache.camel.builder.AdviceWithRouteBuilder | ||
import org.apache.camel.test.junit4.CamelTestSupport | ||
import org.apache.camel.LoggingLevel | ||
import org.apache.xpath.XPathAPI | ||
|
||
import org.springframework.test.annotation.DirtiesContext | ||
|
||
import javax.management.ObjectName | ||
import javax.management.remote.JMXConnectorFactory | ||
import javax.management.remote.JMXServiceURL | ||
|
||
import org.codehaus.groovy.grails.commons.ApplicationHolder | ||
import java.util.concurrent.TimeUnit | ||
|
||
import org.codehaus.groovy.grails.io.support.ClassPathResource | ||
|
||
import org.eclipse.jetty.server.Handler; | ||
import org.eclipse.jetty.server.Server; | ||
import org.eclipse.jetty.server.handler.DefaultHandler; | ||
import org.eclipse.jetty.server.handler.HandlerList; | ||
import org.eclipse.jetty.server.handler.ResourceHandler; | ||
|
||
class RouteStressTests extends CamelTestSupport { | ||
def grailsApplication | ||
|
||
ProducerTemplate producerTemplate; | ||
CamelContext camelContext | ||
|
||
def jmsConnectionFactory | ||
|
||
private Server server // jetty server | ||
|
||
protected CamelContext createCamelContext() throws Exception { | ||
return camelContext | ||
} | ||
|
||
@Before | ||
void setUp(){ | ||
super.setUp() | ||
camelContext.start() // starting camel ourselves | ||
|
||
camelContext.shutdownStrategy.timeout = 60 // setting shutdown timeout to 1 minute (60 seconds) | ||
|
||
// Running embedded Jetty server to crawl from. Application sits in test/integation/resources/web-app | ||
server = new Server(8080); | ||
ResourceHandler resource_handler = new ResourceHandler(); | ||
resource_handler.directoriesListed = true; | ||
resource_handler.welcomeFiles = ["index.html"]; | ||
|
||
resource_handler.resourceBase = "test/integration/resources/web-app"; | ||
|
||
HandlerList handlers = new HandlerList(); | ||
handlers.handlers = [resource_handler, new DefaultHandler()]; | ||
server.handler = handlers; | ||
server.start(); | ||
} | ||
|
||
@After | ||
void tearDown(){ | ||
camelContext.stop() // stopping camel ourselves and after stop wiping out activemq queue | ||
|
||
server.stop(); | ||
|
||
super.tearDown(); | ||
} | ||
|
||
@Test | ||
void testStress() { | ||
camelContext. | ||
getRouteDefinition('aggregation'). | ||
adviceWith(camelContext, | ||
new AdviceWithRouteBuilder() { | ||
@Override | ||
public void configure() throws Exception { | ||
mockEndpointsAndSkip("direct:publish") | ||
} | ||
}); | ||
def xsltDir = new ClassPathResource('xslt').file | ||
xsltDir.eachFile { file -> | ||
def destFile = new File(grailsApplication.config.gnutch.inputRoute.replace('file://', '') + '/' + file.name) | ||
destFile.append(file.newInputStream()) | ||
} | ||
|
||
def mockEndpoint = getMockEndpoint("mock:direct:publish") | ||
|
||
mockEndpoint.expectedMinimumMessageCount(1) // expecting some messages | ||
def expectation = {-> | ||
def ex = receivedExchanges[0] | ||
assert ex.in.body.documentElement.nodeName == 'add' | ||
assert ex.in.body.getElementsByTagName('doc').length > 0 | ||
println "Commit happened" | ||
} as Runnable | ||
expectation.delegate = mockEndpoint | ||
mockEndpoint.expects(expectation) | ||
|
||
assertMockEndpointsSatisfied(15, TimeUnit.SECONDS) // let this test work for 15 seconds | ||
} | ||
} |