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/incubator-plc4x.git
commit 0719484aba22ec2103448077ff3dce14ee3e60b9 Author: julian <[email protected]> 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()
