List of usage examples for org.springframework.integration.ip.tcp.connection TcpNioClientConnectionFactory processNioSelections
protected void processNioSelections(int selectionCount, final Selector selector, @Nullable ServerSocketChannel server, Map<SocketChannel, TcpNioConnection> connectionMap)
From source file:org.springframework.integration.ip.tcp.connection.TcpNioConnectionTests.java
@Test public void testCleanup() throws Exception { TcpNioClientConnectionFactory factory = new TcpNioClientConnectionFactory("localhost", 0); factory.setApplicationEventPublisher(nullPublisher); factory.setNioHarvestInterval(100);/* w w w. java 2s . c om*/ Map<SocketChannel, TcpNioConnection> connections = new HashMap<SocketChannel, TcpNioConnection>(); SocketChannel chan1 = mock(SocketChannel.class); SocketChannel chan2 = mock(SocketChannel.class); SocketChannel chan3 = mock(SocketChannel.class); TcpNioConnection conn1 = mock(TcpNioConnection.class); TcpNioConnection conn2 = mock(TcpNioConnection.class); TcpNioConnection conn3 = mock(TcpNioConnection.class); connections.put(chan1, conn1); connections.put(chan2, conn2); connections.put(chan3, conn3); final List<Field> fields = new ArrayList<Field>(); ReflectionUtils.doWithFields(SocketChannel.class, field -> { field.setAccessible(true); fields.add(field); }, field -> field.getName().equals("open")); Field field = fields.get(0); // Can't use Mockito because isOpen() is final ReflectionUtils.setField(field, chan1, true); ReflectionUtils.setField(field, chan2, true); ReflectionUtils.setField(field, chan3, true); Selector selector = mock(Selector.class); HashSet<SelectionKey> keys = new HashSet<SelectionKey>(); when(selector.selectedKeys()).thenReturn(keys); factory.processNioSelections(1, selector, null, connections); assertEquals(3, connections.size()); // all open ReflectionUtils.setField(field, chan1, false); factory.processNioSelections(1, selector, null, connections); assertEquals(3, connections.size()); // interval didn't pass Thread.sleep(110); factory.processNioSelections(1, selector, null, connections); assertEquals(2, connections.size()); // first is closed ReflectionUtils.setField(field, chan2, false); factory.processNioSelections(1, selector, null, connections); assertEquals(2, connections.size()); // interval didn't pass Thread.sleep(110); factory.processNioSelections(1, selector, null, connections); assertEquals(1, connections.size()); // second is closed ReflectionUtils.setField(field, chan3, false); factory.processNioSelections(1, selector, null, connections); assertEquals(1, connections.size()); // interval didn't pass Thread.sleep(110); factory.processNioSelections(1, selector, null, connections); assertEquals(0, connections.size()); // third is closed assertEquals(0, TestUtils.getPropertyValue(factory, "connections", Map.class).size()); }