Example usage for java.util.concurrent.atomic AtomicReference toString

List of usage examples for java.util.concurrent.atomic AtomicReference toString

Introduction

In this page you can find the example usage for java.util.concurrent.atomic AtomicReference toString.

Prototype

public String toString() 

Source Link

Document

Returns the String representation of the current value.

Usage

From source file:org.openhab.io.transport.modbus.test.SmokeTest.java

/**
 * Test handling of slave error responses. In this case, error code = 2, illegal data address, since no data.
 *
 * @throws InterruptedException/*  w  ww  . j a  va  2  s  . co  m*/
 */
@Test
public void testSlaveReadErrorResponse() throws InterruptedException {
    ModbusSlaveEndpoint endpoint = getEndpoint();
    AtomicInteger okCount = new AtomicInteger();
    AtomicInteger errorCount = new AtomicInteger();
    CountDownLatch callbackCalled = new CountDownLatch(1);
    AtomicReference<Exception> lastError = new AtomicReference<>();
    BasicPollTaskImpl task = new BasicPollTaskImpl(endpoint, new BasicModbusReadRequestBlueprint(SLAVE_UNIT_ID,
            ModbusReadFunctionCode.READ_MULTIPLE_REGISTERS, 0, 5, 1), new ModbusReadCallback() {

                @Override
                public void onRegisters(ModbusReadRequestBlueprint request, ModbusRegisterArray registers) {
                    okCount.incrementAndGet();
                    callbackCalled.countDown();
                }

                @Override
                public void onError(ModbusReadRequestBlueprint request, Exception error) {
                    lastError.set(error);
                    errorCount.incrementAndGet();
                    callbackCalled.countDown();
                }

                @Override
                public void onBits(ModbusReadRequestBlueprint request, BitArray bits) {
                    okCount.incrementAndGet();
                    callbackCalled.countDown();
                }
            });
    modbusManager.submitOneTimePoll(task);
    callbackCalled.await(5, TimeUnit.SECONDS);
    assertThat(okCount.get(), is(equalTo(0)));
    assertThat(errorCount.get(), is(equalTo(1)));
    assertTrue(lastError.toString(), lastError.get() instanceof ModbusSlaveErrorResponseException);
}

From source file:org.openhab.io.transport.modbus.test.SmokeTest.java

/**
 * Test handling of connection error responses.
 *
 * @throws InterruptedException//from   ww  w  .ja va  2  s  .  c o  m
 */
@Test
public void testSlaveConnectionError() throws InterruptedException {
    // In the test we have non-responding slave (see http://stackoverflow.com/a/904609), and we use short connection
    // timeout
    ModbusSlaveEndpoint endpoint = new ModbusTCPSlaveEndpoint("10.255.255.1", 9999);
    EndpointPoolConfiguration configuration = new EndpointPoolConfiguration();
    configuration.setConnectTimeoutMillis(100);
    modbusManager.setEndpointPoolConfiguration(endpoint, configuration);

    AtomicInteger okCount = new AtomicInteger();
    AtomicInteger errorCount = new AtomicInteger();
    CountDownLatch callbackCalled = new CountDownLatch(1);
    AtomicReference<Exception> lastError = new AtomicReference<>();
    BasicPollTaskImpl task = new BasicPollTaskImpl(endpoint, new BasicModbusReadRequestBlueprint(SLAVE_UNIT_ID,
            ModbusReadFunctionCode.READ_MULTIPLE_REGISTERS, 0, 5, 1), new ModbusReadCallback() {

                @Override
                public void onRegisters(ModbusReadRequestBlueprint request, ModbusRegisterArray registers) {
                    okCount.incrementAndGet();
                    callbackCalled.countDown();
                }

                @Override
                public void onError(ModbusReadRequestBlueprint request, Exception error) {
                    lastError.set(error);
                    errorCount.incrementAndGet();
                    callbackCalled.countDown();
                }

                @Override
                public void onBits(ModbusReadRequestBlueprint request, BitArray bits) {
                    okCount.incrementAndGet();
                    callbackCalled.countDown();
                }
            });
    modbusManager.submitOneTimePoll(task);
    callbackCalled.await(5, TimeUnit.SECONDS);
    assertThat(okCount.get(), is(equalTo(0)));
    assertThat(errorCount.get(), is(equalTo(1)));
    assertTrue(lastError.toString(), lastError.get() instanceof ModbusConnectionException);
}

