You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@plc4x.apache.org by jf...@apache.org on 2019/04/23 10:40:01 UTC
[plc4x] 05/10: PLC4X-111 Fixed several scripts.
This is an automated email from the ASF dual-hosted git repository.
jfeinauer pushed a commit to branch feature/PLC4X-111-interop-server
in repository https://gitbox.apache.org/repos/asf/plc4x.git
commit de3a0c1adeb6cb15907e7ff7fb0674be26846ee8
Author: julian <j....@pragmaticminds.de>
AuthorDate: Sun Apr 21 14:18:49 2019 +0200
PLC4X-111 Fixed several scripts.
---
plc4j/utils/interop/pom.xml | 46 +++++++++++++----
plc4j/utils/interop/src/assembly/assembly.xml | 23 +++++++++
.../java/org/apache/plc4x/interop/impl/Server.java | 58 +++++++++++-----------
plc4py/initialize_interop_server.sh | 5 +-
plc4py/org/apache/plc4x/PlcDriverManager.py | 2 +-
plc4py/test/test_PlcDriverManager.py | 8 +--
6 files changed, 98 insertions(+), 44 deletions(-)
diff --git a/plc4j/utils/interop/pom.xml b/plc4j/utils/interop/pom.xml
index 7aa8957..be6c1a6 100644
--- a/plc4j/utils/interop/pom.xml
+++ b/plc4j/utils/interop/pom.xml
@@ -22,11 +22,11 @@
<artifactId>plc4j-api</artifactId>
<version>0.4.0-SNAPSHOT</version>
</dependency>
-<!-- <dependency>-->
-<!-- <groupId>org.apache.plc4x</groupId>-->
-<!-- <artifactId>plc4j-protocol-driver-base-test</artifactId>-->
-<!-- <version>0.4.0-SNAPSHOT</version>-->
-<!-- </dependency>-->
+ <dependency>
+ <groupId>org.apache.plc4x</groupId>
+ <artifactId>plc4j-protocol-driver-base-test</artifactId>
+ <version>0.4.0-SNAPSHOT</version>
+ </dependency>
<dependency>
<groupId>org.apache.plc4x</groupId>
<artifactId>plc4j-driver-s7</artifactId>
@@ -57,16 +57,43 @@
<build>
<plugins>
+
+<!-- <!– Maven Shade Plugin –>-->
+<!-- <plugin>-->
+<!-- <groupId>org.apache.maven.plugins</groupId>-->
+<!-- <artifactId>maven-shade-plugin</artifactId>-->
+<!-- <version>2.3</version>-->
+<!-- <executions>-->
+<!-- <!– Run shade goal on package phase –>-->
+<!-- <execution>-->
+<!-- <phase>package</phase>-->
+<!-- <goals>-->
+<!-- <goal>shade</goal>-->
+<!-- </goals>-->
+<!-- <configuration>-->
+<!-- <transformers>-->
+<!-- <!– add Main-Class to manifest file –>-->
+<!-- <transformer implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">-->
+<!-- <mainClass>org.apache.plc4x.interop.impl.Server</mainClass>-->
+<!-- </transformer>-->
+<!-- </transformers>-->
+<!-- </configuration>-->
+<!-- </execution>-->
+<!-- </executions>-->
+<!-- </plugin>-->
+
<!-- Create a fat jar -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-assembly-plugin</artifactId>
- <version>2.4.1</version>
+ <version>2.5.3</version>
<configuration>
<!-- get all project dependencies -->
- <descriptorRefs>
- <descriptorRef>jar-with-dependencies</descriptorRef>
- </descriptorRefs>
+<!-- <descriptorRefs>-->
+<!-- <descriptorRef>jar-with-dependencies</descriptorRef>-->
+<!-- <descriptorRef>metaInf-services</descriptorRef>-->
+<!-- </descriptorRefs>-->
+ <descriptors>src/assembly/assembly.xml</descriptors>
<!-- MainClass in mainfest make a executable jar -->
<archive>
<manifest>
@@ -89,5 +116,4 @@
</plugins>
</build>
-
</project>
\ No newline at end of file
diff --git a/plc4j/utils/interop/src/assembly/assembly.xml b/plc4j/utils/interop/src/assembly/assembly.xml
new file mode 100644
index 0000000..75667fe
--- /dev/null
+++ b/plc4j/utils/interop/src/assembly/assembly.xml
@@ -0,0 +1,23 @@
+<assembly xmlns="http://maven.apache.org/ASSEMBLY/2.0.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://maven.apache.org/ASSEMBLY/2.0.0 http://maven.apache.org/xsd/assembly-2.0.0.xsd">
+ <!-- TODO: a jarjar format would be better -->
+ <id>jar-with-dependencies</id>
+ <formats>
+ <format>jar</format>
+ </formats>
+ <includeBaseDirectory>false</includeBaseDirectory>
+ <dependencySets>
+ <dependencySet>
+ <outputDirectory>/</outputDirectory>
+ <useProjectArtifact>true</useProjectArtifact>
+ <unpack>true</unpack>
+ <scope>runtime</scope>
+ </dependencySet>
+ </dependencySets>
+ <containerDescriptorHandlers>
+ <containerDescriptorHandler>
+ <handlerName>metaInf-services</handlerName>
+ </containerDescriptorHandler>
+ </containerDescriptorHandlers>
+</assembly>
\ No newline at end of file
diff --git a/plc4j/utils/interop/src/main/java/org/apache/plc4x/interop/impl/Server.java b/plc4j/utils/interop/src/main/java/org/apache/plc4x/interop/impl/Server.java
index e697c2b..01274ae 100644
--- a/plc4j/utils/interop/src/main/java/org/apache/plc4x/interop/impl/Server.java
+++ b/plc4j/utils/interop/src/main/java/org/apache/plc4x/interop/impl/Server.java
@@ -10,8 +10,8 @@ import org.apache.plc4x.java.api.model.PlcSubscriptionHandle;
import org.apache.plc4x.java.api.types.PlcResponseCode;
import org.apache.plc4x.java.base.messages.items.BaseDefaultFieldItem;
import org.apache.plc4x.java.base.messages.items.DefaultLongFieldItem;
-//import org.apache.plc4x.java.mock.MockDevice;
-//import org.apache.plc4x.java.mock.PlcMockConnection;
+import org.apache.plc4x.java.mock.MockDevice;
+import org.apache.plc4x.java.mock.PlcMockConnection;
import org.apache.thrift.server.TServer;
import org.apache.thrift.server.TSimpleServer;
import org.apache.thrift.transport.TServerSocket;
@@ -26,9 +26,9 @@ public class Server {
final PlcDriverManager driverManager = new PlcDriverManager();
// Do some mocking
-// final PlcMockConnection mockConnection = (PlcMockConnection) driverManager.getConnection("mock:a");
+ final PlcMockConnection mockConnection = (PlcMockConnection) driverManager.getConnection("mock:a");
-// mockConnection.setDevice(new MyMockDevice());
+ mockConnection.setDevice(new MyMockDevice());
final Handler handler = new Handler(driverManager);
final InteropServer.Processor<Handler> processor = new InteropServer.Processor<>(handler);
@@ -44,29 +44,29 @@ public class Server {
}
}
-// private static class MyMockDevice implements MockDevice {
-// @Override public Pair<PlcResponseCode, BaseDefaultFieldItem> read(String fieldQuery) {
-// return Pair.of(PlcResponseCode.OK, new DefaultLongFieldItem(100L));
-// }
-//
-// @Override public PlcResponseCode write(String fieldQuery, Object value) {
-// return null;
-// }
-//
-// @Override public Pair<PlcResponseCode, PlcSubscriptionHandle> subscribe(String fieldQuery) {
-// return null;
-// }
-//
-// @Override public void unsubscribe() {
-//
-// }
-//
-// @Override public PlcConsumerRegistration register(Consumer<PlcSubscriptionEvent> consumer, Collection<PlcSubscriptionHandle> handles) {
-// return null;
-// }
-//
-// @Override public void unregister(PlcConsumerRegistration registration) {
-//
-// }
-// }
+ private static class MyMockDevice implements MockDevice {
+ @Override public Pair<PlcResponseCode, BaseDefaultFieldItem> read(String fieldQuery) {
+ return Pair.of(PlcResponseCode.OK, new DefaultLongFieldItem(100L));
+ }
+
+ @Override public PlcResponseCode write(String fieldQuery, Object value) {
+ return null;
+ }
+
+ @Override public Pair<PlcResponseCode, PlcSubscriptionHandle> subscribe(String fieldQuery) {
+ return null;
+ }
+
+ @Override public void unsubscribe() {
+
+ }
+
+ @Override public PlcConsumerRegistration register(Consumer<PlcSubscriptionEvent> consumer, Collection<PlcSubscriptionHandle> handles) {
+ return null;
+ }
+
+ @Override public void unregister(PlcConsumerRegistration registration) {
+
+ }
+ }
}
diff --git a/plc4py/initialize_interop_server.sh b/plc4py/initialize_interop_server.sh
index 80b0b2e..8027abe 100755
--- a/plc4py/initialize_interop_server.sh
+++ b/plc4py/initialize_interop_server.sh
@@ -1,7 +1,10 @@
#!/usr/bin/env bash
+# Clean the directory
+rm -f lib/*.jar
+
# Builds the interop server module with maven
mvn clean package -f ../plc4j/utils/interop/pom.xml
# Moves the server from the target folder here
-cp ../plc4j/utils/interop/target/apache-plc4x-incubating-* lib/
\ No newline at end of file
+cp ../plc4j/utils/interop/target/apache-plc4x-incubating-*-SNAPSHOT-jar-with-dependencies.jar lib/interop-server.jar
\ No newline at end of file
diff --git a/plc4py/org/apache/plc4x/PlcDriverManager.py b/plc4py/org/apache/plc4x/PlcDriverManager.py
index 14557fc..69bc2a8 100644
--- a/plc4py/org/apache/plc4x/PlcDriverManager.py
+++ b/plc4py/org/apache/plc4x/PlcDriverManager.py
@@ -21,7 +21,7 @@ class PlcDriverManager:
if embedded_server:
self.interop_proc = subprocess.Popen(
["java", "-Dlog4j.configurationFile=../lib/log4j2.xml",
- "-jar", "../lib/apache-plc4x-incubating-0.4.0-SNAPSHOT-jar-with-dependencies.jar"])
+ "-jar", "../lib/interop-server.jar"])
try:
print("Started server under pid " + str(self.interop_proc.pid))
except:
diff --git a/plc4py/test/test_PlcDriverManager.py b/plc4py/test/test_PlcDriverManager.py
index 4a5e898..2d0dce7 100644
--- a/plc4py/test/test_PlcDriverManager.py
+++ b/plc4py/test/test_PlcDriverManager.py
@@ -14,7 +14,7 @@ class TestPlcDriverManager(TestCase):
def test_callLib(self):
try:
- proc = Popen(["java", "-jar", "../lib/apache-plc4x-incubating-0.4.0-SNAPSHOT-jar-with-dependencies.jar"])
+ proc = Popen(["java", "-jar", "../lib/interop-server.jar"])
print("Started server under pid " + str(proc.pid))
time.sleep(5)
poll = proc.poll()
@@ -56,7 +56,8 @@ class TestPlcDriverManager(TestCase):
finally:
manager.close()
- def test_withRealPLC_forDebug(self):
+ # This i a manual test, which needs a running server to work
+ def mt_withRealPLC_forDebug(self):
try:
manager = PlcDriverManager(embedded_server=False)
@@ -73,7 +74,8 @@ class TestPlcDriverManager(TestCase):
finally:
manager.close()
- def test_withRealPLC(self):
+ # This is an integration test, which needs a S7 PLC
+ def it_withRealPLC(self):
try:
manager = PlcDriverManager()