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 2018/10/31 21:28:44 UTC
[incubator-plc4x] branch add-simple-mock-driver updated:
Refactoring, fixed some stuff.
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
The following commit(s) were added to refs/heads/add-simple-mock-driver by this push:
new 1a3b151 Refactoring, fixed some stuff.
1a3b151 is described below
commit 1a3b1513d741f6928e37411434d55194c5e06686
Author: Julian Feinauer <j....@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