From source file:org.openhab.io.transport.modbus.test.SmokeTest.java

/**
 * Have super slow connection response, eventually resulting as timeout (due to default timeout of 3 s in
 * net.wimpi.modbus.Modbus.DEFAULT_TIMEOUT)
 *
 * @throws InterruptedException// w w  w.jav a 2 s. c  o  m
 */
@Test
public void testIOError() throws InterruptedException {
    artificialServerWait = 30000;
    ModbusSlaveEndpoint endpoint = getEndpoint();

    AtomicInteger okCount = new AtomicInteger();
    AtomicInteger errorCount = new AtomicInteger();
    CountDownLatch callbackCalled = new CountDownLatch(1);
    AtomicReference<Exception> lastError = new AtomicReference<>();
    BasicPollTaskImpl task = new BasicPollTaskImpl(endpoint, new BasicModbusReadRequestBlueprint(SLAVE_UNIT_ID,
            ModbusReadFunctionCode.READ_MULTIPLE_REGISTERS, 0, 5, 1), new ModbusReadCallback() {

                @Override
                public void onRegisters(ModbusReadRequestBlueprint request, ModbusRegisterArray registers) {
                    okCount.incrementAndGet();
                    callbackCalled.countDown();
                }

                @Override
                public void onError(ModbusReadRequestBlueprint request, Exception error) {
                    lastError.set(error);
                    errorCount.incrementAndGet();
                    callbackCalled.countDown();
                }

                @Override
                public void onBits(ModbusReadRequestBlueprint request, BitArray bits) {
                    okCount.incrementAndGet();
                    callbackCalled.countDown();
                }
            });
    modbusManager.submitOneTimePoll(task);
    callbackCalled.await(15, TimeUnit.SECONDS);
    assertThat(okCount.get(), is(equalTo(0)));
    assertThat(lastError.toString(), errorCount.get(), is(equalTo(1)));
    assertTrue(lastError.toString(), lastError.get() instanceof ModbusSlaveIOException);
}

From source file:org.openhab.io.transport.modbus.test.SmokeTest.java

/**
 * Write is out-of-bounds, slave should return error
 *
 * @throws InterruptedException/*from w w w .  ja  va2s .  co  m*/
 */
@Test
public void testOneOffWriteMultipleCoilError() throws InterruptedException {
    generateData();
    ModbusSlaveEndpoint endpoint = getEndpoint();

    AtomicInteger unexpectedCount = new AtomicInteger();
    CountDownLatch callbackCalled = new CountDownLatch(1);
    AtomicReference<Exception> lastError = new AtomicReference<>();

    BitArray bits = new BasicBitArray(500);
    BasicWriteTask task = new BasicWriteTask(endpoint,
            new BasicModbusWriteCoilRequestBlueprint(SLAVE_UNIT_ID, 3, bits, true, 1),
            new ModbusWriteCallback() {

                @Override
                public void onWriteResponse(ModbusWriteRequestBlueprint request, ModbusResponse response) {
                    unexpectedCount.incrementAndGet();
                    callbackCalled.countDown();
                }

                @Override
                public void onError(ModbusWriteRequestBlueprint request, Exception error) {
                    lastError.set(error);
                    callbackCalled.countDown();
                }
            });
    modbusManager.submitOneTimeWrite(task);
    callbackCalled.await(5, TimeUnit.SECONDS);

    assertThat(unexpectedCount.get(), is(equalTo(0)));
    assertTrue(lastError.toString(), lastError.get() instanceof ModbusSlaveErrorResponseException);

    assertThat(modbustRequestCaptor.getAllReturnValues().size(), is(equalTo(1)));
    ModbusRequest request = modbustRequestCaptor.getAllReturnValues().get(0);
    assertThat(request.getFunctionCode(), is(equalTo(15)));
    assertThat(((WriteMultipleCoilsRequest) request).getReference(), is(equalTo(3)));
    assertThat(((WriteMultipleCoilsRequest) request).getBitCount(), is(equalTo(bits.size())));
    assertThat(new BitArrayWrappingBitVector(((WriteMultipleCoilsRequest) request).getCoils(), bits.size()),
            is(equalTo(bits)));
}

