You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@plc4x.apache.org by sr...@apache.org on 2018/02/15 16:46:30 UTC

[incubator-plc4x] branch feature/Beckhoff_ADS_protocol updated (1833df7 -> 6635fa7)

This is an automated email from the ASF dual-hosted git repository.

sruehl pushed a change to branch feature/Beckhoff_ADS_protocol
in repository https://gitbox.apache.org/repos/asf/incubator-plc4x.git.


    from 1833df7  + continued on plc protocol layer + added readable error codes from specification.
     add 51b5db3  PLC4X-18 - Implement a Netty Pipeline that allows creating pipelines for low level protocols below TCP and UDP - Some more work on the raw socket netty support
     add e3d87d1  Simplified the plc logger code
     add 4bd1219  Simplified the S7PlcReaderSample
     add d9b993f  Some more work on the dummy driver - Should now use the "dummy" connection prefix - Should use a raw socket to send an ICMP (Ping) packet
     add 21e6f78  Exposed a parseAddress method on the connection-adapter
     add a167e3e  Implemented an example using PLC4X and Edgent to publish PLC values directly to kafka
     add 1a6cbb6  Implemented an example using PLC4X and Edgent to publish PLC values directly to kafka
     add c78f052  Implemented an example using PLC4X and Edgent to publish PLC values directly to kafka
     add c97330a  PLC4X-29 - [S7] Implement PDU Fragmentation
     add a69e14e  PLC4X-29 - [S7] Implement PDU Fragmentation
     add e518156  Fixed some SonarQube complaints
     add 86da20c  Ported the entire project to use JUnit4
     add 98c0665  Ported the entire project to use JUnit4 - Fixed some invalidly ported assertions
     add d1c1e63  PLC4X-3 - Implement a testing framework for protocols
     add acd9f40  PLC4X-3 - Implement a testing framework for protocols
     add d260f0d  PLC4X-3 - Implement a testing framework for protocols
     add c451106  Changed the build to only do the sonar analysis on develop (Otherwise the commits on branches overwrite the develop results)
     add 2912001  Fixed some sonar findings.
     add 4f45070  Made jenkins run sonar and deploy snapshots on the master branch instead of "develop"
     add 6f76878  PLC4X-3 - Implement a testing framework for protocols
     add 1eae1c9  Improved test-coverage
     new 9a09ef4  Merge remote-tracking branch 'origin/master' into feature/Beckhoff_ADS_protocol
     new 6635fa7  post merge junit 4 migration

The 2 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.


