@Test public void testNioSingle() throws Exception { AbstractServerConnectionFactory scf = new TcpNioServerConnectionFactory(0); scf.setSingleUse(true); TcpInboundGateway gateway = new TcpInboundGateway(); gateway.setConnectionFactory(scf); scf.start(); TestingUtilities.waitListening(scf, 20000L); int port = scf.getPort(); final QueueChannel channel = new QueueChannel(); gateway.setRequestChannel(channel); gateway.setBeanFactory(mock(BeanFactory.class)); ServiceActivatingHandler handler = new ServiceActivatingHandler(new Service()); handler.setChannelResolver(channelName -> channel); handler.setBeanFactory(mock(BeanFactory.class)); handler.afterPropertiesSet(); Socket socket1 = SocketFactory.getDefault().createSocket("localhost", port); socket1.getOutputStream().write("Test1\r\n".getBytes()); Socket socket2 = SocketFactory.getDefault().createSocket("localhost", port); socket2.getOutputStream().write("Test2\r\n".getBytes()); handler.handleMessage(channel.receive(10000)); handler.handleMessage(channel.receive(10000)); byte[] bytes = new byte[12]; readFully(socket1.getInputStream(), bytes); assertEquals("Echo:Test1\r\n", new String(bytes)); readFully(socket2.getInputStream(), bytes); assertEquals("Echo:Test2\r\n", new String(bytes)); gateway.stop(); scf.stop(); }
@Test public void testNetSingle() throws Exception { AbstractServerConnectionFactory scf = new TcpNetServerConnectionFactory(0); scf.setSingleUse(true); TcpInboundGateway gateway = new TcpInboundGateway(); gateway.setConnectionFactory(scf); gateway.setBeanFactory(mock(BeanFactory.class)); scf.start(); TestingUtilities.waitListening(scf, 20000L); int port = scf.getPort(); final QueueChannel channel = new QueueChannel(); gateway.setRequestChannel(channel); ServiceActivatingHandler handler = new ServiceActivatingHandler(new Service()); handler.setChannelResolver(channelName -> channel); handler.setBeanFactory(mock(BeanFactory.class)); handler.afterPropertiesSet(); Socket socket1 = SocketFactory.getDefault().createSocket("localhost", port); socket1.getOutputStream().write("Test1\r\n".getBytes()); Socket socket2 = SocketFactory.getDefault().createSocket("localhost", port); socket2.getOutputStream().write("Test2\r\n".getBytes()); handler.handleMessage(channel.receive(10000)); handler.handleMessage(channel.receive(10000)); byte[] bytes = new byte[12]; readFully(socket1.getInputStream(), bytes); assertEquals("Echo:Test1\r\n", new String(bytes)); readFully(socket2.getInputStream(), bytes); assertEquals("Echo:Test2\r\n", new String(bytes)); gateway.stop(); scf.stop(); }
@Test public void returnAddressHeaderWithChannelName() { TestUtils.TestApplicationContext testApplicationContext = TestUtils.createTestApplicationContext(); testApplicationContext.refresh(); QueueChannel channel = new QueueChannel(1); channel.setBeanName("testChannel"); TestChannelResolver channelResolver = new TestChannelResolver(); channelResolver.addChannel("testChannel", channel); ServiceActivatingHandler endpoint = this.createEndpoint(); endpoint.setChannelResolver(channelResolver); endpoint.setBeanFactory(testApplicationContext); endpoint.afterPropertiesSet(); Message<?> message = MessageBuilder.withPayload("foo") .setReplyChannelName("testChannel").build(); endpoint.handleMessage(message); Message<?> reply = channel.receive(0); assertNotNull(reply); assertEquals("FOO", reply.getPayload()); testApplicationContext.close(); }
TestChannelResolver channelResolver = new TestChannelResolver(); channelResolver.addChannel("replyChannel2", replyChannel2); endpoint.setChannelResolver(channelResolver); endpoint.setBeanFactory(testApplicationContext); endpoint.afterPropertiesSet();