Search in sources :

Example 16 with PlcDriverManager

use of org.apache.plc4x.java.PlcDriverManager in project plc4x by apache.

the class GenericCANDriverTest method testConnection.

@Test
void testConnection() throws PlcConnectionException {
    PlcConnection connection = new PlcDriverManager().getConnection("genericcan:virtualcan://");
    assertNotNull(connection);
    assertTrue(connection.isConnected());
    assertFalse(connection.getMetadata().canRead());
    assertTrue(connection.getMetadata().canWrite());
    assertTrue(connection.getMetadata().canSubscribe());
}
Also used : PlcDriverManager(org.apache.plc4x.java.PlcDriverManager) PlcConnection(org.apache.plc4x.java.api.PlcConnection) Test(org.junit.jupiter.api.Test)

Example 17 with PlcDriverManager

use of org.apache.plc4x.java.PlcDriverManager in project plc4x by apache.

the class OpcuaPlcDriverTest method connectionNoParams.

@Test
public void connectionNoParams() {
    connectionStringValidSet.forEach(connectionString -> {
        try {
            PlcConnection opcuaConnection = new PlcDriverManager().getConnection(connectionString);
            Condition<PlcConnection> is_connected = new Condition<>(PlcConnection::isConnected, "is connected");
            assertThat(opcuaConnection).is(is_connected);
            opcuaConnection.close();
            assertThat(opcuaConnection).isNot(is_connected);
        } catch (PlcConnectionException e) {
            fail("Exception during connectionNoParams while connecting Test EXCEPTION: " + e.getMessage());
        } catch (Exception e) {
            fail("Exception during connectionNoParams while closing Test EXCEPTION: " + e.getMessage());
        }
    });
}
Also used : Condition(org.assertj.core.api.Condition) PlcConnectionException(org.apache.plc4x.java.api.exceptions.PlcConnectionException) PlcDriverManager(org.apache.plc4x.java.PlcDriverManager) PlcConnection(org.apache.plc4x.java.api.PlcConnection) ExecutionException(java.util.concurrent.ExecutionException) PlcConnectionException(org.apache.plc4x.java.api.exceptions.PlcConnectionException)

Example 18 with PlcDriverManager

use of org.apache.plc4x.java.PlcDriverManager in project plc4x by apache.

the class OpcuaPlcDriverTest method writeVariables.