Summary of changes:
 Jenkinsfile                                        |   6 +-
 .../java/examples/dummydriver/DummyDriver.java     |  12 +-
 .../dummydriver/connection/DummyConnection.java    |  11 +
 .../examples/dummydriver/netty/DummyProtocol.java  |  28 +-
 .../kafka-bridge/kafka-bridge.yml                  |  23 +-
 examples/{iotree => kafka-bridge}/pom.xml          |  44 ++-
 .../kafka-bridge/server.sh                         |  17 +-
 .../java/examples/kafkabridge/KafkaBridge.java     | 121 ++++++
 .../java/examples/kafkabridge/model/Address.java   |  39 +-
 .../examples/kafkabridge/model/Configuration.java  |  56 +++
 .../examples/kafkabridge/model/KafkaConfig.java    |  28 +-
 .../java/examples/kafkabridge/model/PlcConfig.java |  27 +-
 .../kafka-bridge/src/main}/resources/logback.xml   |   0
 examples/plclogger/pom.xml                         |   4 +
 .../plc4x/java/examples/plclogger/PlcLogger.java   |  74 +---
 examples/pom.xml                                   |   1 +
 .../java/org/apache/plc4x/camel/ConstantsTest.java |   8 +-
 .../org/apache/plc4x/camel/PLC4XComponentTest.java |  14 +-
 .../org/apache/plc4x/camel/PLC4XEndpointTest.java  |  25 +-
 .../org/apache/plc4x/camel/PLC4XProducerTest.java  |  20 +-
 integrations/apache-edgent/pom.xml                 |   7 +
 .../apache/plc4x/edgent/PlcConnectionAdapter.java  |   4 +
 .../plc4x/edgent/PlcConnectionAdapterTest.java     | 157 ++++----
 .../org/apache/plc4x/edgent/PlcFunctionsTest.java  |  11 +-
 .../apache/plc4x/edgent/mock/MockConnection.java   |  11 +-
 plc4j/api/pom.xml                                  |   6 +
 .../plc4x/java/api/connection/PlcConnection.java   |   7 +
 .../PlcUsernamePasswordAuthenticationTest.java     |  17 +-
 .../plc4x/java/api/connection/PlcReaderTest.java   |   7 +-
 .../plc4x/java/api/connection/PlcWriterTest.java   |   7 +-
 .../plc4x/java/api/messages/APIMessageTests.java   | 193 +++++-----
 .../java/api/messages/PlcReadRequestTest.java      |  32 +-
 .../java/api/messages/PlcReadResponseTest.java     |   8 +-
 .../plc4x/java/api/messages/PlcRequestTest.java    |  44 +--
 .../plc4x/java/api/messages/PlcResponseTest.java   |  50 +--
 .../java/api/messages/PlcWriteRequestTest.java     |  32 +-
 .../java/api/messages/PlcWriteResponseTest.java    |   8 +-
 .../specific/TypeSafePlcReadRequestTest.java       |  32 +-
 .../specific/TypeSafePlcReadResponseTest.java      |  26 +-
 .../specific/TypeSafePlcWriteRequestTest.java      |  30 +-
 .../specific/TypeSafePlcWriteResponseTest.java     |  20 +-
 plc4j/core/pom.xml                                 |   7 +
 .../apache/plc4x/java/PlcDriverManagerTest.java    |  27 +-
 .../java/ads/connection/ADSPlcConnection.java      |   8 +
 .../apache/plc4x/java/ads/ADSPlcDriverTest.java    |  38 +-
 .../java/ads/api/commands/types/LengthTest.java    |  28 +-
 .../ads/api/commands/types/ReadLengthTest.java     |  30 +-
 .../ads/api/commands/types/SampleSizeTest.java     |  29 +-
 .../java/ads/api/commands/types/SamplesTest.java   |  28 +-
 .../ads/api/commands/types/WriteLengthTest.java    |  29 +-
 .../java/ads/api/generic/types/AMSPortTest.java    |  29 +-
 .../java/ads/api/generic/types/DataLengthTest.java |  28 +-
 .../java/ads/api/generic/types/LengthTest.java     |  29 +-
 .../java/ads/connection/ADSPlcConnectionTests.java |  28 +-
 .../java/ads/util/ExtendWithTcpHexDumper.java      |  42 ---
 .../plc4x/java/ads/util/Junit5Backport.java}       |  26 +-
 .../apache/plc4x/java/ads/util/TcpHexDumper.java   |  66 +---
 plc4j/protocols/{s7 => driver-base}/pom.xml        |  50 ++-
 .../base/connection/AbstractPlcConnection.java     | 116 ++++++
 .../java/base/connection/ChannelFactory.java}      |  15 +-
 .../base/connection/TcpSocketChannelFactory.java   |  63 ++++
 .../java/base/connection/TestChannelFactory.java}  |  13 +-
 plc4j/protocols/pom.xml                            |   1 +
 plc4j/protocols/s7/pom.xml                         |  24 ++
 .../java/isotp/netty/model/types/TpduSize.java     |  40 +-
 .../java/org/apache/plc4x/java/s7/S7PlcDriver.java |  14 +-
 .../plc4x/java/s7/connection/S7PlcConnection.java  | 179 ++++-----
 .../plc4x/java/s7/netty/Plc4XS7Protocol.java       |   1 +
 .../org/apache/plc4x/java/s7/netty/S7Protocol.java |   2 +-
 .../s7/netty/model/types/HeaderErrorClass.java     |  15 +
 .../java/s7/netty/model/types/ParameterError.java  |  15 +
 .../java/isoontcp/netty/IsoOnTcpProtocolTest.java  |  37 +-
 .../plc4x/java/isotp/netty/IsoTPProtocolTest.java  | 405 +++++++++++----------
 .../java/isotp/netty/model/IsoTPMessageTests.java  |  21 +-
 .../isotp/netty/model/params/ParameterTests.java   |  36 +-
 .../netty/model/params/TsapParameterTests.java     |  42 +--
 .../isotp/netty/model/tpdus/IsotpModelTests.java   | 113 +++---
 .../isotp/netty/model/types/IsotpTypeTests.java    | 166 ++++++---
 .../plc4x/java/netty/events/S7StateTests.java      |  21 +-
 .../org/apache/plc4x/java/s7/S7PlcDriverTest.java  |  45 ++-
 .../apache/plc4x/java/s7/S7PlcReaderSample.java    |  99 +++--
 .../java/s7/connection/S7PlcConnectionIT.java      |  74 ++++
 .../java/s7/connection/S7PlcConnectionTests.java   |  79 ++--
 .../java/s7/connection/S7PlcTestConnection.java    | 189 ++++++++++
 .../apache/plc4x/java/s7/model/S7AddressTests.java |  39 +-
 .../plc4x/java/s7/netty/Plc4XS7ProtocolTest.java   |  83 +++--
 .../apache/plc4x/java/s7/netty/S7ProtocolTest.java |  15 +-
 .../s7/netty/model/messages/S7MessageTests.java    | 103 +++---
 .../s7/netty/model/params/S7ParameterTests.java    |  39 +-
 .../s7/netty/model/payloads/S7PayloadTests.java    |  29 +-
 .../java/s7/netty/model/types/S7TypeTests.java     | 119 +++---
 .../s7/connection/iso-tp-connect-response.pcap     | Bin 0 -> 116 bytes
 .../s7-setup-communication-response.pcap           | Bin 0 -> 121 bytes
 plc4j/utils/pom.xml                                |   1 +
 plc4j/utils/raw-sockets/pom.xml                    |   6 -
 .../plc4x/java/utils/rawsockets/RawSocket.java     |  28 +-
 .../utils/rawsockets/netty/RawSocketChannel.java   |  34 +-
 ...ketAddress.java => RawSocketChannelConfig.java} |  15 +-
 ...ketAddress.java => RawSocketChannelOption.java} |  14 +-
 plc4j/{api => utils/test-utils}/pom.xml            |  10 +-
 .../java/org/apache/plc4x/test/FastTests.java}     |   4 +-
 .../test-utils}/src/main/resources/logback.xml     |   2 +-
 pom.xml                                            |  87 ++---
 103 files changed, 2535 insertions(+), 1707 deletions(-)
 copy integrations/apache-camel/src/test/resources/META-INF/services/org.apache.plc4x.java.api.PlcDriver => examples/kafka-bridge/kafka-bridge.yml (58%)
 copy examples/{iotree => kafka-bridge}/pom.xml (64%)
 copy .mvn/wrapper/maven-wrapper.properties => examples/kafka-bridge/server.sh (56%)
 mode change 100644 => 100755
 create mode 100644 examples/kafka-bridge/src/main/java/org/apache/plc4x/java/examples/kafkabridge/KafkaBridge.java
 copy plc4j/api/src/main/java/org/apache/plc4x/java/api/messages/items/ReadRequestItem.java => examples/kafka-bridge/src/main/java/org/apache/plc4x/java/examples/kafkabridge/model/Address.java (58%)
 create mode 100644 examples/kafka-bridge/src/main/java/org/apache/plc4x/java/examples/kafkabridge/model/Configuration.java
 copy plc4j/api/src/main/java/org/apache/plc4x/java/api/exceptions/PlcConnectionException.java => examples/kafka-bridge/src/main/java/org/apache/plc4x/java/examples/kafkabridge/model/KafkaConfig.java (56%)
 copy plc4j/protocols/s7/src/main/java/org/apache/plc4x/java/isotp/netty/model/tpdus/CustomTpdu.java => examples/kafka-bridge/src/main/java/org/apache/plc4x/java/examples/kafkabridge/model/PlcConfig.java (62%)
 copy {plc4j/protocols/s7/src/test => examples/kafka-bridge/src/main}/resources/logback.xml (100%)
 delete mode 100644 plc4j/protocols/ads/src/test/java/org/apache/plc4x/java/ads/util/ExtendWithTcpHexDumper.java
 copy plc4j/protocols/ads/src/{main/java/org/apache/plc4x/java/ads/api/util/ByteReadableUtils.java => test/java/org/apache/plc4x/java/ads/util/Junit5Backport.java} (63%)
 copy plc4j/protocols/{s7 => driver-base}/pom.xml (65%)
 create mode 100644 plc4j/protocols/driver-base/src/main/java/org/apache/plc4x/java/base/connection/AbstractPlcConnection.java
 copy plc4j/protocols/{s7/src/main/java/org/apache/plc4x/java/s7/netty/model/params/CpuServicesParameter.java => driver-base/src/main/java/org/apache/plc4x/java/base/connection/ChannelFactory.java} (70%)
 create mode 100644 plc4j/protocols/driver-base/src/main/java/org/apache/plc4x/java/base/connection/TcpSocketChannelFactory.java
 copy plc4j/protocols/{s7/src/main/java/org/apache/plc4x/java/s7/netty/model/params/CpuServicesParameter.java => driver-base/src/test/java/org/apache/plc4x/java/base/connection/TestChannelFactory.java} (69%)
 create mode 100644 plc4j/protocols/s7/src/test/java/org/apache/plc4x/java/s7/connection/S7PlcConnectionIT.java
 create mode 100644 plc4j/protocols/s7/src/test/java/org/apache/plc4x/java/s7/connection/S7PlcTestConnection.java
 create mode 100644 plc4j/protocols/s7/src/test/resources/org/apache/plc4x/java/s7/connection/iso-tp-connect-response.pcap
 create mode 100644 plc4j/protocols/s7/src/test/resources/org/apache/plc4x/java/s7/connection/s7-setup-communication-response.pcap
 copy plc4j/utils/raw-sockets/src/main/java/org/apache/plc4x/java/utils/rawsockets/netty/{RawSocketAddress.java => RawSocketChannelConfig.java} (69%)
 copy plc4j/utils/raw-sockets/src/main/java/org/apache/plc4x/java/utils/rawsockets/netty/{RawSocketAddress.java => RawSocketChannelOption.java} (74%)
 copy plc4j/{api => utils/test-utils}/pom.xml (80%)
 copy plc4j/{protocols/s7/src/test/java/org/apache/plc4x/java/netty/NettyTestBase.java => utils/test-utils/src/main/java/org/apache/plc4x/test/FastTests.java} (92%)
 copy {examples/plclogger => plc4j/utils/test-utils}/src/main/resources/logback.xml (97%)

-- 
To stop receiving notification emails like this one, please contact
sruehl@apache.org.

[incubator-plc4x] 02/02: post merge junit 4 migration

Posted by sr...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

sruehl pushed a commit to branch feature/Beckhoff_ADS_protocol
in repository https://gitbox.apache.org/repos/asf/incubator-plc4x.git

commit 6635fa77b43a10c44a9fa3c5eb50684a2c52aca3
Author: Sebastian Rühl <sr...@apache.org>
AuthorDate: Thu Feb 15 17:46:25 2018 +0100

    post merge junit 4 migration
---
 .../java/ads/connection/ADSPlcConnection.java      |  8 +++
 .../apache/plc4x/java/ads/ADSPlcDriverTest.java    | 38 +++++--------
 .../java/ads/api/commands/types/LengthTest.java    | 28 ++++-----
 .../ads/api/commands/types/ReadLengthTest.java     | 30 +++++-----
 .../ads/api/commands/types/SampleSizeTest.java     | 29 +++++-----
 .../java/ads/api/commands/types/SamplesTest.java   | 28 ++++-----
 .../ads/api/commands/types/WriteLengthTest.java    | 29 +++++-----
 .../java/ads/api/generic/types/AMSPortTest.java    | 29 +++++-----
 .../java/ads/api/generic/types/DataLengthTest.java | 28 ++++-----
 .../java/ads/api/generic/types/LengthTest.java     | 29 +++++-----
 .../java/ads/connection/ADSPlcConnectionTests.java | 28 ++++-----
 ...ndWithTcpHexDumper.java => Junit5Backport.java} | 33 +++++------
 .../apache/plc4x/java/ads/util/TcpHexDumper.java   | 66 +++++++---------------
 13 files changed, 195 insertions(+), 208 deletions(-)