From source file:org.openhab.io.transport.modbus.test.SmokeTest.java

/**
 *
 * Write is out-of-bounds, slave should return error
 *
 * @throws InterruptedException//from ww  w . j a  v a 2 s .c  om
 */
@Test
public void testOneOffWriteSingleCoilError() throws InterruptedException {
    generateData();
    ModbusSlaveEndpoint endpoint = getEndpoint();

    AtomicInteger unexpectedCount = new AtomicInteger();
    CountDownLatch callbackCalled = new CountDownLatch(1);
    AtomicReference<Exception> lastError = new AtomicReference<>();

    BitArray bits = new BasicBitArray(true);
    BasicWriteTask task = new BasicWriteTask(endpoint,
            new BasicModbusWriteCoilRequestBlueprint(SLAVE_UNIT_ID, 300, bits, false, 1),
            new ModbusWriteCallback() {

                @Override
                public void onWriteResponse(ModbusWriteRequestBlueprint request, ModbusResponse response) {
                    unexpectedCount.incrementAndGet();
                    callbackCalled.countDown();
                }

                @Override
                public void onError(ModbusWriteRequestBlueprint request, Exception error) {
                    lastError.set(error);
                    callbackCalled.countDown();
                }
            });
    modbusManager.submitOneTimeWrite(task);
    callbackCalled.await(5, TimeUnit.SECONDS);

    assertThat(unexpectedCount.get(), is(equalTo(0)));
    assertTrue(lastError.toString(), lastError.get() instanceof ModbusSlaveErrorResponseException);

    assertThat(modbustRequestCaptor.getAllReturnValues().size(), is(equalTo(1)));
    ModbusRequest request = modbustRequestCaptor.getAllReturnValues().get(0);
    assertThat(request.getFunctionCode(), is(equalTo(5)));
    assertThat(((WriteCoilRequest) request).getReference(), is(equalTo(300)));
    assertThat(((WriteCoilRequest) request).getCoil(), is(equalTo(true)));
}

From source file:org.springframework.integration.ip.tcp.connection.ConnectionEventTests.java

private void testServerExceptionGuts(int port, AbstractServerConnectionFactory factory) throws Exception {
    ServerSocket ss = null;// ww w.j  ava 2  s.  co  m
    try {
        ss = ServerSocketFactory.getDefault().createServerSocket(port);
    } catch (Exception e) {
        return; // skip this test, someone grabbed the port
    }
    final AtomicReference<TcpConnectionServerExceptionEvent> theEvent = new AtomicReference<TcpConnectionServerExceptionEvent>();
    final CountDownLatch latch = new CountDownLatch(1);
    factory.setApplicationEventPublisher(new ApplicationEventPublisher() {

        @Override
        public void publishEvent(ApplicationEvent event) {
            theEvent.set((TcpConnectionServerExceptionEvent) event);
            latch.countDown();
        }

        @Override
        public void publishEvent(Object event) {

        }

    });
    factory.setBeanName("sf");
    factory.registerListener(message -> false);
    Log logger = spy(TestUtils.getPropertyValue(factory, "logger", Log.class));
    doAnswer(new DoesNothing()).when(logger).error(anyString(), any(Throwable.class));
    new DirectFieldAccessor(factory).setPropertyValue("logger", logger);

    factory.start();
    assertTrue(latch.await(10, TimeUnit.SECONDS));
    String actual = theEvent.toString();
    assertThat(actual, containsString("cause=java.net.BindException"));
    assertThat(actual, containsString("source=" + "sf, port=" + port));

    ArgumentCaptor<String> reasonCaptor = ArgumentCaptor.forClass(String.class);
    ArgumentCaptor<Throwable> throwableCaptor = ArgumentCaptor.forClass(Throwable.class);
    verify(logger).error(reasonCaptor.capture(), throwableCaptor.capture());
    assertThat(reasonCaptor.getValue(), startsWith("Error on Server"));
    assertThat(reasonCaptor.getValue(), endsWith("; port = " + port));
    assertThat(throwableCaptor.getValue(), instanceOf(BindException.class));
    ss.close();
}