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