Added unit test
Project: http://git-wip-us.apache.org/repos/asf/camel/repo Commit: http://git-wip-us.apache.org/repos/asf/camel/commit/0bb82e11 Tree: http://git-wip-us.apache.org/repos/asf/camel/tree/0bb82e11 Diff: http://git-wip-us.apache.org/repos/asf/camel/diff/0bb82e11 Branch: refs/heads/master Commit: 0bb82e11b40e794163d56e2b97ea21adf9b69f1f Parents: 9391f00 Author: Claus Ibsen <davscl...@apache.org> Authored: Sun Jan 24 12:16:31 2016 +0100 Committer: Claus Ibsen <davscl...@apache.org> Committed: Sun Jan 24 12:16:31 2016 +0100 ---------------------------------------------------------------------- .../component/hl7/HL7MLLPNettyRouteToTest.java | 133 +++++++++++++++++++ .../src/test/resources/log4j.properties | 21 +-- 2 files changed, 144 insertions(+), 10 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/camel/blob/0bb82e11/components/camel-hl7/src/test/java/org/apache/camel/component/hl7/HL7MLLPNettyRouteToTest.java ---------------------------------------------------------------------- diff --git a/components/camel-hl7/src/test/java/org/apache/camel/component/hl7/HL7MLLPNettyRouteToTest.java b/components/camel-hl7/src/test/java/org/apache/camel/component/hl7/HL7MLLPNettyRouteToTest.java new file mode 100644 index 0000000..642fdee --- /dev/null +++ b/components/camel-hl7/src/test/java/org/apache/camel/component/hl7/HL7MLLPNettyRouteToTest.java @@ -0,0 +1,133 @@ +/** + * 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.hl7; + +import ca.uhn.hl7v2.model.Message; +import ca.uhn.hl7v2.model.v24.message.ADR_A19; +import ca.uhn.hl7v2.model.v24.segment.MSA; +import ca.uhn.hl7v2.model.v24.segment.MSH; +import ca.uhn.hl7v2.model.v24.segment.QRD; +import org.apache.camel.Exchange; +import org.apache.camel.Processor; +import org.apache.camel.builder.RouteBuilder; +import org.apache.camel.impl.JndiRegistry; +import org.junit.Test; + +/** + * Unit test for the HL7MLLPNetty Codec. + */ +public class HL7MLLPNettyRouteToTest extends HL7TestSupport { + + protected JndiRegistry createRegistry() throws Exception { + JndiRegistry jndi = super.createRegistry(); + + // START SNIPPET: e1 + HL7MLLPNettyDecoderFactory decoder = new HL7MLLPNettyDecoderFactory(); + decoder.setCharset("iso-8859-1"); + decoder.setConvertLFtoCR(true); + jndi.bind("hl7decoder", decoder); + + HL7MLLPNettyEncoderFactory encoder = new HL7MLLPNettyEncoderFactory(); + decoder.setCharset("iso-8859-1"); + decoder.setConvertLFtoCR(true); + jndi.bind("hl7encoder", encoder); + // END SNIPPET: e1 + + return jndi; + } + + protected RouteBuilder createRouteBuilder() throws Exception { + return new RouteBuilder() { + public void configure() throws Exception { + from("direct:start") + .to("netty4:tcp://127.0.0.1:" + getPort() + "?sync=true&decoder=#hl7decoder&encoder=#hl7encoder") + .process(new Processor() { + @Override + public void process(Exchange exchange) throws Exception { + String body = exchange.getIn().getBody(String.class); + System.out.println(body); + log.info(body); + } + }) + .log("I was here ${body}") + .to("mock:result"); + + + from("netty4:tcp://127.0.0.1:" + getPort() + "?sync=true&decoder=#hl7decoder&encoder=#hl7encoder") + .process(new Processor() { + public void process(Exchange exchange) throws Exception { + Message input = exchange.getIn().getBody(Message.class); + + assertEquals("2.4", input.getVersion()); + QRD qrd = (QRD)input.get("QRD"); + assertEquals("0101701234", qrd.getWhoSubjectFilter(0).getIDNumber().getValue()); + + Message response = createHL7AsMessage(); + exchange.getOut().setBody(response); + } + }); + } + }; + } + + @Test + public void testSendHL7Message() throws Exception { + getMockEndpoint("mock:result").expectedMessageCount(1); + + // START SNIPPET: e2 + String line1 = "MSH|^~\\&|MYSENDER|MYRECEIVER|MYAPPLICATION||200612211200||QRY^A19|1234|P|2.4"; + String line2 = "QRD|200612211200|R|I|GetPatient|||1^RD|0101701234|DEM||"; + + StringBuilder in = new StringBuilder(); + in.append(line1); + in.append("\n"); + in.append(line2); + + String out = template.requestBody("direct:start", in.toString(), String.class); + // END SNIPPET: e2 + + String[] lines = out.split("\r"); + assertEquals("MSH|^~\\&|MYSENDER||||200701011539||ADR^A19^ADR_A19|456|P|2.4", lines[0]); + assertEquals("MSA|AA|123", lines[1]); + + assertMockEndpointsSatisfied(); + } + + // START SNIPPET: e3 + private static Message createHL7AsMessage() throws Exception { + ADR_A19 adr = new ADR_A19(); + adr.initQuickstart("ADR", "A19", "P"); + + // Populate the MSH Segment + MSH mshSegment = adr.getMSH(); + mshSegment.getDateTimeOfMessage().getTimeOfAnEvent().setValue("200701011539"); + mshSegment.getSendingApplication().getNamespaceID().setValue("MYSENDER"); + mshSegment.getMessageControlID().setValue("456"); + + // Populate the PID Segment + MSA msa = adr.getMSA(); + msa.getAcknowledgementCode().setValue("AA"); + msa.getMessageControlID().setValue("123"); + + QRD qrd = adr.getQRD(); + qrd.getQueryDateTime().getTimeOfAnEvent().setValue("20080805120000"); + + return adr; + } + // END SNIPPET: e3 + +} http://git-wip-us.apache.org/repos/asf/camel/blob/0bb82e11/components/camel-hl7/src/test/resources/log4j.properties ---------------------------------------------------------------------- diff --git a/components/camel-hl7/src/test/resources/log4j.properties b/components/camel-hl7/src/test/resources/log4j.properties index 5d0c9a9..e7a6576 100644 --- a/components/camel-hl7/src/test/resources/log4j.properties +++ b/components/camel-hl7/src/test/resources/log4j.properties @@ -1,4 +1,4 @@ -## --------------------------------------------------------------------------- +## ------------------------------------------------------------------------ ## 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. @@ -13,23 +13,24 @@ ## 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.. +# The logging properties used for testing. # -log4j.rootLogger=INFO, file +log4j.rootLogger=INFO, out + +# uncomment the following to enable camel debugging +#log4j.logger.org.apache.camel.component.hl7=DEBUG # 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 +log4j.appender.out=org.apache.log4j.ConsoleAppender +log4j.appender.out.layout=org.apache.log4j.PatternLayout +log4j.appender.out.layout.ConversionPattern=[%30.30t] %-30.30c{1} %-5p %m%n +#log4j.appender.out.layout.ConversionPattern=%d [%-15.15t] %-5p %-30.30c{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-hl7-test.log - -# debug loging for Camel -log4j.logger.org.apache.camel.component.hl7=DEBUG