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

jfeinauer pushed a commit to branch add-simple-mock-driver
in repository https://gitbox.apache.org/repos/asf/incubator-plc4x.git

commit 88a669a8680e0736d023821c40eee613b9d169c6
Author: Julian Feinauer <j.feina...@pragmaticminds.de>
AuthorDate: Wed Oct 31 22:28:39 2018 +0100

    Refactoring, fixed some stuff.
---
 plc4j/core/pom.xml                                 |  5 ++
 .../apache/plc4x/java/PlcDriverManagerTest.java    |  6 +-
 .../apache/plc4x/java/mock/DoubleMockDriver.java   | 44 +++++------
 .../org/apache/plc4x/java/mock/MockConnection.java | 85 ++++------------------
 .../org/apache/plc4x/java/mock/MockDriver.java     | 10 +--
 ...{MockDriverTest.java => PlcMockDriverTest.java} |  9 ++-
 .../org/apache/plc4x/java/mock/MockDevice.java     |  2 +-
 .../java/org/apache/plc4x/java/mock/MockField.java |  2 +-
 .../apache/plc4x/java/mock/MockFieldHandler.java   |  0
 .../org/apache/plc4x/java/mock/MockReader.java     |  2 +-
 .../apache/plc4x/java/mock/PlcMockConnection.java} |  4 +-
 .../org/apache/plc4x/java/mock/PlcMockDriver.java} | 10 +--
 .../services/org.apache.plc4x.java.spi.PlcDriver   | 19 +++++
 13 files changed, 82 insertions(+), 116 deletions(-)

diff --git a/plc4j/core/pom.xml b/plc4j/core/pom.xml
index beb9f82..7d1093d 100644
--- a/plc4j/core/pom.xml
+++ b/plc4j/core/pom.xml
@@ -61,6 +61,11 @@
       <artifactId>netty-transport</artifactId>
       <scope>test</scope>
     </dependency>
+    <dependency>
+      <groupId>org.apache.commons</groupId>
+      <artifactId>commons-lang3</artifactId>
+      <scope>test</scope>
+    </dependency>
   </dependencies>
 
 </project>