@Test
public void writeVariables() throws Exception {
    PlcConnection opcuaConnection = new PlcDriverManager().getConnection(tcpConnectionAddress);
    Condition<PlcConnection> is_connected = new Condition<>(PlcConnection::isConnected, "is connected");
    assertThat(opcuaConnection).is(is_connected);
    PlcWriteRequest.Builder builder = opcuaConnection.writeRequestBuilder();
    builder.addItem("Bool", BOOL_IDENTIFIER_READ_WRITE, true);
    builder.addItem("Byte", BYTE_IDENTIFIER_READ_WRITE + ";BYTE", (short) 3);
    builder.addItem("Double", DOUBLE_IDENTIFIER_READ_WRITE, 0.5d);
    builder.addItem("Float", FLOAT_IDENTIFIER_READ_WRITE, 0.5f);
    // builder.addItem("Int16", INT16_IDENTIFIER_READ_WRITE + "", (short) 1);
    builder.addItem("Int32", INT32_IDENTIFIER_READ_WRITE, 42);
    builder.addItem("Int64", INT64_IDENTIFIER_READ_WRITE, 42L);
    builder.addItem("Integer", INTEGER_IDENTIFIER_READ_WRITE, 42);
    builder.addItem("SByte", SBYTE_IDENTIFIER_READ_WRITE + ";SINT", -127);
    builder.addItem("String", STRING_IDENTIFIER_READ_WRITE, "Helllo Toddy!");
    builder.addItem("UInt16", UINT16_IDENTIFIER_READ_WRITE + ";UINT", 65535);
    builder.addItem("UInt32", UINT32_IDENTIFIER_READ_WRITE + ";UDINT", 101010101L);
    builder.addItem("UInt64", UINT64_IDENTIFIER_READ_WRITE + ";ULINT", new BigInteger("1337"));
    builder.addItem("UInteger", UINTEGER_IDENTIFIER_READ_WRITE + ";UDINT", 102020202L);
    builder.addItem("BooleanArray", BOOL_ARRAY_IDENTIFIER, new Boolean[] { true, true, true, true, true });
    builder.addItem("ByteArray", BYTE_ARRAY_IDENTIFIER + ";BYTE", new Short[] { 1, 100, 100, 255, 123 });
    builder.addItem("DoubleArray", DOUBLE_ARRAY_IDENTIFIER, new Double[] { 1.0, 2.0, 3.0, 4.0, 5.0 });
    builder.addItem("FloatArray", FLOAT_ARRAY_IDENTIFIER, new Float[] { 1.0F, 2.0F, 3.0F, 4.0F, 5.0F });
    builder.addItem("Int16Array", INT16_ARRAY_IDENTIFIER, new Short[] { 1, 2, 3, 4, 5 });
    builder.addItem("Int32Array", INT32_ARRAY_IDENTIFIER, new Integer[] { 1, 2, 3, 4, 5 });
    builder.addItem("Int64Array", INT64_ARRAY_IDENTIFIER, new Long[] { 1L, 2L, 3L, 4L, 5L });
    builder.addItem("IntegerArray", INT32_ARRAY_IDENTIFIER, new Integer[] { 1, 2, 3, 4, 5 });
    builder.addItem("SByteArray", SBYTE_ARRAY_IDENTIFIER, new Byte[] { 1, 2, 3, 4, 5 });
    builder.addItem("StringArray", STRING_ARRAY_IDENTIFIER, new String[] { "1", "2", "3", "4", "5" });
    builder.addItem("UInt16Array", UINT16_ARRAY_IDENTIFIER + ";UINT", new Short[] { 1, 2, 3, 4, 5 });
    builder.addItem("UInt32Array", UINT32_ARRAY_IDENTIFIER + ";UDINT", new Integer[] { 1, 2, 3, 4, 5 });
    builder.addItem("UInt64Array", UINT64_ARRAY_IDENTIFIER + ";ULINT", new Long[] { 1L, 2L, 3L, 4L, 5L });
    builder.addItem("DoesNotExists", DOES_NOT_EXIST_IDENTIFIER_READ_WRITE, "11");
    PlcWriteRequest request = builder.build();
    PlcWriteResponse response = request.execute().get();
    assertThat(response.getResponseCode("Bool")).isEqualTo(PlcResponseCode.OK);
    assertThat(response.getResponseCode("Byte")).isEqualTo(PlcResponseCode.OK);
    assertThat(response.getResponseCode("Double")).isEqualTo(PlcResponseCode.OK);
    assertThat(response.getResponseCode("Float")).isEqualTo(PlcResponseCode.OK);
    // assertThat(response.getResponseCode("Int16")).isEqualTo(PlcResponseCode.OK);
    assertThat(response.getResponseCode("Int32")).isEqualTo(PlcResponseCode.OK);
    assertThat(response.getResponseCode("Int64")).isEqualTo(PlcResponseCode.OK);
    assertThat(response.getResponseCode("Integer")).isEqualTo(PlcResponseCode.OK);
    assertThat(response.getResponseCode("SByte")).isEqualTo(PlcResponseCode.OK);
    assertThat(response.getResponseCode("String")).isEqualTo(PlcResponseCode.OK);
    assertThat(response.getResponseCode("UInt16")).isEqualTo(PlcResponseCode.OK);
    assertThat(response.getResponseCode("UInt32")).isEqualTo(PlcResponseCode.OK);
    assertThat(response.getResponseCode("UInt64")).isEqualTo(PlcResponseCode.OK);
    assertThat(response.getResponseCode("UInteger")).isEqualTo(PlcResponseCode.OK);
    assertThat(response.getResponseCode("BooleanArray")).isEqualTo(PlcResponseCode.OK);
    assertThat(response.getResponseCode("ByteArray")).isEqualTo(PlcResponseCode.OK);
    assertThat(response.getResponseCode("DoubleArray")).isEqualTo(PlcResponseCode.OK);
    assertThat(response.getResponseCode("FloatArray")).isEqualTo(PlcResponseCode.OK);
    assertThat(response.getResponseCode("Int16Array")).isEqualTo(PlcResponseCode.OK);
    assertThat(response.getResponseCode("Int32Array")).isEqualTo(PlcResponseCode.OK);
    assertThat(response.getResponseCode("Int64Array")).isEqualTo(PlcResponseCode.OK);
    assertThat(response.getResponseCode("IntegerArray")).isEqualTo(PlcResponseCode.OK);
    assertThat(response.getResponseCode("SByteArray")).isEqualTo(PlcResponseCode.OK);
    assertThat(response.getResponseCode("StringArray")).isEqualTo(PlcResponseCode.OK);
    assertThat(response.getResponseCode("UInt16Array")).isEqualTo(PlcResponseCode.OK);
    assertThat(response.getResponseCode("UInt32Array")).isEqualTo(PlcResponseCode.OK);
    assertThat(response.getResponseCode("UInt64Array")).isEqualTo(PlcResponseCode.OK);
    assertThat(response.getResponseCode("DoesNotExists")).isEqualTo(PlcResponseCode.NOT_FOUND);
    opcuaConnection.close();
    assert !opcuaConnection.isConnected();
}
Also used : Condition(org.assertj.core.api.Condition) PlcWriteRequest(org.apache.plc4x.java.api.messages.PlcWriteRequest) BigInteger(java.math.BigInteger) PlcWriteResponse(org.apache.plc4x.java.api.messages.PlcWriteResponse) PlcDriverManager(org.apache.plc4x.java.PlcDriverManager) PlcConnection(org.apache.plc4x.java.api.PlcConnection)

