This is an automated email from the ASF dual-hosted git repository. sruehl pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/incubator-plc4x.git
The following commit(s) were added to refs/heads/master by this push: new 73cac67 added AdsConnectionFactoryTest 73cac67 is described below commit 73cac67481010ddf17ecb84c314055f95ca80716 Author: Sebastian Rühl <sru...@apache.org> AuthorDate: Wed May 30 11:28:01 2018 +0200 added AdsConnectionFactoryTest --- .../java/ads/connection/AdsConnectionFactory.java | 7 + .../ads/connection/AdsConnectionFactoryTest.java | 164 +++++++++++++++++++++ .../apache/plc4x/java/ads/util/Junit5Backport.java | 3 + .../java/base/connection/SerialChannelFactory.java | 3 + .../base/connection/TcpSocketChannelFactory.java | 9 +- 5 files changed, 185 insertions(+), 1 deletion(-) diff --git a/plc4j/protocols/ads/src/main/java/org/apache/plc4x/java/ads/connection/AdsConnectionFactory.java b/plc4j/protocols/ads/src/main/java/org/apache/plc4x/java/ads/connection/AdsConnectionFactory.java index c383529..6dca925 100644 --- a/plc4j/protocols/ads/src/main/java/org/apache/plc4x/java/ads/connection/AdsConnectionFactory.java +++ b/plc4j/protocols/ads/src/main/java/org/apache/plc4x/java/ads/connection/AdsConnectionFactory.java @@ -22,10 +22,14 @@ import org.apache.plc4x.java.ads.api.generic.types.AmsNetId; import org.apache.plc4x.java.ads.api.generic.types.AmsPort; import java.net.InetAddress; +import java.util.Objects; public class AdsConnectionFactory { public AdsTcpPlcConnection adsTcpPlcConnectionOf(InetAddress address, Integer port, AmsNetId targetAmsNetId, AmsPort targetAmsPort, AmsNetId sourceAmsNetId, AmsPort sourceAmsPort) { + Objects.requireNonNull(address); + Objects.requireNonNull(targetAmsNetId); + Objects.requireNonNull(targetAmsPort); if (sourceAmsNetId == null || sourceAmsPort == null) { if (port == null) { return AdsTcpPlcConnection.of(address, targetAmsNetId, targetAmsPort); @@ -42,6 +46,9 @@ public class AdsConnectionFactory { } public AdsSerialPlcConnection adsSerialPlcConnectionOf(String serialPort, AmsNetId targetAmsNetId, AmsPort targetAmsPort, AmsNetId sourceAmsNetId, AmsPort sourceAmsPort) { + Objects.requireNonNull(serialPort); + Objects.requireNonNull(targetAmsNetId); + Objects.requireNonNull(targetAmsPort); if (sourceAmsNetId == null || sourceAmsPort == null) { return AdsSerialPlcConnection.of(serialPort, targetAmsNetId, targetAmsPort); } else { diff --git a/plc4j/protocols/ads/src/test/java/org/apache/plc4x/java/ads/connection/AdsConnectionFactoryTest.java b/plc4j/protocols/ads/src/test/java/org/apache/plc4x/java/ads/connection/AdsConnectionFactoryTest.java new file mode 100644 index 0000000..7df1c01 --- /dev/null +++ b/plc4j/protocols/ads/src/test/java/org/apache/plc4x/java/ads/connection/AdsConnectionFactoryTest.java @@ -0,0 +1,164 @@ +/* + 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.plc4x.java.ads.connection; + +import org.apache.commons.lang3.reflect.FieldUtils; +import org.apache.plc4x.java.ads.api.generic.types.AmsNetId; +import org.apache.plc4x.java.ads.api.generic.types.AmsPort; +import org.apache.plc4x.java.base.connection.AbstractPlcConnection; +import org.apache.plc4x.java.base.connection.SerialChannelFactory; +import org.apache.plc4x.java.base.connection.TcpSocketChannelFactory; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.mockito.InjectMocks; +import org.mockito.Mock; +import org.mockito.junit.MockitoJUnitRunner; + +import java.net.InetAddress; + +import static org.apache.plc4x.java.ads.util.Junit5Backport.assertThrows; +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertNotEquals; + +@RunWith(MockitoJUnitRunner.class) +public class AdsConnectionFactoryTest { + + @InjectMocks + private AdsConnectionFactory SUT; + + @Mock + private InetAddress inetAddress; + + @Mock + private AmsNetId targetAmsNetId; + + @Mock + private AmsPort targetAmsPort; + + @Mock + private AmsNetId sourceAmsNetId; + + @Mock + private AmsPort sourceAmsPort; + + @Test + public void adsTcpPlcConnectionOf() throws Exception { + { + assertThrows(NullPointerException.class, () -> SUT.adsTcpPlcConnectionOf(null, null, null, null, null, null)); + assertThrows(NullPointerException.class, () -> SUT.adsTcpPlcConnectionOf(inetAddress, null, null, null, null, null)); + assertThrows(NullPointerException.class, () -> SUT.adsTcpPlcConnectionOf(inetAddress, null, targetAmsNetId, null, null, null)); + } + { + AdsTcpPlcConnection adsTcpPlcConnection = SUT.adsTcpPlcConnectionOf(inetAddress, null, targetAmsNetId, targetAmsPort, null, null); + assertEquals(inetAddress, adsTcpPlcConnection.getRemoteAddress()); + assertEquals(targetAmsNetId, adsTcpPlcConnection.getTargetAmsNetId()); + assertEquals(targetAmsPort, adsTcpPlcConnection.getTargetAmsPort()); + assertNotEquals(sourceAmsNetId, adsTcpPlcConnection.getSourceAmsNetId()); + assertNotEquals(sourceAmsPort, adsTcpPlcConnection.getSourceAmsPort()); + assertGeneratedPort(adsTcpPlcConnection); + } + { + AdsTcpPlcConnection adsTcpPlcConnection = SUT.adsTcpPlcConnectionOf(inetAddress, 13, targetAmsNetId, targetAmsPort, null, null); + assertEquals(inetAddress, adsTcpPlcConnection.getRemoteAddress()); + assertEquals(targetAmsNetId, adsTcpPlcConnection.getTargetAmsNetId()); + assertEquals(targetAmsPort, adsTcpPlcConnection.getTargetAmsPort()); + assertNotEquals(sourceAmsNetId, adsTcpPlcConnection.getSourceAmsNetId()); + assertNotEquals(sourceAmsPort, adsTcpPlcConnection.getSourceAmsPort()); + assertPort(adsTcpPlcConnection, 13); + } + { + AdsTcpPlcConnection adsTcpPlcConnection = SUT.adsTcpPlcConnectionOf(inetAddress, null, targetAmsNetId, targetAmsPort, sourceAmsNetId, null); + assertEquals(inetAddress, adsTcpPlcConnection.getRemoteAddress()); + assertEquals(targetAmsNetId, adsTcpPlcConnection.getTargetAmsNetId()); + assertEquals(targetAmsPort, adsTcpPlcConnection.getTargetAmsPort()); + assertNotEquals(sourceAmsNetId, adsTcpPlcConnection.getSourceAmsNetId()); + assertNotEquals(sourceAmsPort, adsTcpPlcConnection.getSourceAmsPort()); + assertGeneratedPort(adsTcpPlcConnection); + } + { + AdsTcpPlcConnection adsTcpPlcConnection = SUT.adsTcpPlcConnectionOf(inetAddress, null, targetAmsNetId, targetAmsPort, sourceAmsNetId, sourceAmsPort); + assertEquals(inetAddress, adsTcpPlcConnection.getRemoteAddress()); + assertEquals(targetAmsNetId, adsTcpPlcConnection.getTargetAmsNetId()); + assertEquals(targetAmsPort, adsTcpPlcConnection.getTargetAmsPort()); + assertEquals(sourceAmsNetId, adsTcpPlcConnection.getSourceAmsNetId()); + assertEquals(sourceAmsPort, adsTcpPlcConnection.getSourceAmsPort()); + assertGeneratedPort(adsTcpPlcConnection); + } + { + AdsTcpPlcConnection adsTcpPlcConnection = SUT.adsTcpPlcConnectionOf(inetAddress, 13, targetAmsNetId, targetAmsPort, sourceAmsNetId, sourceAmsPort); + assertEquals(inetAddress, adsTcpPlcConnection.getRemoteAddress()); + assertEquals(targetAmsNetId, adsTcpPlcConnection.getTargetAmsNetId()); + assertEquals(targetAmsPort, adsTcpPlcConnection.getTargetAmsPort()); + assertEquals(sourceAmsNetId, adsTcpPlcConnection.getSourceAmsNetId()); + assertEquals(sourceAmsPort, adsTcpPlcConnection.getSourceAmsPort()); + assertPort(adsTcpPlcConnection, 13); + } + } + + public void assertGeneratedPort(AdsTcpPlcConnection adsTcpPlcConnection) throws Exception { + assertPort(adsTcpPlcConnection, 48898); + } + + public void assertPort(AdsTcpPlcConnection adsTcpPlcConnection, int port) throws Exception { + TcpSocketChannelFactory channelFactory = (TcpSocketChannelFactory) FieldUtils + .getDeclaredField(AbstractPlcConnection.class, "channelFactory", true) + .get(adsTcpPlcConnection); + assertEquals(port, channelFactory.getPort()); + } + + @Test + public void adsSerialPlcConnectionOf() throws Exception { + { + assertThrows(NullPointerException.class, () -> SUT.adsSerialPlcConnectionOf(null, null, null, null, null)); + assertThrows(NullPointerException.class, () -> SUT.adsSerialPlcConnectionOf("/dev/ttyS01", null, null, null, null)); + assertThrows(NullPointerException.class, () -> SUT.adsSerialPlcConnectionOf("/dev/ttyS01", targetAmsNetId, null, null, null)); + } + { + AdsSerialPlcConnection adsSerialPlcConnection = SUT.adsSerialPlcConnectionOf("/dev/ttyS01", targetAmsNetId, targetAmsPort, null, null); + assertEquals(targetAmsNetId, adsSerialPlcConnection.getTargetAmsNetId()); + assertEquals(targetAmsPort, adsSerialPlcConnection.getTargetAmsPort()); + assertNotEquals(sourceAmsNetId, adsSerialPlcConnection.getSourceAmsNetId()); + assertNotEquals(sourceAmsPort, adsSerialPlcConnection.getSourceAmsPort()); + assertPort(adsSerialPlcConnection, "/dev/ttyS01"); + } + { + AdsSerialPlcConnection adsSerialPlcConnection = SUT.adsSerialPlcConnectionOf("/dev/ttyS01", targetAmsNetId, targetAmsPort, sourceAmsNetId, null); + assertEquals(targetAmsNetId, adsSerialPlcConnection.getTargetAmsNetId()); + assertEquals(targetAmsPort, adsSerialPlcConnection.getTargetAmsPort()); + assertNotEquals(sourceAmsNetId, adsSerialPlcConnection.getSourceAmsNetId()); + assertNotEquals(sourceAmsPort, adsSerialPlcConnection.getSourceAmsPort()); + assertPort(adsSerialPlcConnection, "/dev/ttyS01"); + } + { + AdsSerialPlcConnection adsSerialPlcConnection = SUT.adsSerialPlcConnectionOf("/dev/ttyS01", targetAmsNetId, targetAmsPort, sourceAmsNetId, sourceAmsPort); + assertEquals(targetAmsNetId, adsSerialPlcConnection.getTargetAmsNetId()); + assertEquals(targetAmsPort, adsSerialPlcConnection.getTargetAmsPort()); + assertEquals(sourceAmsNetId, adsSerialPlcConnection.getSourceAmsNetId()); + assertEquals(sourceAmsPort, adsSerialPlcConnection.getSourceAmsPort()); + assertPort(adsSerialPlcConnection, "/dev/ttyS01"); + } + } + + public void assertPort(AdsSerialPlcConnection adsSerialPlcConnection, String serialPort) throws Exception { + SerialChannelFactory channelFactory = (SerialChannelFactory) FieldUtils + .getDeclaredField(AbstractPlcConnection.class, "channelFactory", true) + .get(adsSerialPlcConnection); + assertEquals(serialPort, channelFactory.getSerialPort()); + } +} \ No newline at end of file diff --git a/plc4j/protocols/ads/src/test/java/org/apache/plc4x/java/ads/util/Junit5Backport.java b/plc4j/protocols/ads/src/test/java/org/apache/plc4x/java/ads/util/Junit5Backport.java index 973c351..66c2347 100644 --- a/plc4j/protocols/ads/src/test/java/org/apache/plc4x/java/ads/util/Junit5Backport.java +++ b/plc4j/protocols/ads/src/test/java/org/apache/plc4x/java/ads/util/Junit5Backport.java @@ -18,11 +18,14 @@ */ package org.apache.plc4x.java.ads.util; +import static org.junit.Assert.fail; + public class Junit5Backport { public static void assertThrows(Class<? extends Exception> exception, Acceptor acceptor) { try { acceptor.accept(); + fail("Expected exception " + exception + " not thrown."); } catch (Exception e) { if (!exception.isAssignableFrom(e.getClass())) { throw new AssertionError("Unexpected exception type " + e.getClass() + ". Expected " + exception, e); diff --git a/plc4j/protocols/driver-bases/serial/src/main/java/org/apache/plc4x/java/base/connection/SerialChannelFactory.java b/plc4j/protocols/driver-bases/serial/src/main/java/org/apache/plc4x/java/base/connection/SerialChannelFactory.java index 0d9941f..cdfea8f 100644 --- a/plc4j/protocols/driver-bases/serial/src/main/java/org/apache/plc4x/java/base/connection/SerialChannelFactory.java +++ b/plc4j/protocols/driver-bases/serial/src/main/java/org/apache/plc4x/java/base/connection/SerialChannelFactory.java @@ -59,4 +59,7 @@ public class SerialChannelFactory implements ChannelFactory { } } + public String getSerialPort() { + return serialPort; + } } diff --git a/plc4j/protocols/driver-bases/tcp/src/main/java/org/apache/plc4x/java/base/connection/TcpSocketChannelFactory.java b/plc4j/protocols/driver-bases/tcp/src/main/java/org/apache/plc4x/java/base/connection/TcpSocketChannelFactory.java index 3fbfd2a..31b869d 100644 --- a/plc4j/protocols/driver-bases/tcp/src/main/java/org/apache/plc4x/java/base/connection/TcpSocketChannelFactory.java +++ b/plc4j/protocols/driver-bases/tcp/src/main/java/org/apache/plc4x/java/base/connection/TcpSocketChannelFactory.java @@ -19,7 +19,10 @@ under the License. package org.apache.plc4x.java.base.connection; import io.netty.bootstrap.Bootstrap; -import io.netty.channel.*; +import io.netty.channel.Channel; +import io.netty.channel.ChannelFuture; +import io.netty.channel.ChannelHandler; +import io.netty.channel.ChannelOption; import io.netty.channel.nio.NioEventLoopGroup; import io.netty.channel.socket.nio.NioSocketChannel; import org.apache.plc4x.java.api.exceptions.PlcConnectionException; @@ -60,4 +63,8 @@ public class TcpSocketChannelFactory implements ChannelFactory { public InetAddress getAddress() { return address; } + + public int getPort() { + return port; + } } -- To stop receiving notification emails like this one, please contact sru...@apache.org.