diff --git a/plc4j/protocols/ads/src/main/java/org/apache/plc4x/java/ads/connection/ADSPlcConnection.java b/plc4j/protocols/ads/src/main/java/org/apache/plc4x/java/ads/connection/ADSPlcConnection.java
index ef584c0..3e6c9ce 100644
--- a/plc4j/protocols/ads/src/main/java/org/apache/plc4x/java/ads/connection/ADSPlcConnection.java
+++ b/plc4j/protocols/ads/src/main/java/org/apache/plc4x/java/ads/connection/ADSPlcConnection.java
@@ -57,6 +57,7 @@ public class ADSPlcConnection extends AbstractPlcConnection implements PlcReader
 
     private EventLoopGroup workerGroup;
     private Channel channel;
+    private boolean connected;
 
     public ADSPlcConnection(String hostName, AMSNetId targetAmsNetId, AMSPort targetAmsPort) {
         this(hostName, targetAmsNetId, targetAmsPort, generateAMSNetId(), generateAMSPort());
@@ -78,6 +79,7 @@ public class ADSPlcConnection extends AbstractPlcConnection implements PlcReader
         this.targetAmsPort = targetAmsPort;
         this.sourceAmsNetId = sourceAmsNetId;
         this.sourceAmsPort = sourceAmsPort;
+        connected = false;
     }
 
     public String getHostName() {
@@ -126,6 +128,7 @@ public class ADSPlcConnection extends AbstractPlcConnection implements PlcReader
             f.awaitUninterruptibly();
             // Wait till the session is finished initializing.
             channel = f.channel();
+            connected = true;
         } catch (UnknownHostException e) {
             throw new PlcConnectionException("Unknown Host " + hostName, e);
         } catch (InterruptedException e) {
@@ -135,6 +138,11 @@ public class ADSPlcConnection extends AbstractPlcConnection implements PlcReader
     }
 
     @Override
+    public boolean isConnected() {
+        return connected;
+    }
+
+    @Override
     public void close() throws Exception {
         workerGroup.shutdownGracefully();
     }
diff --git a/plc4j/protocols/ads/src/test/java/org/apache/plc4x/java/ads/ADSPlcDriverTest.java b/plc4j/protocols/ads/src/test/java/org/apache/plc4x/java/ads/ADSPlcDriverTest.java
index ae19173..f62376a 100644
--- a/plc4j/protocols/ads/src/test/java/org/apache/plc4x/java/ads/ADSPlcDriverTest.java
+++ b/plc4j/protocols/ads/src/test/java/org/apache/plc4x/java/ads/ADSPlcDriverTest.java
@@ -21,34 +21,27 @@ package org.apache.plc4x.java.ads;
 
 import org.apache.plc4x.java.PlcDriverManager;
 import org.apache.plc4x.java.ads.connection.ADSPlcConnection;
-import org.apache.plc4x.java.ads.util.ExtendWithTcpHexDumper;
+import org.apache.plc4x.java.ads.util.TcpHexDumper;
 import org.apache.plc4x.java.api.exceptions.PlcConnectionException;
 import org.apache.plc4x.java.api.exceptions.PlcException;
-import org.junit.jupiter.api.Assertions;
-import org.junit.jupiter.api.Tag;
-import org.junit.jupiter.api.Test;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
+import org.junit.Rule;
+import org.junit.Test;
 
