List of usage examples for java.util.concurrent.atomic AtomicReference toString
public String toString()
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(); }