Example 19 with PlcDriverManager

use of org.apache.plc4x.java.PlcDriverManager in project plc4x by apache.

the class OpcuaPlcDriverTest method connectionWithDiscoveryParam.

@Test
public void connectionWithDiscoveryParam() {
    connectionStringValidSet.forEach(connectionAddress -> {
        discoveryParamValidSet.forEach(discoveryParam -> {
            String connectionString = connectionAddress + paramSectionDivider + discoveryParam;
            try {
                PlcConnection opcuaConnection = new PlcDriverManager().getConnection(connectionString);
                Condition<PlcConnection> is_connected = new Condition<>(PlcConnection::isConnected, "is connected");
                assertThat(opcuaConnection).is(is_connected);
                opcuaConnection.close();
                assertThat(opcuaConnection).isNot(is_connected);
            } catch (PlcConnectionException e) {
                fail("Exception during connectionWithDiscoveryParam while connecting Test EXCEPTION: " + e.getMessage());
            } catch (Exception e) {
                fail("Exception during connectionWithDiscoveryParam while closing Test EXCEPTION: " + e.getMessage());
            }
        });
    });
}
Also used : Condition(org.assertj.core.api.Condition) PlcConnectionException(org.apache.plc4x.java.api.exceptions.PlcConnectionException) PlcDriverManager(org.apache.plc4x.java.PlcDriverManager) PlcConnection(org.apache.plc4x.java.api.PlcConnection) ExecutionException(java.util.concurrent.ExecutionException) PlcConnectionException(org.apache.plc4x.java.api.exceptions.PlcConnectionException)

Example 20 with PlcDriverManager

use of org.apache.plc4x.java.PlcDriverManager in project plc4x by apache.

the class OpcuaSubscriptionHandleTest method setup.

@BeforeAll
public static void setup() {
    try {
        // When switching JDK versions from a newer to an older version,
        // this can cause the server to not start correctly.
        // Deleting the directory makes sure the key-store is initialized correctly.
        Path securityBaseDir = Paths.get(System.getProperty("java.io.tmpdir"), "server", "security");
        try {
            Files.delete(securityBaseDir);
        } catch (Exception e) {
        // Ignore this ...
        }
        exampleServer = new ExampleServer();
        exampleServer.startup().get();
        // Connect
        opcuaConnection = new PlcDriverManager().getConnection(tcpConnectionAddress);
        assert opcuaConnection.isConnected();
    } catch (Exception e) {
        e.printStackTrace();
        try {
            exampleServer.shutdown().get();
        } catch (Exception j) {
            j.printStackTrace();
        }
    }
}
Also used : Path(java.nio.file.Path) ExampleServer(org.eclipse.milo.examples.server.ExampleServer) PlcDriverManager(org.apache.plc4x.java.PlcDriverManager)

Aggregations

PlcDriverManager (org.apache.plc4x.java.PlcDriverManager)54 PlcConnection (org.apache.plc4x.java.api.PlcConnection)35 PlcConnectionException (org.apache.plc4x.java.api.exceptions.PlcConnectionException)13 PlcReadRequest (org.apache.plc4x.java.api.messages.PlcReadRequest)13 PlcReadResponse (org.apache.plc4x.java.api.messages.PlcReadResponse)13 Test (org.junit.jupiter.api.Test)12 PooledPlcDriverManager (org.apache.plc4x.java.utils.connectionpool.PooledPlcDriverManager)10 BigInteger (java.math.BigInteger)8 ExecutionException (java.util.concurrent.ExecutionException)8 TimeUnit (java.util.concurrent.TimeUnit)5 Condition (org.assertj.core.api.Condition)5 BigDecimal (java.math.BigDecimal)4 LocalDate (java.time.LocalDate)4 Map (java.util.Map)4 PlcRuntimeException (org.apache.plc4x.java.api.exceptions.PlcRuntimeException)4 PlcSubscriptionRequest (org.apache.plc4x.java.api.messages.PlcSubscriptionRequest)4 PlcSubscriptionResponse (org.apache.plc4x.java.api.messages.PlcSubscriptionResponse)4 PlcSubscriptionHandle (org.apache.plc4x.java.api.model.PlcSubscriptionHandle)4 Disabled (org.junit.jupiter.api.Disabled)4 LocalDateTime (java.time.LocalDateTime)3