You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by ac...@apache.org on 2016/09/15 07:25:40 UTC
[4/4] camel git commit: CAMEL-10303 - Added
MllpTcpServerConsumerTransactionTest
CAMEL-10303 - Added MllpTcpServerConsumerTransactionTest
Project: http://git-wip-us.apache.org/repos/asf/camel/repo
Commit: http://git-wip-us.apache.org/repos/asf/camel/commit/404fae80
Tree: http://git-wip-us.apache.org/repos/asf/camel/tree/404fae80
Diff: http://git-wip-us.apache.org/repos/asf/camel/diff/404fae80
Branch: refs/heads/master
Commit: 404fae80bebc1ffcafdce96bee04f6d20749f16f
Parents: 53074f5
Author: Quinn Stevenson <qu...@pronoia-solutions.com>
Authored: Wed Sep 14 09:39:38 2016 -0600
Committer: Andrea Cosentino <an...@gmail.com>
Committed: Thu Sep 15 09:23:23 2016 +0200
----------------------------------------------------------------------
components/camel-mllp/pom.xml | 16 +++
.../MllpTcpServerConsumerTransactionTest.java | 144 +++++++++++++++++++
2 files changed, 160 insertions(+)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/camel/blob/404fae80/components/camel-mllp/pom.xml
----------------------------------------------------------------------
diff --git a/components/camel-mllp/pom.xml b/components/camel-mllp/pom.xml
index 1e28332..7dc91ee 100644
--- a/components/camel-mllp/pom.xml
+++ b/components/camel-mllp/pom.xml
@@ -58,6 +58,22 @@
<artifactId>camel-test-blueprint</artifactId>
<scope>test</scope>
</dependency>
+ <dependency>
+ <groupId>org.apache.camel</groupId>
+ <artifactId>camel-sjms</artifactId>
+ <scope>test</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.activemq</groupId>
+ <artifactId>activemq-broker</artifactId>
+ <scope>test</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.activemq.tooling</groupId>
+ <artifactId>activemq-junit</artifactId>
+ <version>${activemq-version}</version>
+ <scope>test</scope>
+ </dependency>
<!-- test logging -->
<dependency>
http://git-wip-us.apache.org/repos/asf/camel/blob/404fae80/components/camel-mllp/src/test/java/org/apache/camel/component/mllp/MllpTcpServerConsumerTransactionTest.java
----------------------------------------------------------------------
diff --git a/components/camel-mllp/src/test/java/org/apache/camel/component/mllp/MllpTcpServerConsumerTransactionTest.java b/components/camel-mllp/src/test/java/org/apache/camel/component/mllp/MllpTcpServerConsumerTransactionTest.java
new file mode 100644
index 0000000..a343564
--- /dev/null
+++ b/components/camel-mllp/src/test/java/org/apache/camel/component/mllp/MllpTcpServerConsumerTransactionTest.java
@@ -0,0 +1,144 @@
+/**
+ * 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.mllp;
+
+import java.util.concurrent.TimeUnit;
+
+import org.apache.activemq.junit.EmbeddedActiveMQBroker;
+import org.apache.camel.CamelContext;
+import org.apache.camel.EndpointInject;
+import org.apache.camel.LoggingLevel;
+import org.apache.camel.builder.NotifyBuilder;
+import org.apache.camel.builder.RouteBuilder;
+import org.apache.camel.component.mock.MockEndpoint;
+import org.apache.camel.component.sjms.SjmsComponent;
+import org.apache.camel.impl.DefaultCamelContext;
+import org.apache.camel.impl.JndiRegistry;
+import org.apache.camel.test.AvailablePortFinder;
+import org.apache.camel.test.junit.rule.mllp.MllpClientResource;
+import org.apache.camel.test.junit.rule.mllp.MllpJUnitResourceException;
+import org.apache.camel.test.junit4.CamelTestSupport;
+import org.junit.Rule;
+import org.junit.Test;
+
+import static org.apache.camel.test.mllp.Hl7MessageGenerator.generateMessage;
+
+public class MllpTcpServerConsumerTransactionTest extends CamelTestSupport {
+ @Rule
+ public EmbeddedActiveMQBroker broker = new EmbeddedActiveMQBroker();
+
+ @Rule
+ public MllpClientResource mllpClient = new MllpClientResource();
+
+ @EndpointInject(uri = "mock://result")
+ MockEndpoint result;
+
+ @EndpointInject(uri = "mock://on-complete-only")
+ MockEndpoint complete;
+
+ @EndpointInject(uri = "mock://on-failure-only")
+ MockEndpoint failure;
+
+ @Override
+ protected JndiRegistry createRegistry() throws Exception {
+ JndiRegistry registry = super.createRegistry();
+
+ SjmsComponent target = new SjmsComponent();
+ target.setConnectionFactory(broker.createConnectionFactory());
+ registry.bind("target", target);
+
+ return registry;
+ }
+
+ @Override
+ protected CamelContext createCamelContext() throws Exception {
+ DefaultCamelContext context = (DefaultCamelContext) super.createCamelContext();
+
+ context.setUseMDCLogging(true);
+ context.setName(this.getClass().getSimpleName());
+
+ return context;
+ }
+
+ @Override
+ protected RouteBuilder createRouteBuilder() {
+
+ mllpClient.setMllpHost("localhost");
+ mllpClient.setMllpPort(AvailablePortFinder.getNextAvailable());
+
+ return new RouteBuilder() {
+ int connectTimeout = 500;
+ int responseTimeout = 5000;
+
+ @Override
+ public void configure() throws Exception {
+ String routeId = "mllp-test-receiver-route";
+
+ onCompletion()
+ .onCompleteOnly()
+ .log(LoggingLevel.INFO, routeId, "Test route complete")
+ .to(complete);
+
+ onCompletion()
+ .onFailureOnly()
+ .log(LoggingLevel.INFO, routeId, "Test route failed")
+ .to(failure);
+
+ fromF("mllp://%s:%d?autoAck=true&connectTimeout=%d&receiveTimeout=%d",
+ mllpClient.getMllpHost(), mllpClient.getMllpPort(), connectTimeout, responseTimeout)
+ .routeId(routeId)
+ .log(LoggingLevel.INFO, routeId, "Test route received message")
+ .to("target://test-queue?transacted=true");
+
+ from("target://test-queue")
+ .routeId("jms-consumer")
+ .log(LoggingLevel.INFO, routeId, "Test JMS Consumer received message")
+ .to(result);
+
+ }
+ };
+ }
+
+ @Test
+ public void testReceiveSingleMessage() throws Exception {
+ result.expectedMessageCount(1);
+ complete.expectedMessageCount(1);
+ failure.expectedMessageCount(0);
+
+ mllpClient.connect();
+
+ mllpClient.sendMessageAndWaitForAcknowledgement(generateMessage(), 10000);
+
+ assertMockEndpointsSatisfied(10, TimeUnit.SECONDS);
+ }
+
+ @Test
+ public void testAcknowledgementWriteFailure() throws Exception {
+ result.expectedMessageCount(0);
+ result.setAssertPeriod(1000);
+ complete.expectedMessageCount(0);
+ failure.expectedMessageCount(1);
+
+ mllpClient.connect();
+ mllpClient.setDisconnectMethod(MllpClientResource.DisconnectMethod.RESET);
+
+ mllpClient.sendFramedData(generateMessage(), true);
+
+ assertMockEndpointsSatisfied(10, TimeUnit.SECONDS);
+ }
+}
+