From 5d1325ae9010e510e7746269f7cf75b0ca472787 Mon Sep 17 00:00:00 2001 From: Gary Russell Date: Sat, 6 Mar 2010 20:39:04 +0000 Subject: [PATCH] Missing attribute from schema; more namespace parser tests --- ...ternetProtocolReceivingChannelAdapter.java | 5 +- ...InternetProtocolSendingMessageHandler.java | 3 - .../ip/config/IpAdapterParserUtils.java | 2 +- .../tcp/AbstractTcpSendingMessageHandler.java | 2 - .../ip/tcp/TcpNioSendingMessageHandler.java | 2 +- .../udp/UnicastReceivingChannelAdapter.java | 6 + .../ip/udp/UnicastSendingMessageHandler.java | 10 + .../ip/config/spring-integration-ip-2.0.xsd | 9 +- .../ip/config/ParserUnitTests-context.xml | 178 +++++++++++++ .../ip/config/ParserUnitTests.java | 242 ++++++++++++++++++ .../ip/tcp/TcpSendingMessageHandlerTests.java | 2 +- 11 files changed, 445 insertions(+), 16 deletions(-) create mode 100644 org.springframework.integration.ip/src/test/java/org/springframework/integration/ip/config/ParserUnitTests-context.xml create mode 100644 org.springframework.integration.ip/src/test/java/org/springframework/integration/ip/config/ParserUnitTests.java diff --git a/org.springframework.integration.ip/src/main/java/org/springframework/integration/ip/AbstractInternetProtocolReceivingChannelAdapter.java b/org.springframework.integration.ip/src/main/java/org/springframework/integration/ip/AbstractInternetProtocolReceivingChannelAdapter.java index 3c30003a1e..5b730b78a8 100644 --- a/org.springframework.integration.ip/src/main/java/org/springframework/integration/ip/AbstractInternetProtocolReceivingChannelAdapter.java +++ b/org.springframework.integration.ip/src/main/java/org/springframework/integration/ip/AbstractInternetProtocolReceivingChannelAdapter.java @@ -38,8 +38,6 @@ public abstract class AbstractInternetProtocolReceivingChannelAdapter protected volatile int soReceiveBufferSize = -1; - protected volatile int soSendBufferSize = -1; - protected volatile int receiveBufferSize = 2048; protected volatile boolean active; @@ -72,10 +70,9 @@ public abstract class AbstractInternetProtocolReceivingChannelAdapter } /* (non-Javadoc) - * @see org.springframework.integration.ip.SocketOptions#setSoSendBufferSize(int) + * @see org.springframework.integration.ip.CommonSocketOptions#setSoSendBufferSize(int) */ public void setSoSendBufferSize(int soSendBufferSize) { - this.soSendBufferSize = soSendBufferSize; } public void setReceiveBufferSize(int receiveBufferSize) { diff --git a/org.springframework.integration.ip/src/main/java/org/springframework/integration/ip/AbstractInternetProtocolSendingMessageHandler.java b/org.springframework.integration.ip/src/main/java/org/springframework/integration/ip/AbstractInternetProtocolSendingMessageHandler.java index 73d87d42bf..be3e7c8365 100644 --- a/org.springframework.integration.ip/src/main/java/org/springframework/integration/ip/AbstractInternetProtocolSendingMessageHandler.java +++ b/org.springframework.integration.ip/src/main/java/org/springframework/integration/ip/AbstractInternetProtocolSendingMessageHandler.java @@ -41,8 +41,6 @@ public abstract class AbstractInternetProtocolSendingMessageHandler implements M protected final int port; - protected int soReceiveBufferSize = -1; - protected volatile int soSendBufferSize = -1; protected volatile int soTimeout = -1; @@ -71,7 +69,6 @@ public abstract class AbstractInternetProtocolSendingMessageHandler implements M * @param size */ public void setSoReceiveBufferSize(int size) { - this.soReceiveBufferSize = size; } /** diff --git a/org.springframework.integration.ip/src/main/java/org/springframework/integration/ip/config/IpAdapterParserUtils.java b/org.springframework.integration.ip/src/main/java/org/springframework/integration/ip/config/IpAdapterParserUtils.java index 6faf8b55f5..340fa71f6a 100644 --- a/org.springframework.integration.ip/src/main/java/org/springframework/integration/ip/config/IpAdapterParserUtils.java +++ b/org.springframework.integration.ip/src/main/java/org/springframework/integration/ip/config/IpAdapterParserUtils.java @@ -82,7 +82,7 @@ public abstract class IpAdapterParserUtils { static final String SO_LINGER = "so-linger"; - static final String SO_TCP_NODELAY = "so-tcp-nodelay"; + static final String SO_TCP_NODELAY = "so-tcp-no-delay"; static final String SO_TRAFFIC_CLASS = "so-traffic-class"; diff --git a/org.springframework.integration.ip/src/main/java/org/springframework/integration/ip/tcp/AbstractTcpSendingMessageHandler.java b/org.springframework.integration.ip/src/main/java/org/springframework/integration/ip/tcp/AbstractTcpSendingMessageHandler.java index 1e231dd960..c10b9110c1 100644 --- a/org.springframework.integration.ip/src/main/java/org/springframework/integration/ip/tcp/AbstractTcpSendingMessageHandler.java +++ b/org.springframework.integration.ip/src/main/java/org/springframework/integration/ip/tcp/AbstractTcpSendingMessageHandler.java @@ -17,8 +17,6 @@ package org.springframework.integration.ip.tcp; import java.net.Socket; import java.net.SocketException; -import java.util.concurrent.Executors; -import java.util.concurrent.ThreadFactory; import org.springframework.integration.adapter.MessageMappingException; import org.springframework.integration.core.Message; diff --git a/org.springframework.integration.ip/src/main/java/org/springframework/integration/ip/tcp/TcpNioSendingMessageHandler.java b/org.springframework.integration.ip/src/main/java/org/springframework/integration/ip/tcp/TcpNioSendingMessageHandler.java index cb270d8ef1..28f1c1c9dd 100644 --- a/org.springframework.integration.ip/src/main/java/org/springframework/integration/ip/tcp/TcpNioSendingMessageHandler.java +++ b/org.springframework.integration.ip/src/main/java/org/springframework/integration/ip/tcp/TcpNioSendingMessageHandler.java @@ -81,7 +81,7 @@ public class TcpNioSendingMessageHandler extends * @throws ClassNotFoundException */ @SuppressWarnings("unchecked") - public void setCustomSocketWriteriClassName( + public void setCustomSocketWriterClassName( String customSocketWriterClassName) throws ClassNotFoundException { this.customSocketWriter = (Class) Class .forName(customSocketWriterClassName); diff --git a/org.springframework.integration.ip/src/main/java/org/springframework/integration/ip/udp/UnicastReceivingChannelAdapter.java b/org.springframework.integration.ip/src/main/java/org/springframework/integration/ip/udp/UnicastReceivingChannelAdapter.java index e7652f3653..1347b3fa42 100644 --- a/org.springframework.integration.ip/src/main/java/org/springframework/integration/ip/udp/UnicastReceivingChannelAdapter.java +++ b/org.springframework.integration.ip/src/main/java/org/springframework/integration/ip/udp/UnicastReceivingChannelAdapter.java @@ -51,6 +51,8 @@ public class UnicastReceivingChannelAdapter extends AbstractInternetProtocolRece protected volatile int poolSize = -1; + protected volatile int soSendBufferSize = -1; + private static Pattern addressPattern = Pattern.compile("([^:]*):([0-9]*)"); @@ -206,4 +208,8 @@ public class UnicastReceivingChannelAdapter extends AbstractInternetProtocolRece } } + public void setSoSendBufferSize(int soSendBufferSize) { + this.soSendBufferSize = soSendBufferSize; + } + } diff --git a/org.springframework.integration.ip/src/main/java/org/springframework/integration/ip/udp/UnicastSendingMessageHandler.java b/org.springframework.integration.ip/src/main/java/org/springframework/integration/ip/udp/UnicastSendingMessageHandler.java index 20c995217f..0ea2e8a848 100644 --- a/org.springframework.integration.ip/src/main/java/org/springframework/integration/ip/udp/UnicastSendingMessageHandler.java +++ b/org.springframework.integration.ip/src/main/java/org/springframework/integration/ip/udp/UnicastSendingMessageHandler.java @@ -76,6 +76,8 @@ public class UnicastSendingMessageHandler extends protected volatile Exception fatalException; + protected int soReceiveBufferSize = -1; + /** * Basic constructor; no reliability; no acknowledgment. @@ -295,4 +297,12 @@ public class UnicastSendingMessageHandler extends } } + /** + * @see {@link Socket#setReceiveBufferSize(int)} and {@link DatagramSocket#setReceiveBufferSize(int)} + * @param size + */ + public void setSoReceiveBufferSize(int size) { + this.soReceiveBufferSize = size; + } + } diff --git a/org.springframework.integration.ip/src/main/resources/org/springframework/integration/ip/config/spring-integration-ip-2.0.xsd b/org.springframework.integration.ip/src/main/resources/org/springframework/integration/ip/config/spring-integration-ip-2.0.xsd index 4aa0e873be..be0f6f51b0 100644 --- a/org.springframework.integration.ip/src/main/resources/org/springframework/integration/ip/config/spring-integration-ip-2.0.xsd +++ b/org.springframework.integration.ip/src/main/resources/org/springframework/integration/ip/config/spring-integration-ip-2.0.xsd @@ -65,10 +65,11 @@ the custom message format. See java docs for TcpNetReceivingChannelAdapter and T + - + @@ -97,7 +98,7 @@ the custom message format. See java docs for TcpNetReceivingChannelAdapter and T - + @@ -108,8 +109,8 @@ the custom message format. See java docs for TcpNetReceivingChannelAdapter and T - - + + diff --git a/org.springframework.integration.ip/src/test/java/org/springframework/integration/ip/config/ParserUnitTests-context.xml b/org.springframework.integration.ip/src/test/java/org/springframework/integration/ip/config/ParserUnitTests-context.xml new file mode 100644 index 0000000000..89652ddda9 --- /dev/null +++ b/org.springframework.integration.ip/src/test/java/org/springframework/integration/ip/config/ParserUnitTests-context.xml @@ -0,0 +1,178 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/org.springframework.integration.ip/src/test/java/org/springframework/integration/ip/config/ParserUnitTests.java b/org.springframework.integration.ip/src/test/java/org/springframework/integration/ip/config/ParserUnitTests.java new file mode 100644 index 0000000000..3fce61e723 --- /dev/null +++ b/org.springframework.integration.ip/src/test/java/org/springframework/integration/ip/config/ParserUnitTests.java @@ -0,0 +1,242 @@ +/* + * Copyright 2002-2010 the original author or authors. + * + * Licensed 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.springframework.integration.ip.config; + +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertTrue; + +import org.junit.Test; +import org.junit.runner.RunWith; +import org.springframework.beans.DirectFieldAccessor; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Qualifier; +import org.springframework.integration.ip.tcp.CustomNetSocketReader; +import org.springframework.integration.ip.tcp.CustomNetSocketWriter; +import org.springframework.integration.ip.tcp.CustomNioSocketReader; +import org.springframework.integration.ip.tcp.CustomNioSocketWriter; +import org.springframework.integration.ip.tcp.MessageFormats; +import org.springframework.integration.ip.tcp.TcpNetReceivingChannelAdapter; +import org.springframework.integration.ip.tcp.TcpNetSendingMessageHandler; +import org.springframework.integration.ip.tcp.TcpNioReceivingChannelAdapter; +import org.springframework.integration.ip.tcp.TcpNioSendingMessageHandler; +import org.springframework.integration.ip.udp.DatagramPacketMessageMapper; +import org.springframework.integration.ip.udp.MulticastReceivingChannelAdapter; +import org.springframework.integration.ip.udp.MulticastSendingMessageHandler; +import org.springframework.integration.ip.udp.UnicastReceivingChannelAdapter; +import org.springframework.integration.ip.udp.UnicastSendingMessageHandler; +import org.springframework.test.context.ContextConfiguration; +import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; + + +/** + * @author Gary Russell + * + */ +@ContextConfiguration +@RunWith(SpringJUnit4ClassRunner.class) +public class ParserUnitTests { + + @Autowired + @Qualifier(value="testInUdp") + UnicastReceivingChannelAdapter udpIn; + + @Autowired + @Qualifier(value="testInUdpMulticast") + MulticastReceivingChannelAdapter udpInMulticast; + + @Autowired + @Qualifier(value="testInTcpNio") + TcpNioReceivingChannelAdapter tcpInNio; + + @Autowired + @Qualifier(value="testInTcpNioDirect") + TcpNioReceivingChannelAdapter tcpInNioDirect; + + @Autowired + @Qualifier(value="testInTcpNet") + TcpNetReceivingChannelAdapter tcpInNet; + + @Autowired + @Qualifier(value="org.springframework.integration.ip.udp.UnicastSendingMessageHandler#0") + UnicastSendingMessageHandler udpOut; + + @Autowired + @Qualifier(value="org.springframework.integration.ip.udp.MulticastSendingMessageHandler#0") + MulticastSendingMessageHandler udpOutMulticast; + + @Autowired + @Qualifier(value="org.springframework.integration.ip.tcp.TcpNioSendingMessageHandler#0") + TcpNioSendingMessageHandler tcpOutNio; + + @Autowired + @Qualifier(value="org.springframework.integration.ip.tcp.TcpNioSendingMessageHandler#1") + TcpNioSendingMessageHandler tcpOutNioDirect; + + @Autowired + @Qualifier(value="org.springframework.integration.ip.tcp.TcpNetSendingMessageHandler#0") + TcpNetSendingMessageHandler tcpOutNet; + + + @Test + public void testInUdp() { + DirectFieldAccessor dfa = new DirectFieldAccessor(udpIn); + assertTrue(udpIn.getPort() >= 5000); + assertEquals(27, dfa.getPropertyValue("poolSize")); + assertEquals(29, dfa.getPropertyValue("receiveBufferSize")); + assertEquals(30, dfa.getPropertyValue("soReceiveBufferSize")); + assertEquals(31, dfa.getPropertyValue("soSendBufferSize")); + assertEquals(32, dfa.getPropertyValue("soTimeout")); + } + + @Test + public void testInUdpMulticast() { + DirectFieldAccessor dfa = new DirectFieldAccessor(udpInMulticast); + assertTrue(udpInMulticast.getPort() >= 5100); + assertEquals("225.6.7.8", dfa.getPropertyValue("group")); + assertEquals(27, dfa.getPropertyValue("poolSize")); + assertEquals(29, dfa.getPropertyValue("receiveBufferSize")); + assertEquals(30, dfa.getPropertyValue("soReceiveBufferSize")); + assertEquals(31, dfa.getPropertyValue("soSendBufferSize")); + assertEquals(32, dfa.getPropertyValue("soTimeout")); + } + + @Test + public void testInTcpNio() { + DirectFieldAccessor dfa = new DirectFieldAccessor(tcpInNio); + assertTrue(tcpInNio.getPort() >= 5200); + assertEquals(CustomNioSocketReader.class, dfa.getPropertyValue("customSocketReader")); + assertEquals(false, dfa.getPropertyValue("usingDirectBuffers")); + assertEquals(MessageFormats.FORMAT_STX_ETX, dfa.getPropertyValue("messageFormat")); + assertEquals(27, dfa.getPropertyValue("poolSize")); + assertEquals(true, dfa.getPropertyValue("soKeepAlive")); + assertEquals(29, dfa.getPropertyValue("receiveBufferSize")); + assertEquals(30, dfa.getPropertyValue("soReceiveBufferSize")); + assertEquals(32, dfa.getPropertyValue("soTimeout")); + } + + @Test + public void testInTcpNioDirect() { + DirectFieldAccessor dfa = new DirectFieldAccessor(tcpInNioDirect); + assertTrue(tcpInNioDirect.getPort() >= 5300); + assertEquals(CustomNioSocketReader.class, dfa.getPropertyValue("customSocketReader")); + assertEquals(true, dfa.getPropertyValue("usingDirectBuffers")); + assertEquals(MessageFormats.FORMAT_STX_ETX, dfa.getPropertyValue("messageFormat")); + assertEquals(27, dfa.getPropertyValue("poolSize")); + assertEquals(true, dfa.getPropertyValue("soKeepAlive")); + assertEquals(29, dfa.getPropertyValue("receiveBufferSize")); + assertEquals(30, dfa.getPropertyValue("soReceiveBufferSize")); + assertEquals(32, dfa.getPropertyValue("soTimeout")); + } + + @Test + public void testInTcpNet() { + DirectFieldAccessor dfa = new DirectFieldAccessor(tcpInNet); + assertTrue(tcpInNet.getPort() >= 5400); + assertEquals(CustomNetSocketReader.class, dfa.getPropertyValue("customSocketReader")); + assertEquals(MessageFormats.FORMAT_STX_ETX, dfa.getPropertyValue("messageFormat")); + assertEquals(27, dfa.getPropertyValue("poolSize")); + assertEquals(true, dfa.getPropertyValue("soKeepAlive")); + assertEquals(29, dfa.getPropertyValue("receiveBufferSize")); + assertEquals(30, dfa.getPropertyValue("soReceiveBufferSize")); + assertEquals(32, dfa.getPropertyValue("soTimeout")); + } + + @Test + public void testOutUdp() { + DirectFieldAccessor dfa = new DirectFieldAccessor(udpOut); + assertTrue(udpOut.getPort() >= 6000); + assertEquals("localhost", dfa.getPropertyValue("host")); + int ackPort = (Integer) dfa.getPropertyValue("ackPort"); + assertTrue("Expected ackPort >= 7000 was:" + ackPort, ackPort >= 7000); + DatagramPacketMessageMapper mapper = (DatagramPacketMessageMapper) dfa + .getPropertyValue("mapper"); + String ackAddress = (String) new DirectFieldAccessor(mapper) + .getPropertyValue("ackAddress"); + assertEquals("somehost:" + ackPort, ackAddress); + assertEquals(51, dfa.getPropertyValue("ackTimeout")); + assertEquals(true, dfa.getPropertyValue("waitForAck")); + assertEquals(52, dfa.getPropertyValue("soReceiveBufferSize")); + assertEquals(53, dfa.getPropertyValue("soSendBufferSize")); + assertEquals(54, dfa.getPropertyValue("soTimeout")); + } + + @Test + public void testOutUdpMulticast() { + DirectFieldAccessor dfa = new DirectFieldAccessor(udpOutMulticast); + assertTrue(udpOutMulticast.getPort() >= 6100); + assertEquals("225.6.7.8", dfa.getPropertyValue("host")); + int ackPort = (Integer) dfa.getPropertyValue("ackPort"); + assertTrue("Expected ackPort >= 7100 was:" + ackPort, ackPort >= 7100); + DatagramPacketMessageMapper mapper = (DatagramPacketMessageMapper) dfa + .getPropertyValue("mapper"); + String ackAddress = (String) new DirectFieldAccessor(mapper) + .getPropertyValue("ackAddress"); + assertEquals("somehost:" + ackPort, ackAddress); + assertEquals(51, dfa.getPropertyValue("ackTimeout")); + assertEquals(true, dfa.getPropertyValue("waitForAck")); + assertEquals(52, dfa.getPropertyValue("soReceiveBufferSize")); + assertEquals(53, dfa.getPropertyValue("soSendBufferSize")); + assertEquals(54, dfa.getPropertyValue("soTimeout")); + assertEquals(55, dfa.getPropertyValue("timeToLive")); + } + + @Test + public void testOutTcpNio() { + DirectFieldAccessor dfa = new DirectFieldAccessor(tcpOutNio); + assertTrue(tcpOutNio.getPort() >= 6200); + assertEquals(MessageFormats.FORMAT_STX_ETX, dfa.getPropertyValue("messageFormat")); + assertEquals(CustomNioSocketWriter.class, dfa.getPropertyValue("customSocketWriter")); + assertEquals(true, dfa.getPropertyValue("soKeepAlive")); + assertEquals(3, dfa.getPropertyValue("soLinger")); + assertEquals(true, dfa.getPropertyValue("soTcpNoDelay")); + assertEquals(27, dfa.getPropertyValue("soTrafficClass")); + assertEquals(53, dfa.getPropertyValue("soSendBufferSize")); + assertEquals(54, dfa.getPropertyValue("soTimeout")); + assertEquals(false, dfa.getPropertyValue("usingDirectBuffers")); + + } + + @Test + public void testOutTcpNioDirect() { + DirectFieldAccessor dfa = new DirectFieldAccessor(tcpOutNioDirect); + assertTrue(tcpOutNioDirect.getPort() >= 6300); + assertEquals(MessageFormats.FORMAT_STX_ETX, dfa.getPropertyValue("messageFormat")); + assertEquals(CustomNioSocketWriter.class, dfa.getPropertyValue("customSocketWriter")); + assertEquals(true, dfa.getPropertyValue("soKeepAlive")); + assertEquals(3, dfa.getPropertyValue("soLinger")); + assertEquals(true, dfa.getPropertyValue("soTcpNoDelay")); + assertEquals(27, dfa.getPropertyValue("soTrafficClass")); + assertEquals(53, dfa.getPropertyValue("soSendBufferSize")); + assertEquals(54, dfa.getPropertyValue("soTimeout")); + assertEquals(true, dfa.getPropertyValue("usingDirectBuffers")); + + } + + @Test + public void testOutTcpNet() { + DirectFieldAccessor dfa = new DirectFieldAccessor(tcpOutNet); + assertTrue(tcpOutNet.getPort() >= 6400); + assertEquals(MessageFormats.FORMAT_STX_ETX, dfa.getPropertyValue("messageFormat")); + assertEquals(CustomNetSocketWriter.class, dfa.getPropertyValue("customSocketWriter")); + assertEquals(true, dfa.getPropertyValue("soKeepAlive")); + assertEquals(3, dfa.getPropertyValue("soLinger")); + assertEquals(true, dfa.getPropertyValue("soTcpNoDelay")); + assertEquals(27, dfa.getPropertyValue("soTrafficClass")); + assertEquals(53, dfa.getPropertyValue("soSendBufferSize")); + assertEquals(54, dfa.getPropertyValue("soTimeout")); + + } +} diff --git a/org.springframework.integration.ip/src/test/java/org/springframework/integration/ip/tcp/TcpSendingMessageHandlerTests.java b/org.springframework.integration.ip/src/test/java/org/springframework/integration/ip/tcp/TcpSendingMessageHandlerTests.java index bc6335755a..6c9ba8b4e7 100644 --- a/org.springframework.integration.ip/src/test/java/org/springframework/integration/ip/tcp/TcpSendingMessageHandlerTests.java +++ b/org.springframework.integration.ip/src/test/java/org/springframework/integration/ip/tcp/TcpSendingMessageHandlerTests.java @@ -167,7 +167,7 @@ public class TcpSendingMessageHandlerTests { try { TcpNioSendingMessageHandler handler = new TcpNioSendingMessageHandler("localhost", port); handler.setMessageFormat(MessageFormats.FORMAT_CUSTOM); - handler.setCustomSocketWriteriClassName("org.springframework.integration.ip.tcp.CustomNioSocketWriter"); + handler.setCustomSocketWriterClassName("org.springframework.integration.ip.tcp.CustomNioSocketWriter"); Message message = MessageBuilder.withPayload(testString).build(); handler.handleMessage(message); Thread.sleep(1000000000L);