-@ExtendWithTcpHexDumper(shutdownTimeout = 3)
-public class ADSPlcDriverTest {
-
-    private static final Logger logger = LoggerFactory.getLogger(ADSPlcDriverTest.class);
+import static org.apache.plc4x.java.ads.util.Junit5Backport.assertThrows;
+import static org.junit.Assert.assertEquals;
 
-    int usedPort;
+public class ADSPlcDriverTest {
 
-    ADSPlcDriverTest(int port) {
-        usedPort = port;
-    }
+    @Rule
+    public TcpHexDumper tcpHexDumper = new TcpHexDumper(0);
 
     @Test
-    @Tag("fast")
-    void getConnection() throws Exception {
+    public void getConnection() throws Exception {
         ADSPlcConnection adsConnection = (ADSPlcConnection)
-            new PlcDriverManager().getConnection("ads://localhost:" + usedPort + "/0.0.0.0.0.0:13");
-        Assertions.assertEquals(adsConnection.getHostName(), "localhost");
-        Assertions.assertEquals(adsConnection.getTargetAmsNetId().toString(), "0.0.0.0.0.0");
-        Assertions.assertEquals(adsConnection.getTargetAmsPort().toString(), "13");
+            new PlcDriverManager().getConnection("ads://localhost:" + tcpHexDumper.getPort() + "/0.0.0.0.0.0:13");
+        assertEquals(adsConnection.getHostName(), "localhost");
+        assertEquals(adsConnection.getTargetAmsNetId().toString(), "0.0.0.0.0.0");
+        assertEquals(adsConnection.getTargetAmsPort().toString(), "13");
         adsConnection.close();
     }
 
@@ -58,9 +51,8 @@ public class ADSPlcDriverTest {
      * @throws PlcException something went wrong
      */
     @Test
-    @Tag("fast")
-    void getConnectionInvalidUrl() throws PlcException {
-        Assertions.assertThrows(PlcConnectionException.class,
+    public void getConnectionInvalidUrl() throws PlcException {
+        assertThrows(PlcConnectionException.class,
             () -> new PlcDriverManager().getConnection("ads://localhost/hurz/2"));
     }
 
diff --git a/plc4j/protocols/ads/src/test/java/org/apache/plc4x/java/ads/api/commands/types/LengthTest.java b/plc4j/protocols/ads/src/test/java/org/apache/plc4x/java/ads/api/commands/types/LengthTest.java
index c44cad4..bb25c22 100644
--- a/plc4j/protocols/ads/src/test/java/org/apache/plc4x/java/ads/api/commands/types/LengthTest.java
+++ b/plc4j/protocols/ads/src/test/java/org/apache/plc4x/java/ads/api/commands/types/LengthTest.java
@@ -19,38 +19,40 @@
 package org.apache.plc4x.java.ads.api.commands.types;
 
 import org.apache.commons.codec.binary.Hex;
-import org.junit.jupiter.api.Assertions;
-import org.junit.jupiter.api.Test;
+import org.junit.Test;
 
-class LengthTest {
+import static org.apache.plc4x.java.ads.util.Junit5Backport.assertThrows;
+import static org.junit.Assert.assertEquals;
+
+public class LengthTest {
 
     byte NULL_BYTE = 0x0;
 
     @Test
-    void ofBytes() {
-        Assertions.assertEquals("0", Length.of(NULL_BYTE, NULL_BYTE, NULL_BYTE, NULL_BYTE).toString());
-        Assertions.assertThrows(IllegalArgumentException.class, () -> Length.of(NULL_BYTE, NULL_BYTE, NULL_BYTE, NULL_BYTE, NULL_BYTE));
+    public void ofBytes() {
+        assertEquals("0", Length.of(NULL_BYTE, NULL_BYTE, NULL_BYTE, NULL_BYTE).toString());
+        assertThrows(IllegalArgumentException.class, () -> Length.of(NULL_BYTE, NULL_BYTE, NULL_BYTE, NULL_BYTE, NULL_BYTE));
     }
 
     @Test
-    void ofLong() {
+    public void ofLong() {
         assertByte(Length.of(1), "0x01000000");
         assertByte(Length.of(65535), "0xffff0000");
-        Assertions.assertThrows(IllegalArgumentException.class, () -> Length.of(-1));
-        Assertions.assertThrows(IllegalArgumentException.class, () -> Length.of(4294967296L));
+        assertThrows(IllegalArgumentException.class, () -> Length.of(-1));
+        assertThrows(IllegalArgumentException.class, () -> Length.of(4294967296L));
     }
 
     @Test
-    void ofString() {
+    public void ofString() {
         assertByte(Length.of("1"), "0x01000000");
     }
 
     @Test
-    void testToString() {
-        Assertions.assertEquals(Length.of("1").toString(), "1");
+    public void testToString() {
+        assertEquals(Length.of("1").toString(), "1");
     }
 
     void assertByte(Length actual, String expected) {
-        Assertions.assertEquals(expected, "0x" + Hex.encodeHexString(actual.getBytes()));
+        assertEquals(expected, "0x" + Hex.encodeHexString(actual.getBytes()));
     }
 }
\ No newline at end of file
diff --git a/plc4j/protocols/ads/src/test/java/org/apache/plc4x/java/ads/api/commands/types/ReadLengthTest.java b/plc4j/protocols/ads/src/test/java/org/apache/plc4x/java/ads/api/commands/types/ReadLengthTest.java
index a1a2442..1858713 100644
--- a/plc4j/protocols/ads/src/test/java/org/apache/plc4x/java/ads/api/commands/types/ReadLengthTest.java
+++ b/plc4j/protocols/ads/src/test/java/org/apache/plc4x/java/ads/api/commands/types/ReadLengthTest.java
@@ -19,37 +19,41 @@
 package org.apache.plc4x.java.ads.api.commands.types;
 
 import org.apache.commons.codec.binary.Hex;
-import org.junit.jupiter.api.Assertions;
-import org.junit.jupiter.api.Test;
+import org.junit.Test;
+
+import static org.apache.plc4x.java.ads.util.Junit5Backport.assertThrows;
+import static org.junit.Assert.assertEquals;
+
+
+public class ReadLengthTest {
 
-class ReadLengthTest {
     byte NULL_BYTE = 0x0;
 
     @Test
-    void ofBytes() {
-        Assertions.assertEquals("0", ReadLength.of(NULL_BYTE, NULL_BYTE, NULL_BYTE, NULL_BYTE).toString());
-        Assertions.assertThrows(IllegalArgumentException.class, () -> ReadLength.of(NULL_BYTE, NULL_BYTE, NULL_BYTE, NULL_BYTE, NULL_BYTE));
+    public void ofBytes() {
+        assertEquals("0", ReadLength.of(NULL_BYTE, NULL_BYTE, NULL_BYTE, NULL_BYTE).toString());
+        assertThrows(IllegalArgumentException.class, () -> ReadLength.of(NULL_BYTE, NULL_BYTE, NULL_BYTE, NULL_BYTE, NULL_BYTE));
     }
 
     @Test
-    void ofLong() {
+    public void ofLong() {
         assertByte(ReadLength.of(1), "0x01000000");
         assertByte(ReadLength.of(65535), "0xffff0000");
-        Assertions.assertThrows(IllegalArgumentException.class, () -> ReadLength.of(-1));
-        Assertions.assertThrows(IllegalArgumentException.class, () -> ReadLength.of(4294967296L));
+        assertThrows(IllegalArgumentException.class, () -> ReadLength.of(-1));
+        assertThrows(IllegalArgumentException.class, () -> ReadLength.of(4294967296L));
     }
 
     @Test
-    void ofString() {
+    public void ofString() {
         assertByte(ReadLength.of("1"), "0x01000000");
     }
 
     @Test
-    void testToString() {
-        Assertions.assertEquals(ReadLength.of("1").toString(), "1");
+    public void testToString() {
+        assertEquals(ReadLength.of("1").toString(), "1");
     }
 
     void assertByte(ReadLength actual, String expected) {
-        Assertions.assertEquals(expected, "0x" + Hex.encodeHexString(actual.getBytes()));
+        assertEquals(expected, "0x" + Hex.encodeHexString(actual.getBytes()));
     }
 }
\ No newline at end of file
diff --git a/plc4j/protocols/ads/src/test/java/org/apache/plc4x/java/ads/api/commands/types/SampleSizeTest.java b/plc4j/protocols/ads/src/test/java/org/apache/plc4x/java/ads/api/commands/types/SampleSizeTest.java
index a80a28a..22a128f 100644
--- a/plc4j/protocols/ads/src/test/java/org/apache/plc4x/java/ads/api/commands/types/SampleSizeTest.java
+++ b/plc4j/protocols/ads/src/test/java/org/apache/plc4x/java/ads/api/commands/types/SampleSizeTest.java
@@ -19,40 +19,41 @@
 package org.apache.plc4x.java.ads.api.commands.types;
 
 import org.apache.commons.codec.binary.Hex;
-import org.junit.jupiter.api.Assertions;
-import org.junit.jupiter.api.Test;
+import org.junit.Test;
 
-class SampleSizeTest {
+import static org.apache.plc4x.java.ads.util.Junit5Backport.assertThrows;
+import static org.junit.Assert.assertEquals;
+
+public class SampleSizeTest {
 
     byte NULL_BYTE = 0x0;
 
     @Test
-    void ofBytes() {
-        Assertions.assertEquals("0", SampleSize.of(NULL_BYTE, NULL_BYTE, NULL_BYTE, NULL_BYTE).toString());
-        Assertions.assertThrows(IllegalArgumentException.class, () -> SampleSize.of(NULL_BYTE, NULL_BYTE, NULL_BYTE, NULL_BYTE, NULL_BYTE));
+    public void ofBytes() {
+        assertEquals("0", SampleSize.of(NULL_BYTE, NULL_BYTE, NULL_BYTE, NULL_BYTE).toString());
+        assertThrows(IllegalArgumentException.class, () -> SampleSize.of(NULL_BYTE, NULL_BYTE, NULL_BYTE, NULL_BYTE, NULL_BYTE));
     }
 
     @Test
-    void ofLong() {
+    public void ofLong() {
         assertByte(SampleSize.of(1), "0x01000000");
         assertByte(SampleSize.of(65535), "0xffff0000");
-        Assertions.assertThrows(IllegalArgumentException.class, () -> SampleSize.of(-1));
-        Assertions.assertThrows(IllegalArgumentException.class, () -> SampleSize.of(4294967296L));
+        assertThrows(IllegalArgumentException.class, () -> SampleSize.of(-1));
+        assertThrows(IllegalArgumentException.class, () -> SampleSize.of(4294967296L));
     }
 
     @Test
-    void ofString() {
+    public void ofString() {
         assertByte(SampleSize.of("1"), "0x01000000");
     }
 
     @Test
-    void testToString() {
-        Assertions.assertEquals(SampleSize.of("1").toString(), "1");
+    public void testToString() {
+        assertEquals(SampleSize.of("1").toString(), "1");
     }
 
     void assertByte(SampleSize actual, String expected) {
-        Assertions.assertEquals(expected, "0x" + Hex.encodeHexString(actual.getBytes()));
+        assertEquals(expected, "0x" + Hex.encodeHexString(actual.getBytes()));
     }
 
-
 }
\ No newline at end of file
diff --git a/plc4j/protocols/ads/src/test/java/org/apache/plc4x/java/ads/api/commands/types/SamplesTest.java b/plc4j/protocols/ads/src/test/java/org/apache/plc4x/java/ads/api/commands/types/SamplesTest.java
index 49ef8d2..1434ec7 100644
--- a/plc4j/protocols/ads/src/test/java/org/apache/plc4x/java/ads/api/commands/types/SamplesTest.java
+++ b/plc4j/protocols/ads/src/test/java/org/apache/plc4x/java/ads/api/commands/types/SamplesTest.java
@@ -19,39 +19,41 @@
 package org.apache.plc4x.java.ads.api.commands.types;
 
 import org.apache.commons.codec.binary.Hex;
-import org.junit.jupiter.api.Assertions;
-import org.junit.jupiter.api.Test;
+import org.junit.Test;
 
-class SamplesTest {
+import static org.apache.plc4x.java.ads.util.Junit5Backport.assertThrows;
+import static org.junit.Assert.assertEquals;
+
+public class SamplesTest {
 
     byte NULL_BYTE = 0x0;
 
     @Test
-    void ofBytes() {
-        Assertions.assertEquals("0", Samples.of(NULL_BYTE, NULL_BYTE, NULL_BYTE, NULL_BYTE).toString());
-        Assertions.assertThrows(IllegalArgumentException.class, () -> Samples.of(NULL_BYTE, NULL_BYTE, NULL_BYTE, NULL_BYTE, NULL_BYTE));
+    public void ofBytes() {
+        assertEquals("0", Samples.of(NULL_BYTE, NULL_BYTE, NULL_BYTE, NULL_BYTE).toString());
+        assertThrows(IllegalArgumentException.class, () -> Samples.of(NULL_BYTE, NULL_BYTE, NULL_BYTE, NULL_BYTE, NULL_BYTE));
     }
 
     @Test
-    void ofLong() {
+    public void ofLong() {
         assertByte(Samples.of(1), "0x01000000");
         assertByte(Samples.of(65535), "0xffff0000");
-        Assertions.assertThrows(IllegalArgumentException.class, () -> Samples.of(-1));
-        Assertions.assertThrows(IllegalArgumentException.class, () -> Samples.of(4294967296L));
+        assertThrows(IllegalArgumentException.class, () -> Samples.of(-1));
+        assertThrows(IllegalArgumentException.class, () -> Samples.of(4294967296L));
     }
 
     @Test
-    void ofString() {
+    public void ofString() {
         assertByte(Samples.of("1"), "0x01000000");
     }
 
     @Test
-    void testToString() {
-        Assertions.assertEquals(Samples.of("1").toString(), "1");
+    public void testToString() {
+        assertEquals(Samples.of("1").toString(), "1");
     }
 
     void assertByte(Samples actual, String expected) {
-        Assertions.assertEquals(expected, "0x" + Hex.encodeHexString(actual.getBytes()));
+        assertEquals(expected, "0x" + Hex.encodeHexString(actual.getBytes()));
     }
 
 }
\ No newline at end of file
diff --git a/plc4j/protocols/ads/src/test/java/org/apache/plc4x/java/ads/api/commands/types/WriteLengthTest.java b/plc4j/protocols/ads/src/test/java/org/apache/plc4x/java/ads/api/commands/types/WriteLengthTest.java
index d6780e2..087dc92 100644
--- a/plc4j/protocols/ads/src/test/java/org/apache/plc4x/java/ads/api/commands/types/WriteLengthTest.java
+++ b/plc4j/protocols/ads/src/test/java/org/apache/plc4x/java/ads/api/commands/types/WriteLengthTest.java
@@ -19,39 +19,42 @@
 package org.apache.plc4x.java.ads.api.commands.types;
 
 import org.apache.commons.codec.binary.Hex;
-import org.junit.jupiter.api.Assertions;
-import org.junit.jupiter.api.Test;
+import org.junit.Test;
 
-class WriteLengthTest {
+import static org.apache.plc4x.java.ads.util.Junit5Backport.assertThrows;
+import static org.junit.Assert.assertEquals;
+
+
+public class WriteLengthTest {
 
     byte NULL_BYTE = 0x0;
 
     @Test
-    void ofBytes() {
-        Assertions.assertEquals("0", WriteLength.of(NULL_BYTE, NULL_BYTE, NULL_BYTE, NULL_BYTE).toString());
-        Assertions.assertThrows(IllegalArgumentException.class, () -> WriteLength.of(NULL_BYTE, NULL_BYTE, NULL_BYTE, NULL_BYTE, NULL_BYTE));
+    public void ofBytes() {
+        assertEquals("0", WriteLength.of(NULL_BYTE, NULL_BYTE, NULL_BYTE, NULL_BYTE).toString());
+        assertThrows(IllegalArgumentException.class, () -> WriteLength.of(NULL_BYTE, NULL_BYTE, NULL_BYTE, NULL_BYTE, NULL_BYTE));
     }
 
     @Test
-    void ofLong() {
+    public void ofLong() {
         assertByte(WriteLength.of(1), "0x01000000");
         assertByte(WriteLength.of(65535), "0xffff0000");
-        Assertions.assertThrows(IllegalArgumentException.class, () -> WriteLength.of(-1));
-        Assertions.assertThrows(IllegalArgumentException.class, () -> WriteLength.of(4294967296L));
+        assertThrows(IllegalArgumentException.class, () -> WriteLength.of(-1));
+        assertThrows(IllegalArgumentException.class, () -> WriteLength.of(4294967296L));
     }
 
     @Test
-    void ofString() {
+    public void ofString() {
         assertByte(WriteLength.of("1"), "0x01000000");
     }
 
     @Test
-    void testToString() {
-        Assertions.assertEquals(WriteLength.of("1").toString(), "1");
+    public void testToString() {
+        assertEquals(WriteLength.of("1").toString(), "1");
     }
 
     void assertByte(WriteLength actual, String expected) {
-        Assertions.assertEquals(expected, "0x" + Hex.encodeHexString(actual.getBytes()));
+        assertEquals(expected, "0x" + Hex.encodeHexString(actual.getBytes()));
     }
 
 
diff --git a/plc4j/protocols/ads/src/test/java/org/apache/plc4x/java/ads/api/generic/types/AMSPortTest.java b/plc4j/protocols/ads/src/test/java/org/apache/plc4x/java/ads/api/generic/types/AMSPortTest.java
index 1845349..12ee66b 100644
--- a/plc4j/protocols/ads/src/test/java/org/apache/plc4x/java/ads/api/generic/types/AMSPortTest.java
+++ b/plc4j/protocols/ads/src/test/java/org/apache/plc4x/java/ads/api/generic/types/AMSPortTest.java
@@ -19,38 +19,41 @@
 package org.apache.plc4x.java.ads.api.generic.types;
 
 import org.apache.commons.codec.binary.Hex;
-import org.junit.jupiter.api.Assertions;
-import org.junit.jupiter.api.Test;
+import org.junit.Test;
 
-class AMSPortTest {
+import static org.apache.plc4x.java.ads.util.Junit5Backport.assertThrows;
+import static org.junit.Assert.assertEquals;
+
+
+public class AMSPortTest {
 
     byte NULL_BYTE = 0x0;
 
     @Test
-    void ofBytes() {
-        Assertions.assertEquals("0", AMSPort.of(NULL_BYTE, NULL_BYTE).toString());
-        Assertions.assertThrows(IllegalArgumentException.class, () -> AMSPort.of(NULL_BYTE, NULL_BYTE, NULL_BYTE));
+    public void ofBytes() {
+        assertEquals("0", AMSPort.of(NULL_BYTE, NULL_BYTE).toString());
+        assertThrows(IllegalArgumentException.class, () -> AMSPort.of(NULL_BYTE, NULL_BYTE, NULL_BYTE));
     }
 
     @Test
-    void ofInt() {
+    public void ofInt() {
         assertByte(AMSPort.of(1), "0x0100");
         assertByte(AMSPort.of(65535), "0xffff");
-        Assertions.assertThrows(IllegalArgumentException.class, () -> AMSPort.of(-1));
-        Assertions.assertThrows(IllegalArgumentException.class, () -> AMSPort.of(65536));
+        assertThrows(IllegalArgumentException.class, () -> AMSPort.of(-1));
+        assertThrows(IllegalArgumentException.class, () -> AMSPort.of(65536));
     }
 
     @Test
-    void ofString() {
+    public void ofString() {
         assertByte(AMSPort.of("1"), "0x0100");
     }
 
     @Test
-    void testToString() {
-        Assertions.assertEquals(AMSPort.of("1").toString(), "1");
+    public void testToString() {
+        assertEquals(AMSPort.of("1").toString(), "1");
     }
 
     void assertByte(AMSPort actual, String expected) {
-        Assertions.assertEquals(expected, "0x" + Hex.encodeHexString(actual.getBytes()));
+        assertEquals(expected, "0x" + Hex.encodeHexString(actual.getBytes()));
     }
 }
\ No newline at end of file
diff --git a/plc4j/protocols/ads/src/test/java/org/apache/plc4x/java/ads/api/generic/types/DataLengthTest.java b/plc4j/protocols/ads/src/test/java/org/apache/plc4x/java/ads/api/generic/types/DataLengthTest.java
index aafab4a..fd5e6d0 100644
--- a/plc4j/protocols/ads/src/test/java/org/apache/plc4x/java/ads/api/generic/types/DataLengthTest.java
+++ b/plc4j/protocols/ads/src/test/java/org/apache/plc4x/java/ads/api/generic/types/DataLengthTest.java
@@ -19,40 +19,42 @@
 package org.apache.plc4x.java.ads.api.generic.types;
 
 import org.apache.commons.codec.binary.Hex;
-import org.junit.jupiter.api.Assertions;
-import org.junit.jupiter.api.Test;
+import org.junit.Test;
 
+import static org.apache.plc4x.java.ads.util.Junit5Backport.assertThrows;
+import static org.junit.Assert.assertEquals;
 
-class DataLengthTest {
+
+public class DataLengthTest {
 
     byte NULL_BYTE = 0x0;
 
     @Test
-    void ofBytes() {
-        Assertions.assertEquals("0", DataLength.of(NULL_BYTE, NULL_BYTE, NULL_BYTE, NULL_BYTE).toString());
-        Assertions.assertThrows(IllegalArgumentException.class, () -> DataLength.of(NULL_BYTE, NULL_BYTE, NULL_BYTE, NULL_BYTE, NULL_BYTE));
+    public void ofBytes() {
+        assertEquals("0", DataLength.of(NULL_BYTE, NULL_BYTE, NULL_BYTE, NULL_BYTE).toString());
+        assertThrows(IllegalArgumentException.class, () -> DataLength.of(NULL_BYTE, NULL_BYTE, NULL_BYTE, NULL_BYTE, NULL_BYTE));
     }
 
     @Test
-    void ofLong() {
+    public void ofLong() {
         assertByte(DataLength.of(1), "0x01000000");
         assertByte(DataLength.of(65535), "0xffff0000");
-        Assertions.assertThrows(IllegalArgumentException.class, () -> DataLength.of(-1));
-        Assertions.assertThrows(IllegalArgumentException.class, () -> DataLength.of(4294967296L));
+        assertThrows(IllegalArgumentException.class, () -> DataLength.of(-1));
+        assertThrows(IllegalArgumentException.class, () -> DataLength.of(4294967296L));
     }
 
     @Test
-    void ofString() {
+    public void ofString() {
         assertByte(DataLength.of("1"), "0x01000000");
     }
 
     @Test
-    void testToString() {
-        Assertions.assertEquals(DataLength.of("1").toString(), "1");
+    public void testToString() {
+        assertEquals(DataLength.of("1").toString(), "1");
     }
 
     void assertByte(DataLength actual, String expected) {
-        Assertions.assertEquals(expected, "0x" + Hex.encodeHexString(actual.getBytes()));
+        assertEquals(expected, "0x" + Hex.encodeHexString(actual.getBytes()));
     }
 
 
diff --git a/plc4j/protocols/ads/src/test/java/org/apache/plc4x/java/ads/api/generic/types/LengthTest.java b/plc4j/protocols/ads/src/test/java/org/apache/plc4x/java/ads/api/generic/types/LengthTest.java
index 97dab3f..5648e18 100644
--- a/plc4j/protocols/ads/src/test/java/org/apache/plc4x/java/ads/api/generic/types/LengthTest.java
+++ b/plc4j/protocols/ads/src/test/java/org/apache/plc4x/java/ads/api/generic/types/LengthTest.java
@@ -20,38 +20,41 @@ package org.apache.plc4x.java.ads.api.generic.types;
 
 
 import org.apache.commons.codec.binary.Hex;
-import org.junit.jupiter.api.Assertions;
-import org.junit.jupiter.api.Test;
+import org.junit.Test;
 
-class LengthTest {
+import static org.apache.plc4x.java.ads.util.Junit5Backport.assertThrows;
+import static org.junit.Assert.assertEquals;
+
+
+public class LengthTest {
     byte NULL_BYTE = 0x0;
 
     @Test
-    void ofBytes() {
-        Assertions.assertEquals("0", Length.of(NULL_BYTE, NULL_BYTE, NULL_BYTE, NULL_BYTE).toString());
-        Assertions.assertThrows(IllegalArgumentException.class, () -> Length.of(NULL_BYTE, NULL_BYTE, NULL_BYTE, NULL_BYTE, NULL_BYTE));
+    public void ofBytes() {
+        assertEquals("0", Length.of(NULL_BYTE, NULL_BYTE, NULL_BYTE, NULL_BYTE).toString());
+        assertThrows(IllegalArgumentException.class, () -> Length.of(NULL_BYTE, NULL_BYTE, NULL_BYTE, NULL_BYTE, NULL_BYTE));
     }
 
     @Test
-    void ofLong() {
+    public void ofLong() {
         assertByte(Length.of(1), "0x01000000");
         assertByte(Length.of(65535), "0xffff0000");
-        Assertions.assertThrows(IllegalArgumentException.class, () -> Length.of(-1));
-        Assertions.assertThrows(IllegalArgumentException.class, () -> Length.of(4294967296L));
+        assertThrows(IllegalArgumentException.class, () -> Length.of(-1));
+        assertThrows(IllegalArgumentException.class, () -> Length.of(4294967296L));
     }
 
     @Test
-    void ofString() {
+    public void ofString() {
         assertByte(Length.of("1"), "0x01000000");
     }
 
     @Test
-    void testToString() {
-        Assertions.assertEquals(Length.of("1").toString(), "1");
+    public void testToString() {
+        assertEquals(Length.of("1").toString(), "1");
     }
 
     void assertByte(Length actual, String expected) {
-        Assertions.assertEquals(expected, "0x" + Hex.encodeHexString(actual.getBytes()));
+        assertEquals(expected, "0x" + Hex.encodeHexString(actual.getBytes()));
     }
 
 }
\ No newline at end of file
diff --git a/plc4j/protocols/ads/src/test/java/org/apache/plc4x/java/ads/connection/ADSPlcConnectionTests.java b/plc4j/protocols/ads/src/test/java/org/apache/plc4x/java/ads/connection/ADSPlcConnectionTests.java
index 78d2813..5045643 100644
--- a/plc4j/protocols/ads/src/test/java/org/apache/plc4x/java/ads/connection/ADSPlcConnectionTests.java
+++ b/plc4j/protocols/ads/src/test/java/org/apache/plc4x/java/ads/connection/ADSPlcConnectionTests.java
@@ -22,44 +22,44 @@ package org.apache.plc4x.java.ads.connection;
 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.ads.model.ADSAddress;
-import org.junit.jupiter.api.AfterEach;
-import org.junit.jupiter.api.BeforeEach;
-import org.junit.jupiter.api.Test;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
 
-import static org.junit.jupiter.api.Assertions.*;
+import static org.junit.Assert.*;
 
-class ADSPlcConnectionTests {
+public class ADSPlcConnectionTests {
 
     private ADSPlcConnection adsPlcConnection;
 
-    @BeforeEach
-    void setUp() {
+    @Before
+    public void setUp() {
         adsPlcConnection = new ADSPlcConnection("localhost", AMSNetId.of("0.0.0.0.0.0"), AMSPort.of(13));
     }
 
-    @AfterEach
-    void tearDown() {
+    @After
+    public void tearDown() {
         adsPlcConnection = null;
     }
 
     @Test
-    void initialState() {
-        assertTrue(adsPlcConnection.getHostName().equalsIgnoreCase("localhost"), "Hostname is incorrect");
+    public void initialState() {
+        assertTrue("Hostname is incorrect", adsPlcConnection.getHostName().equalsIgnoreCase("localhost"));
         assertEquals(adsPlcConnection.getTargetAmsNetId().toString(), "0.0.0.0.0.0");
         assertEquals(adsPlcConnection.getTargetAmsPort().toString(), "13");
     }
 
     @Test
-    void emptyParseAddress() throws Exception {
+    public void emptyParseAddress() throws Exception {
         try {
             adsPlcConnection.parseAddress("");
         } catch (IllegalArgumentException exception) {
-            assertTrue(exception.getMessage().startsWith("address  doesn't match "), "Unexpected exception");
+            assertTrue("Unexpected exception", exception.getMessage().startsWith("address  doesn't match "));
         }
     }
 
     @Test
-    void parseAddress() throws Exception {
+    public void parseAddress() throws Exception {
         try {
             ADSAddress address = (ADSAddress) adsPlcConnection.parseAddress("1/1");
             assertEquals(address.getIndexGroup(), 1);
diff --git a/plc4j/protocols/ads/src/test/java/org/apache/plc4x/java/ads/util/ExtendWithTcpHexDumper.java b/plc4j/protocols/ads/src/test/java/org/apache/plc4x/java/ads/util/Junit5Backport.java
similarity index 55%
rename from plc4j/protocols/ads/src/test/java/org/apache/plc4x/java/ads/util/ExtendWithTcpHexDumper.java
rename to plc4j/protocols/ads/src/test/java/org/apache/plc4x/java/ads/util/Junit5Backport.java
index 9be3a85..34d8783 100644
--- a/plc4j/protocols/ads/src/test/java/org/apache/plc4x/java/ads/util/ExtendWithTcpHexDumper.java
+++ b/plc4j/protocols/ads/src/test/java/org/apache/plc4x/java/ads/util/Junit5Backport.java
@@ -18,25 +18,20 @@
  */
 package org.apache.plc4x.java.ads.util;
 
-import org.junit.jupiter.api.extension.ExtendWith;
+public class Junit5Backport {
 
-import java.lang.annotation.Retention;
-import java.lang.annotation.RetentionPolicy;
-import java.lang.annotation.Target;
+    public static void assertThrows(Class<? extends Exception> exception, Acceptor acceptor) {
+        try {
+            acceptor.accept();
+        } catch (Exception e) {
+            if (!exception.isAssignableFrom(e.getClass())) {
+                throw new RuntimeException(e);
+            }
+        }
+    }
 
-import static java.lang.annotation.ElementType.*;
-
-@Target({TYPE, METHOD, ANNOTATION_TYPE})
-@Retention(RetentionPolicy.RUNTIME)
-@ExtendWith(TcpHexDumper.class)
-public @interface ExtendWithTcpHexDumper {
-    /**
-     * Can be used to set a fixed port for the dumper, otherwise he will use a random port.
-     */
-    int port() default 0;
-
-    /**
-     * The timeout for the pool shutdown. After this no dumps will be printed anymore.
-     */
-    int shutdownTimeout() default 10;
+    @FunctionalInterface
+    public interface Acceptor {
+        void accept() throws Exception;
+    }
 }
diff --git a/plc4j/protocols/ads/src/test/java/org/apache/plc4x/java/ads/util/TcpHexDumper.java b/plc4j/protocols/ads/src/test/java/org/apache/plc4x/java/ads/util/TcpHexDumper.java
index c0b0449..ca6a684 100644
--- a/plc4j/protocols/ads/src/test/java/org/apache/plc4x/java/ads/util/TcpHexDumper.java
+++ b/plc4j/protocols/ads/src/test/java/org/apache/plc4x/java/ads/util/TcpHexDumper.java
@@ -20,7 +20,7 @@ package org.apache.plc4x.java.ads.util;
 
 import org.apache.commons.io.HexDump;
 import org.apache.commons.io.IOUtils;
-import org.junit.jupiter.api.extension.*;
+import org.junit.rules.ExternalResource;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -34,17 +34,23 @@ import java.util.concurrent.ExecutorService;
 import java.util.concurrent.Executors;
 import java.util.concurrent.TimeUnit;
 
-public class TcpHexDumper implements BeforeEachCallback, AfterEachCallback, ParameterResolver, Closeable {
+public class TcpHexDumper extends ExternalResource implements Closeable {
 
     private static final Logger logger = LoggerFactory.getLogger(TcpHexDumper.class);
 
-    private ExecutorService pool = Executors.newCachedThreadPool();
+    private ExecutorService pool;
 
-    private Integer portToUse;
+    private final Integer portToUse;
 
     private ServerSocket serverSocket;
 
-    int shutdownTimeout = 10;
+    int shutdownTimeout;
+
+    public TcpHexDumper(Integer portToUse) {
+        pool = Executors.newCachedThreadPool();
+        this.portToUse = portToUse;
+        this.shutdownTimeout = 10;
+    }
 
     public void init(int port) throws IOException, InterruptedException {
         if (serverSocket != null) {
@@ -99,33 +105,20 @@ public class TcpHexDumper implements BeforeEachCallback, AfterEachCallback, Para
     }
 
     @Override
-    public void afterEach(ExtensionContext context) throws Exception {
-        stop(true);
-    }
-
-    @Override
-    public void beforeEach(ExtensionContext context) throws Exception {
-        init(initPortToUse(context));
-        shutdownTimeout = initShutdownTimeout(context);
+    public void after() {
+        try {
+            stop(true);
+        } catch (IOException | InterruptedException ignore) {
+        }
     }
 
     @Override
-    public boolean supportsParameter(ParameterContext parameterContext, ExtensionContext extensionContext) throws ParameterResolutionException {
-        return parameterContext.getParameter().getType()
-            .equals(int.class);
-    }
-
-    @Override
-    public Object resolveParameter(ParameterContext parameterContext, ExtensionContext extensionContext) throws ParameterResolutionException {
-        try {
-            return initPortToUse(extensionContext);
-        } catch (IOException e) {
-            throw new ParameterResolutionException("Could not find a free port", e);
-        }
+    public void before() throws Throwable {
+        init(portToUse);
     }
 
     public static TcpHexDumper runOn(int port) throws IOException, InterruptedException {
-        TcpHexDumper tcpHexDumper = new TcpHexDumper();
+        TcpHexDumper tcpHexDumper = new TcpHexDumper(port);
         tcpHexDumper.init(port);
         return tcpHexDumper;
     }
@@ -134,27 +127,6 @@ public class TcpHexDumper implements BeforeEachCallback, AfterEachCallback, Para
         return serverSocket.getLocalPort();
     }
 
-    private int initShutdownTimeout(ExtensionContext context) {
-        ExtendWithTcpHexDumper annotation = context.getRequiredTestClass().getAnnotation(ExtendWithTcpHexDumper.class);
-        return annotation.shutdownTimeout();
-    }
-
-    private int initPortToUse(ExtensionContext context) throws IOException {
-        if (portToUse == null) {
-            ExtendWithTcpHexDumper annotation = context.getRequiredTestClass().getAnnotation(ExtendWithTcpHexDumper.class);
-            int port = annotation.port();
-            portToUse = port != 0 ? port : findFreePort();
-        }
-        return portToUse;
-    }
-
-    private static int findFreePort() throws IOException {
-        try (ServerSocket socket = new ServerSocket(0)) {
-            socket.setReuseAddress(true);
-            return socket.getLocalPort();
-        }
-    }
-
     @Override
     public void close() throws IOException {
         try {

-- 
To stop receiving notification emails like this one, please contact
sruehl@apache.org.

[incubator-plc4x] 01/02: Merge remote-tracking branch 'origin/master' into feature/Beckhoff_ADS_protocol

Posted by sr...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

sruehl pushed a commit to branch feature/Beckhoff_ADS_protocol
in repository https://gitbox.apache.org/repos/asf/incubator-plc4x.git

commit 9a09ef40c8eba129c49e9f91d3d8045dc14cac77
Merge: 1833df7 1eae1c9
Author: Sebastian Rühl <sr...@apache.org>
AuthorDate: Thu Feb 15 17:11:48 2018 +0100

    Merge remote-tracking branch 'origin/master' into feature/Beckhoff_ADS_protocol
    
    # Conflicts:
    #	plc4j/protocols/pom.xml

 Jenkinsfile                                        |   6 +-
 .../java/examples/dummydriver/DummyDriver.java     |  12 +-
 .../dummydriver/connection/DummyConnection.java    |  11 +
 .../examples/dummydriver/netty/DummyProtocol.java  |  28 +-
 examples/kafka-bridge/kafka-bridge.yml             |  34 ++
 examples/{plclogger => kafka-bridge}/pom.xml       |  44 ++-
 examples/kafka-bridge/server.sh                    |  31 ++
 .../java/examples/kafkabridge/KafkaBridge.java     | 121 ++++++
 .../java/examples/kafkabridge/model/Address.java   |  47 ++-
 .../examples/kafkabridge/model/Configuration.java  |  56 +++
 .../examples/kafkabridge/model/KafkaConfig.java    |  34 +-
 .../java/examples/kafkabridge/model/PlcConfig.java |  32 +-
 .../kafka-bridge/src/main/resources/logback.xml    |  40 +-
 examples/plclogger/pom.xml                         |   4 +
 .../plc4x/java/examples/plclogger/PlcLogger.java   |  74 +---
 examples/pom.xml                                   |   1 +
 .../java/org/apache/plc4x/camel/ConstantsTest.java |   8 +-
 .../org/apache/plc4x/camel/PLC4XComponentTest.java |  14 +-
 .../org/apache/plc4x/camel/PLC4XEndpointTest.java  |  25 +-
 .../org/apache/plc4x/camel/PLC4XProducerTest.java  |  20 +-
 integrations/apache-edgent/pom.xml                 |   7 +
 .../apache/plc4x/edgent/PlcConnectionAdapter.java  |   4 +
 .../plc4x/edgent/PlcConnectionAdapterTest.java     | 157 ++++----
 .../org/apache/plc4x/edgent/PlcFunctionsTest.java  |  11 +-
 .../apache/plc4x/edgent/mock/MockConnection.java   |  11 +-
 plc4j/api/pom.xml                                  |   6 +
 .../plc4x/java/api/connection/PlcConnection.java   |   7 +
 .../PlcUsernamePasswordAuthenticationTest.java     |  17 +-
 .../plc4x/java/api/connection/PlcReaderTest.java   |   7 +-
 .../plc4x/java/api/connection/PlcWriterTest.java   |   7 +-
 .../plc4x/java/api/messages/APIMessageTests.java   | 193 +++++-----
 .../java/api/messages/PlcReadRequestTest.java      |  32 +-
 .../java/api/messages/PlcReadResponseTest.java     |   8 +-
 .../plc4x/java/api/messages/PlcRequestTest.java    |  44 +--
 .../plc4x/java/api/messages/PlcResponseTest.java   |  50 +--
 .../java/api/messages/PlcWriteRequestTest.java     |  32 +-
 .../java/api/messages/PlcWriteResponseTest.java    |   8 +-
 .../specific/TypeSafePlcReadRequestTest.java       |  32 +-
 .../specific/TypeSafePlcReadResponseTest.java      |  26 +-
 .../specific/TypeSafePlcWriteRequestTest.java      |  30 +-
 .../specific/TypeSafePlcWriteResponseTest.java     |  20 +-
 plc4j/core/pom.xml                                 |   7 +
 .../apache/plc4x/java/PlcDriverManagerTest.java    |  27 +-
 plc4j/protocols/{s7 => driver-base}/pom.xml        |  50 ++-
 .../base/connection/AbstractPlcConnection.java     | 116 ++++++
 .../java/base/connection/ChannelFactory.java}      |  24 +-
 .../base/connection/TcpSocketChannelFactory.java   |  63 ++++
 .../java/base/connection/TestChannelFactory.java}  |  24 +-
 plc4j/protocols/pom.xml                            |   1 +
 plc4j/protocols/s7/pom.xml                         |  24 ++
 .../java/isotp/netty/model/types/TpduSize.java     |  40 +-
 .../java/org/apache/plc4x/java/s7/S7PlcDriver.java |  14 +-
 .../plc4x/java/s7/connection/S7PlcConnection.java  | 179 ++++-----
 .../plc4x/java/s7/netty/Plc4XS7Protocol.java       |   1 +
 .../org/apache/plc4x/java/s7/netty/S7Protocol.java |   2 +-
 .../s7/netty/model/types/HeaderErrorClass.java     |  15 +
 .../java/s7/netty/model/types/ParameterError.java  |  15 +
 .../java/isoontcp/netty/IsoOnTcpProtocolTest.java  |  37 +-
 .../plc4x/java/isotp/netty/IsoTPProtocolTest.java  | 405 +++++++++++----------
 .../java/isotp/netty/model/IsoTPMessageTests.java  |  21 +-
 .../isotp/netty/model/params/ParameterTests.java   |  36 +-
 .../netty/model/params/TsapParameterTests.java     |  42 +--
 .../isotp/netty/model/tpdus/IsotpModelTests.java   | 113 +++---
 .../isotp/netty/model/types/IsotpTypeTests.java    | 166 ++++++---
 .../plc4x/java/netty/events/S7StateTests.java      |  21 +-
 .../org/apache/plc4x/java/s7/S7PlcDriverTest.java  |  45 ++-
 .../apache/plc4x/java/s7/S7PlcReaderSample.java    |  99 +++--
 .../java/s7/connection/S7PlcConnectionIT.java      |  74 ++++
 .../java/s7/connection/S7PlcConnectionTests.java   |  79 ++--
 .../java/s7/connection/S7PlcTestConnection.java    | 189 ++++++++++
 .../apache/plc4x/java/s7/model/S7AddressTests.java |  39 +-
 .../plc4x/java/s7/netty/Plc4XS7ProtocolTest.java   |  83 +++--
 .../apache/plc4x/java/s7/netty/S7ProtocolTest.java |  15 +-
 .../s7/netty/model/messages/S7MessageTests.java    | 103 +++---
 .../s7/netty/model/params/S7ParameterTests.java    |  39 +-
 .../s7/netty/model/payloads/S7PayloadTests.java    |  29 +-
 .../java/s7/netty/model/types/S7TypeTests.java     | 119 +++---
 .../s7/connection/iso-tp-connect-response.pcap     | Bin 0 -> 116 bytes
 .../s7-setup-communication-response.pcap           | Bin 0 -> 121 bytes
 plc4j/utils/pom.xml                                |   1 +
 plc4j/utils/raw-sockets/pom.xml                    |   6 -
 .../plc4x/java/utils/rawsockets/RawSocket.java     |  28 +-
 .../utils/rawsockets/netty/RawSocketChannel.java   |  34 +-
 .../rawsockets/netty/RawSocketChannelConfig.java}  |  24 +-
 .../rawsockets/netty/RawSocketChannelOption.java}  |  21 +-
 plc4j/{api => utils/test-utils}/pom.xml            |  10 +-
 .../java/org/apache/plc4x/test/FastTests.java}     |  22 +-
 .../test-utils/src/main/resources/logback.xml}     |  40 +-
 pom.xml                                            |  87 ++---
 89 files changed, 2414 insertions(+), 1566 deletions(-)

diff --cc plc4j/protocols/pom.xml
index b3ec6a8,92d8ee0..dae2708
--- a/plc4j/protocols/pom.xml
+++ b/plc4j/protocols/pom.xml
@@@ -35,7 -35,7 +35,8 @@@
    <description>Wrapper project for all PLC4J protocol implementations.</description>
  
    <modules>
 +    <module>ads</module>
+     <module>driver-base</module>
      <module>s7</module>
    </modules>
  

-- 
To stop receiving notification emails like this one, please contact
sruehl@apache.org.