\ No newline at end of file
diff --git 
a/plc4j/core/src/test/java/org/apache/plc4x/java/PlcDriverManagerTest.java 
b/plc4j/core/src/test/java/org/apache/plc4x/java/PlcDriverManagerTest.java
index c02e2f9..f5f16d1 100644
--- a/plc4j/core/src/test/java/org/apache/plc4x/java/PlcDriverManagerTest.java
+++ b/plc4j/core/src/test/java/org/apache/plc4x/java/PlcDriverManagerTest.java
@@ -47,7 +47,7 @@ public class PlcDriverManagerTest {
     @Test
     @Category(FastTests.class)
     public void getExistingDriverTest() throws PlcException {
-        MockConnection mockConnection = (MockConnection) new 
PlcDriverManager().getConnection("mock://some-cool-url");
+        MockConnection mockConnection = (MockConnection) new 
PlcDriverManager().getConnection("spi-mock://some-cool-url");
         assertThat(mockConnection.getAuthentication(), nullValue());
         assertThat(mockConnection.isConnected(), is(true));
     }
@@ -62,7 +62,7 @@ public class PlcDriverManagerTest {
     public void getExistingDriverWithAuthenticationTest() throws PlcException {
         PlcUsernamePasswordAuthentication authentication =
             new PlcUsernamePasswordAuthentication("user", "pass");
-        MockConnection mockConnection = (MockConnection) new 
PlcDriverManager().getConnection("mock://some-cool-url", authentication);
+        MockConnection mockConnection = (MockConnection) new 
PlcDriverManager().getConnection("spi-mock://some-cool-url", authentication);
 
         assertThat(mockConnection.getAuthentication(), notNullValue());
         assertThat(mockConnection.getAuthentication(), 
instanceOf(PlcUsernamePasswordAuthentication.class));
@@ -110,7 +110,7 @@ public class PlcDriverManagerTest {
         ClassLoader fakeClassLoader = new URLClassLoader(urls, 
originalClassloader);
 
         // expect exception
-        new 
PlcDriverManager(fakeClassLoader).getConnection("mock://some-cool-url");
+        new 
PlcDriverManager(fakeClassLoader).getConnection("spi-mock://some-cool-url");
     }
 
 }
diff --git 
a/plc4j/core/src/test/java/org/apache/plc4x/java/mock/DoubleMockDriver.java 
b/plc4j/core/src/test/java/org/apache/plc4x/java/mock/DoubleMockDriver.java
index 05250ab..0a180de 100644
--- a/plc4j/core/src/test/java/org/apache/plc4x/java/mock/DoubleMockDriver.java
+++ b/plc4j/core/src/test/java/org/apache/plc4x/java/mock/DoubleMockDriver.java
@@ -1,21 +1,21 @@
 /*
-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.
-*/
+ * 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.mock;
 
 import org.apache.plc4x.java.spi.PlcDriver;
@@ -27,7 +27,7 @@ public class DoubleMockDriver implements PlcDriver {
 
     @Override
     public String getProtocolCode() {
-        return "mock";
+        return "spi-mock";
     }
 
     @Override
@@ -36,13 +36,13 @@ public class DoubleMockDriver implements PlcDriver {
     }
 
     @Override
-    public PlcConnection connect(String url) throws PlcConnectionException {
-        return new MockConnection(null);
+    public PlcConnection connect(String url) {
+        return new PlcMockConnection(null);
     }
 
     @Override
-    public PlcConnection connect(String url, PlcAuthentication authentication) 
throws PlcConnectionException {
-        return new MockConnection(authentication);
+    public PlcConnection connect(String url, PlcAuthentication authentication) 
{
+        return new PlcMockConnection(authentication);
     }
 
 }
diff --git 
a/plc4j/core/src/test/java/org/apache/plc4x/java/mock/MockConnection.java 
b/plc4j/core/src/test/java/org/apache/plc4x/java/mock/MockConnection.java
index aaa077d..d44fc5d 100644
--- a/plc4j/core/src/test/java/org/apache/plc4x/java/mock/MockConnection.java
+++ b/plc4j/core/src/test/java/org/apache/plc4x/java/mock/MockConnection.java
@@ -18,94 +18,35 @@ under the License.
 */
 package org.apache.plc4x.java.mock;
 
-import org.apache.plc4x.java.api.PlcConnection;
+import io.netty.channel.Channel;
+import io.netty.channel.ChannelHandler;
+import io.netty.channel.ChannelInitializer;
 import org.apache.plc4x.java.api.authentication.PlcAuthentication;
-import org.apache.plc4x.java.api.exceptions.PlcConnectionException;
-import org.apache.plc4x.java.api.exceptions.PlcUnsupportedOperationException;
-import org.apache.plc4x.java.api.messages.PlcReadRequest;
-import org.apache.plc4x.java.api.messages.PlcSubscriptionRequest;
-import org.apache.plc4x.java.api.messages.PlcUnsubscriptionRequest;
-import org.apache.plc4x.java.api.messages.PlcWriteRequest;
-import org.apache.plc4x.java.api.metadata.PlcConnectionMetadata;
-import org.apache.plc4x.java.base.messages.DefaultPlcReadRequest;
+import org.apache.plc4x.java.base.connection.AbstractPlcConnection;
+import org.apache.plc4x.java.base.connection.TestChannelFactory;
 
-public class MockConnection implements PlcConnection {
+import java.util.concurrent.CompletableFuture;
 
-    private final PlcAuthentication authentication;
+public class MockConnection extends AbstractPlcConnection {
 
-    private boolean isConnected = false;
-    private MockDevice device;
+    private final PlcAuthentication authentication;
 
     MockConnection(PlcAuthentication authentication) {
+        super(new TestChannelFactory());
         this.authentication = authentication;
     }
 
-    public MockDevice getDevice() {
-        return device;
-    }
-
-    public void setDevice(MockDevice device) {
-        this.device = device;
-    }
-
-    @Override
-    public void connect() {
-        // do nothing
-    }
-
     @Override
-    public boolean isConnected() {
-        // is connected if a device is set
-        return device != null;
-    }
-
-    @Override
-    public void close() {
-        // unset device
-        this.device = null;
-    }
-
-    @Override
-    public PlcConnectionMetadata getMetadata() {
-        return new PlcConnectionMetadata() {
-            @Override
-            public boolean canRead() {
-                return true;
-            }
-
+    protected ChannelHandler getChannelHandler(CompletableFuture<Void> 
sessionSetupCompleteFuture) {
+        return new ChannelInitializer() {
             @Override
-            public boolean canWrite() {
-                return false;
-            }
-
-            @Override
-            public boolean canSubscribe() {
-                return false;
+            protected void initChannel(Channel channel) {
             }
         };
     }
 
-    @Override
-    public PlcReadRequest.Builder readRequestBuilder() {
-        return new DefaultPlcReadRequest.Builder(new MockReader(device), new 
MockFieldHandler());
-    }
-
-    @Override
-    public PlcWriteRequest.Builder writeRequestBuilder() {
-        throw new PlcUnsupportedOperationException("Write not supported by 
Mock Driver");
-    }
-
-    @Override
-    public PlcSubscriptionRequest.Builder subscriptionRequestBuilder() {
-        throw new PlcUnsupportedOperationException("Subscription not supported 
by Mock Driver");
-    }
-
-    @Override
-    public PlcUnsubscriptionRequest.Builder unsubscriptionRequestBuilder() {
-        throw new PlcUnsupportedOperationException("Subscription not supported 
by Mock Driver");
-    }
-
     public PlcAuthentication getAuthentication() {
         return authentication;
     }
+
 }
diff --git 
a/plc4j/core/src/test/java/org/apache/plc4x/java/mock/MockDriver.java 
b/plc4j/core/src/test/java/org/apache/plc4x/java/mock/MockDriver.java
index 4771550..6ebd36c 100644
--- a/plc4j/core/src/test/java/org/apache/plc4x/java/mock/MockDriver.java
+++ b/plc4j/core/src/test/java/org/apache/plc4x/java/mock/MockDriver.java
@@ -27,7 +27,7 @@ public class MockDriver implements PlcDriver {
 
     @Override
     public String getProtocolCode() {
-        return "mock";
+        return "spi-mock";
     }
 
     @Override
@@ -36,13 +36,13 @@ public class MockDriver implements PlcDriver {
     }
 
     @Override
-    public PlcConnection connect(String url) throws PlcConnectionException {
-        return new MockConnection(null);
+    public PlcConnection connect(String url) {
+        return new PlcMockConnection(null);
     }
 
     @Override
-    public PlcConnection connect(String url, PlcAuthentication authentication) 
throws PlcConnectionException {
-        return new MockConnection(authentication);
+    public PlcConnection connect(String url, PlcAuthentication authentication) 
{
+        return new PlcMockConnection(authentication);
     }
 
 }
diff --git 
a/plc4j/core/src/test/java/org/apache/plc4x/java/mock/MockDriverTest.java 
b/plc4j/core/src/test/java/org/apache/plc4x/java/mock/PlcMockDriverTest.java
similarity index 87%
rename from 
plc4j/core/src/test/java/org/apache/plc4x/java/mock/MockDriverTest.java
rename to 
plc4j/core/src/test/java/org/apache/plc4x/java/mock/PlcMockDriverTest.java
index 05bddcf..532e20f 100644
--- a/plc4j/core/src/test/java/org/apache/plc4x/java/mock/MockDriverTest.java
+++ b/plc4j/core/src/test/java/org/apache/plc4x/java/mock/PlcMockDriverTest.java
@@ -31,11 +31,12 @@ import org.mockito.Mockito;
 import static junit.framework.TestCase.assertFalse;
 import static junit.framework.TestCase.assertTrue;
 import static org.mockito.ArgumentMatchers.any;
+import static org.mockito.ArgumentMatchers.eq;
 import static org.mockito.Mockito.times;
 import static org.mockito.Mockito.verify;
 import static org.mockito.Mockito.when;
 
-public class MockDriverTest {
+public class PlcMockDriverTest {
 
     private final PlcDriverManager driverManager = new PlcDriverManager();
 
@@ -48,7 +49,7 @@ public class MockDriverTest {
 
     @Test
     public void useMockDriver_deviceSet_isConnected() throws Exception {
-        MockConnection connection = (MockConnection) 
driverManager.getConnection("mock:dummy");
+        PlcMockConnection connection = (PlcMockConnection) 
driverManager.getConnection("mock:dummy");
         MockDevice mock = Mockito.mock(MockDevice.class);
         connection.setDevice(mock);
 
@@ -57,7 +58,7 @@ public class MockDriverTest {
 
     @Test
     public void mockDriver_assertSimpleRequest() throws PlcConnectionException 
{
-        MockConnection connection = (MockConnection) 
driverManager.getConnection("mock:dummy");
+        PlcMockConnection connection = (PlcMockConnection) 
driverManager.getConnection("mock:dummy");
         MockDevice mock = Mockito.mock(MockDevice.class);
         when(mock.read(any())).thenReturn(Pair.of(PlcResponseCode.OK, new 
DefaultLongFieldItem(1L)));
         connection.setDevice(mock);
@@ -68,6 +69,6 @@ public class MockDriverTest {
             .execute();
 
         // Verify the call
-        verify(mock, times(1)).read(any());
+        verify(mock, times(1)).read(eq("myPlcField"));
     }
 }
\ No newline at end of file
diff --git 
a/plc4j/core/src/test/java/org/apache/plc4x/java/mock/MockDevice.java 
b/plc4j/protocols/driver-bases/test/src/main/java/org/apache/plc4x/java/mock/MockDevice.java
similarity index 94%
rename from plc4j/core/src/test/java/org/apache/plc4x/java/mock/MockDevice.java
rename to 
plc4j/protocols/driver-bases/test/src/main/java/org/apache/plc4x/java/mock/MockDevice.java
index ed32c3f..def0589 100644
--- a/plc4j/core/src/test/java/org/apache/plc4x/java/mock/MockDevice.java
+++ 
b/plc4j/protocols/driver-bases/test/src/main/java/org/apache/plc4x/java/mock/MockDevice.java
@@ -29,6 +29,6 @@ import 
org.apache.plc4x.java.base.messages.items.BaseDefaultFieldItem;
  */
 public interface MockDevice {
 
-    Pair<PlcResponseCode, BaseDefaultFieldItem> read(PlcField field);
+    Pair<PlcResponseCode, BaseDefaultFieldItem> read(String fieldQuery);
 
 }
diff --git a/plc4j/core/src/test/java/org/apache/plc4x/java/mock/MockField.java 
b/plc4j/protocols/driver-bases/test/src/main/java/org/apache/plc4x/java/mock/MockField.java
similarity index 100%
rename from plc4j/core/src/test/java/org/apache/plc4x/java/mock/MockField.java
rename to 
plc4j/protocols/driver-bases/test/src/main/java/org/apache/plc4x/java/mock/MockField.java
index 2762407..e570b2b 100644
--- a/plc4j/core/src/test/java/org/apache/plc4x/java/mock/MockField.java
+++ 
b/plc4j/protocols/driver-bases/test/src/main/java/org/apache/plc4x/java/mock/MockField.java
@@ -26,11 +26,11 @@ public class MockField implements PlcField {
     private final String fieldQuery;
 
     public MockField(String fieldQuery) {
-
         this.fieldQuery = fieldQuery;
     }
 
     public String getFieldQuery() {
         return fieldQuery;
     }
+
 }
diff --git 
a/plc4j/core/src/test/java/org/apache/plc4x/java/mock/MockFieldHandler.java 
b/plc4j/protocols/driver-bases/test/src/main/java/org/apache/plc4x/java/mock/MockFieldHandler.java
similarity index 100%
rename from 
plc4j/core/src/test/java/org/apache/plc4x/java/mock/MockFieldHandler.java
rename to 
plc4j/protocols/driver-bases/test/src/main/java/org/apache/plc4x/java/mock/MockFieldHandler.java
diff --git 
a/plc4j/core/src/test/java/org/apache/plc4x/java/mock/MockReader.java 
b/plc4j/protocols/driver-bases/test/src/main/java/org/apache/plc4x/java/mock/MockReader.java
similarity index 96%
rename from plc4j/core/src/test/java/org/apache/plc4x/java/mock/MockReader.java
rename to 
plc4j/protocols/driver-bases/test/src/main/java/org/apache/plc4x/java/mock/MockReader.java
index 79e887f..10febee 100644
--- a/plc4j/core/src/test/java/org/apache/plc4x/java/mock/MockReader.java
+++ 
b/plc4j/protocols/driver-bases/test/src/main/java/org/apache/plc4x/java/mock/MockReader.java
@@ -44,7 +44,7 @@ public class MockReader implements PlcReader {
     @Override
     public CompletableFuture<PlcReadResponse> read(PlcReadRequest readRequest) 
{
         Map<String, Pair<PlcResponseCode, BaseDefaultFieldItem>> response = 
readRequest.getFieldNames().stream()
-            .collect(Collectors.toMap(Function.identity(), name -> 
device.read(readRequest.getField(name))));
+            .collect(Collectors.toMap(Function.identity(), name -> 
device.read(((MockField) readRequest.getField(name)).getFieldQuery())));
         return CompletableFuture.completedFuture(new 
DefaultPlcReadResponse((DefaultPlcReadRequest)readRequest, response));
     }
 
diff --git 
a/plc4j/core/src/test/java/org/apache/plc4x/java/mock/MockConnection.java 
b/plc4j/protocols/driver-bases/test/src/main/java/org/apache/plc4x/java/mock/PlcMockConnection.java
similarity index 96%
copy from 
plc4j/core/src/test/java/org/apache/plc4x/java/mock/MockConnection.java
copy to 
plc4j/protocols/driver-bases/test/src/main/java/org/apache/plc4x/java/mock/PlcMockConnection.java
index aaa077d..9e834ec 100644
--- a/plc4j/core/src/test/java/org/apache/plc4x/java/mock/MockConnection.java
+++ 
b/plc4j/protocols/driver-bases/test/src/main/java/org/apache/plc4x/java/mock/PlcMockConnection.java
@@ -29,14 +29,14 @@ import org.apache.plc4x.java.api.messages.PlcWriteRequest;
 import org.apache.plc4x.java.api.metadata.PlcConnectionMetadata;
 import org.apache.plc4x.java.base.messages.DefaultPlcReadRequest;
 
-public class MockConnection implements PlcConnection {
+public class PlcMockConnection implements PlcConnection {
 
     private final PlcAuthentication authentication;
 
     private boolean isConnected = false;
     private MockDevice device;
 
-    MockConnection(PlcAuthentication authentication) {
+    PlcMockConnection(PlcAuthentication authentication) {
         this.authentication = authentication;
     }
 
diff --git 
a/plc4j/core/src/test/java/org/apache/plc4x/java/mock/MockDriver.java 
b/plc4j/protocols/driver-bases/test/src/main/java/org/apache/plc4x/java/mock/PlcMockDriver.java
similarity index 83%
copy from plc4j/core/src/test/java/org/apache/plc4x/java/mock/MockDriver.java
copy to 
plc4j/protocols/driver-bases/test/src/main/java/org/apache/plc4x/java/mock/PlcMockDriver.java
index 4771550..c693b84 100644
--- a/plc4j/core/src/test/java/org/apache/plc4x/java/mock/MockDriver.java
+++ 
b/plc4j/protocols/driver-bases/test/src/main/java/org/apache/plc4x/java/mock/PlcMockDriver.java
@@ -23,7 +23,7 @@ import 
org.apache.plc4x.java.api.authentication.PlcAuthentication;
 import org.apache.plc4x.java.api.PlcConnection;
 import org.apache.plc4x.java.api.exceptions.PlcConnectionException;
 
-public class MockDriver implements PlcDriver {
+public class PlcMockDriver implements PlcDriver {
 
     @Override
     public String getProtocolCode() {
@@ -36,13 +36,13 @@ public class MockDriver implements PlcDriver {
     }
 
     @Override
-    public PlcConnection connect(String url) throws PlcConnectionException {
-        return new MockConnection(null);
+    public PlcConnection connect(String url) {
+        return new PlcMockConnection(null);
     }
 
     @Override
-    public PlcConnection connect(String url, PlcAuthentication authentication) 
throws PlcConnectionException {
-        return new MockConnection(authentication);
+    public PlcConnection connect(String url, PlcAuthentication authentication) 
{
+        return new PlcMockConnection(authentication);
     }
 
 }
diff --git 
a/plc4j/protocols/driver-bases/test/src/main/resources/META-INF/services/org.apache.plc4x.java.spi.PlcDriver
 
b/plc4j/protocols/driver-bases/test/src/main/resources/META-INF/services/org.apache.plc4x.java.spi.PlcDriver
new file mode 100644
index 0000000..ebff4aa
--- /dev/null
+++ 
b/plc4j/protocols/driver-bases/test/src/main/resources/META-INF/services/org.apache.plc4x.java.spi.PlcDriver
@@ -0,0 +1,19 @@
+#
+# 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.
+#
+org.apache.plc4x.java.mock.PlcMockDriver

Reply via email to