CAMEL-8201: NPE with language:ruby and concurrentConsumers - added unit test which is reproducing the issue
Project: http://git-wip-us.apache.org/repos/asf/camel/repo Commit: http://git-wip-us.apache.org/repos/asf/camel/commit/b1552656 Tree: http://git-wip-us.apache.org/repos/asf/camel/tree/b1552656 Diff: http://git-wip-us.apache.org/repos/asf/camel/diff/b1552656 Branch: refs/heads/master Commit: b1552656f52b33379773b2e26cf4df8a64790039 Parents: c02a759 Author: Christian Mueller <cmuel...@apache.org> Authored: Wed Dec 31 18:04:07 2014 +0100 Committer: Christian Mueller <cmuel...@apache.org> Committed: Wed Dec 31 18:04:41 2014 +0100 ---------------------------------------------------------------------- .../builder/script/RubyScriptTextTest.java | 71 ++++++++++++++++++++ 1 file changed, 71 insertions(+) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/camel/blob/b1552656/components/camel-script/src/test/java/org/apache/camel/builder/script/RubyScriptTextTest.java ---------------------------------------------------------------------- diff --git a/components/camel-script/src/test/java/org/apache/camel/builder/script/RubyScriptTextTest.java b/components/camel-script/src/test/java/org/apache/camel/builder/script/RubyScriptTextTest.java new file mode 100755 index 0000000..875f309 --- /dev/null +++ b/components/camel-script/src/test/java/org/apache/camel/builder/script/RubyScriptTextTest.java @@ -0,0 +1,71 @@ +package org.apache.camel.builder.script; + + +import java.util.HashSet; +import java.util.Set; +import java.util.concurrent.CountDownLatch; +import java.util.concurrent.TimeUnit; + +import org.junit.Assert; +import org.junit.Ignore; +import org.apache.camel.EndpointInject; +import org.apache.camel.Exchange; +import org.apache.camel.Processor; +import org.apache.camel.builder.RouteBuilder; +import org.apache.camel.component.mock.MockEndpoint; +import org.apache.camel.test.junit4.CamelTestSupport; +import org.junit.Test; + +public class RubyScriptTextTest extends CamelTestSupport { + + @EndpointInject(uri = "mock:result") + MockEndpoint resultEndpoint; + + final int messageCount = 500; + + @Test + public void parallelExecutionWithCachedScriptAndReusedScriptEngine() throws Exception { + context.addRoutes(new RouteBuilder() { + public void configure() throws Exception { + getContext().getProperties().put(Exchange.REUSE_SCRIPT_ENGINE, "true"); + //getContext().getProperties().put(Exchange.COMPILE_SCRIPT, "true"); + + from("seda:jruby?concurrentConsumers=5") + .to("language:ruby:puts $request.body;result = $request.body?cacheScript=true") + .to(resultEndpoint); + } + }); + + resultEndpoint.setExpectedMessageCount(messageCount); + resultEndpoint.assertNoDuplicates(body()); + + for (int i = 1; i < messageCount + 1; i++) { + template.sendBody("seda:jruby", "BODY" + i); + } + + assertMockEndpointsSatisfied(5, TimeUnit.SECONDS); + } + + @Test + @Ignore + public void parallelExecutionWithoutCachedScriptAndNewScriptEngineForEachExchange() throws Exception { + context.addRoutes(new RouteBuilder() { + public void configure() throws Exception { + //getContext().getProperties().put(Exchange.COMPILE_SCRIPT, "true"); + + from("seda:jruby?concurrentConsumers=5") + .to("language:ruby:puts $request.body;result = $request.body") + .to(resultEndpoint); + } + }); + + resultEndpoint.setExpectedMessageCount(messageCount); + resultEndpoint.assertNoDuplicates(body()); + + for (int i = 1; i < messageCount + 1; i++) { + template.sendBody("seda:jruby", "BODY" + i); + } + + assertMockEndpointsSatisfied(5, TimeUnit.SECONDS); + } +}