POLISH: avoided some deprecation warnings, added some mock tests.
This commit is contained in:
@@ -16,6 +16,30 @@
|
||||
|
||||
package org.springframework.integration.http;
|
||||
|
||||
import org.easymock.IAnswer;
|
||||
import org.easymock.classextension.ConstructorArgs;
|
||||
import org.junit.Before;
|
||||
import org.junit.Test;
|
||||
import org.springframework.integration.core.Message;
|
||||
import org.springframework.integration.core.MessageChannel;
|
||||
import org.springframework.integration.core.MessageHeaders;
|
||||
import org.springframework.integration.message.StringMessage;
|
||||
import org.springframework.mock.web.MockHttpServletRequest;
|
||||
import org.springframework.mock.web.MockHttpServletResponse;
|
||||
import org.springframework.web.servlet.View;
|
||||
|
||||
import javax.servlet.ServletException;
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
import java.io.ByteArrayInputStream;
|
||||
import java.io.IOException;
|
||||
import java.io.ObjectInputStream;
|
||||
import java.io.UnsupportedEncodingException;
|
||||
import java.security.Principal;
|
||||
import java.util.Date;
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
|
||||
import static org.easymock.EasyMock.anyObject;
|
||||
import static org.easymock.EasyMock.eq;
|
||||
import static org.easymock.EasyMock.expect;
|
||||
@@ -30,32 +54,6 @@ import static org.hamcrest.CoreMatchers.is;
|
||||
import static org.hamcrest.CoreMatchers.notNullValue;
|
||||
import static org.junit.Assert.assertThat;
|
||||
|
||||
import java.io.ByteArrayInputStream;
|
||||
import java.io.IOException;
|
||||
import java.io.ObjectInputStream;
|
||||
import java.io.UnsupportedEncodingException;
|
||||
import java.security.Principal;
|
||||
import java.util.Date;
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
|
||||
import javax.servlet.ServletException;
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
|
||||
import org.easymock.IAnswer;
|
||||
import org.easymock.classextension.ConstructorArgs;
|
||||
import org.junit.Before;
|
||||
import org.junit.Test;
|
||||
|
||||
import org.springframework.integration.core.Message;
|
||||
import org.springframework.integration.core.MessageChannel;
|
||||
import org.springframework.integration.core.MessageHeaders;
|
||||
import org.springframework.integration.message.StringMessage;
|
||||
import org.springframework.mock.web.MockHttpServletRequest;
|
||||
import org.springframework.mock.web.MockHttpServletResponse;
|
||||
import org.springframework.web.servlet.View;
|
||||
|
||||
/**
|
||||
* @author Alex Peters
|
||||
*/
|
||||
@@ -71,7 +69,7 @@ public class HttpInboundEndpointTests {
|
||||
|
||||
private final MessageChannel replyChannel = createMock(MessageChannel.class);
|
||||
|
||||
private final Object[] allmocks = new Object[] { requestChannel, replyChannel };
|
||||
private final Object[] allMocks = new Object[] { requestChannel, replyChannel };
|
||||
|
||||
private HttpInboundEndpoint endpoint;
|
||||
|
||||
@@ -80,7 +78,7 @@ public class HttpInboundEndpointTests {
|
||||
private MockHttpServletResponse response;
|
||||
|
||||
|
||||
static {
|
||||
static {
|
||||
try {
|
||||
ANY_BINARY_PAYLOAD = "any binary content..blabla...bla.äöüßß߀€€€".getBytes(ANY_ENCODING);
|
||||
}
|
||||
@@ -96,7 +94,7 @@ public class HttpInboundEndpointTests {
|
||||
endpoint.setRequestChannel(requestChannel);
|
||||
endpoint.setReplyChannel(replyChannel);
|
||||
endpoint.afterPropertiesSet();
|
||||
reset(allmocks);
|
||||
reset(allMocks);
|
||||
request = new MockHttpServletRequest("GET", "/anyurl");
|
||||
response = new MockHttpServletResponse();
|
||||
response.setCharacterEncoding(ANY_ENCODING);
|
||||
@@ -133,9 +131,9 @@ public class HttpInboundEndpointTests {
|
||||
return true;
|
||||
}
|
||||
});
|
||||
replay(allmocks);
|
||||
replay(allMocks);
|
||||
endpoint.handleRequest(request, response);
|
||||
verify(allmocks);
|
||||
verify(allMocks);
|
||||
}
|
||||
|
||||
@Test
|
||||
@@ -150,9 +148,9 @@ public class HttpInboundEndpointTests {
|
||||
return true;
|
||||
}
|
||||
});
|
||||
replay(allmocks);
|
||||
replay(allMocks);
|
||||
endpoint.handleRequest(request, response);
|
||||
verify(allmocks);
|
||||
verify(allMocks);
|
||||
}
|
||||
|
||||
@Test
|
||||
@@ -171,9 +169,9 @@ public class HttpInboundEndpointTests {
|
||||
return true;
|
||||
}
|
||||
});
|
||||
replay(allmocks);
|
||||
replay(allMocks);
|
||||
endpoint.handleRequest(request, response);
|
||||
verify(allmocks);
|
||||
verify(allMocks);
|
||||
}
|
||||
|
||||
@Test
|
||||
@@ -195,9 +193,9 @@ public class HttpInboundEndpointTests {
|
||||
return true;
|
||||
}
|
||||
});
|
||||
replay(allmocks);
|
||||
replay(allMocks);
|
||||
endpoint.handleRequest(request, response);
|
||||
verify(allmocks);
|
||||
verify(allMocks);
|
||||
}
|
||||
|
||||
@Test
|
||||
@@ -215,9 +213,9 @@ public class HttpInboundEndpointTests {
|
||||
return true;
|
||||
}
|
||||
});
|
||||
replay(allmocks);
|
||||
replay(allMocks);
|
||||
endpoint.handleRequest(request, response);
|
||||
verify(allmocks);
|
||||
verify(allMocks);
|
||||
}
|
||||
|
||||
@Test
|
||||
@@ -238,9 +236,9 @@ public class HttpInboundEndpointTests {
|
||||
return true;
|
||||
}
|
||||
});
|
||||
replay(allmocks);
|
||||
replay(allMocks);
|
||||
endpoint.handleRequest(request, response);
|
||||
verify(allmocks);
|
||||
verify(allMocks);
|
||||
}
|
||||
|
||||
@Test
|
||||
@@ -255,9 +253,9 @@ public class HttpInboundEndpointTests {
|
||||
return true;
|
||||
}
|
||||
});
|
||||
replay(allmocks);
|
||||
replay(allMocks);
|
||||
endpoint.handleRequest(request, response);
|
||||
verify(allmocks);
|
||||
verify(allMocks);
|
||||
}
|
||||
|
||||
@Test
|
||||
@@ -273,9 +271,9 @@ public class HttpInboundEndpointTests {
|
||||
return true;
|
||||
}
|
||||
});
|
||||
replay(allmocks);
|
||||
replay(allMocks);
|
||||
endpoint.handleRequest(request, response);
|
||||
verify(allmocks);
|
||||
verify(allMocks);
|
||||
}
|
||||
|
||||
@Test
|
||||
@@ -290,7 +288,7 @@ public class HttpInboundEndpointTests {
|
||||
public void handleRequest_withoutReplyMessage_return200()
|
||||
throws ServletException, IOException {
|
||||
expect(requestChannel.send(isA(Message.class))).andReturn(true);
|
||||
replay(allmocks);
|
||||
replay(allMocks);
|
||||
endpoint.handleRequest(request, response);
|
||||
assertThat(response.getStatus(), is(HttpServletResponse.SC_OK));
|
||||
}
|
||||
@@ -299,20 +297,20 @@ public class HttpInboundEndpointTests {
|
||||
public void handleRequest_replyWithTextPayload_textAsRespContent()
|
||||
throws ServletException, IOException {
|
||||
setupEndpointAsMock(ANY_STRING_PAYLOAD);
|
||||
replay(allmocks);
|
||||
replay(allMocks);
|
||||
endpoint.handleRequest(request, response);
|
||||
assertThat(response.getContentAsString(), is(ANY_STRING_PAYLOAD));
|
||||
verify(allmocks);
|
||||
verify(allMocks);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void handleRequest_replyWithBytePayload_bytesAsRespContent()
|
||||
throws ServletException, IOException {
|
||||
setupEndpointAsMock(ANY_BINARY_PAYLOAD);
|
||||
replay(allmocks);
|
||||
replay(allMocks);
|
||||
endpoint.handleRequest(request, response);
|
||||
assertThat(response.getContentAsByteArray(), is(ANY_BINARY_PAYLOAD));
|
||||
verify(allmocks);
|
||||
verify(allMocks);
|
||||
}
|
||||
|
||||
@Test
|
||||
@@ -320,14 +318,14 @@ public class HttpInboundEndpointTests {
|
||||
throws ServletException, IOException, ClassNotFoundException {
|
||||
Date obj = new Date();
|
||||
setupEndpointAsMock(obj);
|
||||
replay(allmocks);
|
||||
replay(allMocks);
|
||||
endpoint.handleRequest(request, response);
|
||||
byte[] content = response.getContentAsByteArray();
|
||||
Object deserializedObj = new ObjectInputStream(
|
||||
new ByteArrayInputStream(content)).readObject();
|
||||
assertThat(deserializedObj, is(Date.class));
|
||||
assertThat((Date) deserializedObj, is(obj));
|
||||
verify(allmocks);
|
||||
verify(allMocks);
|
||||
}
|
||||
|
||||
@Test(expected = ServletException.class)
|
||||
@@ -335,9 +333,9 @@ public class HttpInboundEndpointTests {
|
||||
throws ServletException, IOException, ClassNotFoundException {
|
||||
Object obj = new Object();
|
||||
setupEndpointAsMock(obj);
|
||||
replay(allmocks);
|
||||
replay(allMocks);
|
||||
endpoint.handleRequest(request, response);
|
||||
verify(allmocks);
|
||||
verify(allMocks);
|
||||
}
|
||||
|
||||
@Test
|
||||
@@ -356,9 +354,9 @@ public class HttpInboundEndpointTests {
|
||||
});
|
||||
endpoint.setView(view);
|
||||
replay(view);
|
||||
replay(allmocks);
|
||||
replay(allMocks);
|
||||
endpoint.handleRequest(request, response);
|
||||
verify(allmocks);
|
||||
verify(allMocks);
|
||||
verify(view);
|
||||
}
|
||||
|
||||
|
||||
@@ -15,6 +15,19 @@
|
||||
*/
|
||||
package org.springframework.integration.test.matcher;
|
||||
|
||||
import org.junit.Before;
|
||||
import org.junit.Test;
|
||||
import org.junit.runner.RunWith;
|
||||
import org.mockito.Mock;
|
||||
import org.mockito.exceptions.verification.junit.ArgumentsAreDifferent;
|
||||
import org.mockito.runners.MockitoJUnitRunner;
|
||||
import org.springframework.integration.core.Message;
|
||||
import org.springframework.integration.core.MessageChannel;
|
||||
import org.springframework.integration.message.MessageBuilder;
|
||||
import org.springframework.integration.message.MessageHandler;
|
||||
|
||||
import java.util.Date;
|
||||
|
||||
import static org.hamcrest.CoreMatchers.is;
|
||||
import static org.hamcrest.CoreMatchers.nullValue;
|
||||
import static org.junit.Assert.assertThat;
|
||||
@@ -23,25 +36,12 @@ import static org.mockito.Mockito.when;
|
||||
import static org.springframework.integration.test.matcher.MockitoMessageMatchers.messageWithHeaderEntry;
|
||||
import static org.springframework.integration.test.matcher.MockitoMessageMatchers.messageWithPayload;
|
||||
|
||||
import java.util.Date;
|
||||
|
||||
import org.junit.Before;
|
||||
import org.junit.Test;
|
||||
import org.junit.runner.RunWith;
|
||||
import org.mockito.Mock;
|
||||
import org.mockito.exceptions.verification.junit.ArgumentsAreDifferent;
|
||||
import org.mockito.runners.MockitoJUnit44Runner;
|
||||
import org.springframework.integration.core.Message;
|
||||
import org.springframework.integration.core.MessageChannel;
|
||||
import org.springframework.integration.message.MessageBuilder;
|
||||
import org.springframework.integration.message.MessageHandler;
|
||||
|
||||
/**
|
||||
* @author Alex Peters
|
||||
* @author Iwein Fuld
|
||||
*
|
||||
*/
|
||||
@RunWith(MockitoJUnit44Runner.class)
|
||||
@RunWith(MockitoJUnitRunner.class)
|
||||
public class MockitoMessageMatchersTests {
|
||||
|
||||
static final Date SOME_PAYLOAD = new Date();
|
||||
|
||||
@@ -14,15 +14,35 @@
|
||||
|
||||
<i:channel id="in"/>
|
||||
|
||||
<i:service-activator input-channel="in" output-channel="out">
|
||||
<bean class="org.mockito.Mockito" factory-method="mock">
|
||||
<constructor-arg
|
||||
value="org.springframework.integration.test.mockito.ServiceActivatorOnMockitoMockTests$SingleMethod"/>
|
||||
</bean>
|
||||
</i:service-activator>
|
||||
<i:chain input-channel="in" output-channel="out">
|
||||
<i:filter expression="payload == 'singleAnnotatedMethodOnClass'"/>
|
||||
<i:service-activator ref="singleAnnotatedMethodOnClass"/>
|
||||
</i:chain>
|
||||
<bean id="singleAnnotatedMethodOnClass" class="org.mockito.Mockito" factory-method="mock">
|
||||
<constructor-arg
|
||||
value="org.springframework.integration.test.mockito.ServiceActivatorOnMockitoMockTests.SingleAnnotatedMethodOnClass"/>
|
||||
</bean>
|
||||
|
||||
<i:chain input-channel="in" output-channel="out">
|
||||
<i:filter expression="payload == 'SingleMethodOnClass'"/>
|
||||
<i:service-activator ref="singleMethodOnClass"/>
|
||||
</i:chain>
|
||||
<bean id="singleMethodOnClass" class="org.mockito.Mockito" factory-method="mock">
|
||||
<constructor-arg
|
||||
value="org.springframework.integration.test.mockito.ServiceActivatorOnMockitoMockTests.SingleMethodOnClass"/>
|
||||
</bean>
|
||||
|
||||
<i:chain input-channel="in" output-channel="out">
|
||||
<i:filter expression="payload == 'SingleMethodAcceptingHeaderOnClass'"/>
|
||||
<i:service-activator ref="singleMethodAcceptingHeaderOnClass"/>
|
||||
</i:chain>
|
||||
<bean id="singleMethodAcceptingHeaderOnClass" class="org.mockito.Mockito" factory-method="mock">
|
||||
<constructor-arg
|
||||
value="org.springframework.integration.test.mockito.ServiceActivatorOnMockitoMockTests.SingleMethodAcceptingHeaderOnClass"/>
|
||||
</bean>
|
||||
|
||||
<i:channel id="out">
|
||||
<i:queue capacity="10"/>
|
||||
</i:channel>
|
||||
|
||||
</beans>
|
||||
</beans>
|
||||
|
||||
@@ -18,15 +18,18 @@ package org.springframework.integration.test.mockito;
|
||||
|
||||
import org.junit.Test;
|
||||
import org.junit.runner.RunWith;
|
||||
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.beans.factory.annotation.Qualifier;
|
||||
import org.springframework.integration.annotation.Header;
|
||||
import org.springframework.integration.annotation.ServiceActivator;
|
||||
import org.springframework.integration.channel.PollableChannel;
|
||||
import org.springframework.integration.core.MessageChannel;
|
||||
import org.springframework.integration.message.MessageBuilder;
|
||||
import org.springframework.test.context.ContextConfiguration;
|
||||
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
|
||||
|
||||
import static org.mockito.Mockito.verify;
|
||||
|
||||
/**
|
||||
* @author Iwein Fuld
|
||||
*/
|
||||
@@ -34,19 +37,58 @@ import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
|
||||
@RunWith(SpringJUnit4ClassRunner.class)
|
||||
public class ServiceActivatorOnMockitoMockTests {
|
||||
|
||||
@Autowired @Qualifier("in")
|
||||
@Autowired
|
||||
@Qualifier("in")
|
||||
MessageChannel in;
|
||||
|
||||
@Autowired @Qualifier("out")
|
||||
@Autowired
|
||||
@Qualifier("out")
|
||||
PollableChannel out;
|
||||
|
||||
public static class SingleMethod {
|
||||
public String move(String s){return s;};
|
||||
public static class SingleAnnotatedMethodOnClass {
|
||||
@ServiceActivator
|
||||
public String move(String s) {
|
||||
return s;
|
||||
}
|
||||
}
|
||||
|
||||
@Autowired
|
||||
SingleAnnotatedMethodOnClass singleAnnotatedMethodOnClass;
|
||||
|
||||
@Test
|
||||
public void shouldInvokeMock() {
|
||||
in.send(MessageBuilder.withPayload("test").build()) ;
|
||||
public void shouldInvokeMockedSingleAnnotatedMethodOnClass() {
|
||||
in.send(MessageBuilder.withPayload("singleAnnotatedMethodOnClass").build());
|
||||
verify(singleAnnotatedMethodOnClass).move("singleAnnotatedMethodOnClass");
|
||||
}
|
||||
|
||||
public static class SingleMethodOnClass {
|
||||
public String move(String s) {
|
||||
return s;
|
||||
}
|
||||
}
|
||||
|
||||
@Autowired
|
||||
SingleMethodOnClass singleMethodOnClass;
|
||||
|
||||
@Test
|
||||
public void shouldInvokeMockedSingleMethodOnClass() {
|
||||
in.send(MessageBuilder.withPayload("SingleMethodOnClass").build());
|
||||
verify(singleMethodOnClass).move("SingleMethodOnClass");
|
||||
}
|
||||
|
||||
public static class SingleMethodAcceptingHeaderOnClass {
|
||||
public String move(@Header("s") String s) {
|
||||
return s;
|
||||
}
|
||||
}
|
||||
|
||||
@Autowired
|
||||
SingleMethodAcceptingHeaderOnClass singleMethodAcceptingHeaderOnClass;
|
||||
|
||||
@Test
|
||||
public void shouldInvokeMockedSingleMethodAcceptingHeaderOnClass() {
|
||||
in.send(MessageBuilder.withPayload("SingleMethodAcceptingHeaderOnClass").setHeader("s", "SingleMethodAcceptingHeaderOnClass").build());
|
||||
verify(singleMethodAcceptingHeaderOnClass).move("SingleMethodAcceptingHeaderOnClass");
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -16,17 +16,6 @@
|
||||
|
||||
package org.springframework.integration.ws;
|
||||
|
||||
import static org.junit.Assert.*;
|
||||
import static org.mockito.Mockito.*;
|
||||
|
||||
import java.io.StringReader;
|
||||
import java.io.StringWriter;
|
||||
|
||||
import javax.xml.transform.Result;
|
||||
import javax.xml.transform.Source;
|
||||
import javax.xml.transform.stream.StreamResult;
|
||||
import javax.xml.transform.stream.StreamSource;
|
||||
|
||||
import org.hamcrest.BaseMatcher;
|
||||
import org.hamcrest.Description;
|
||||
import org.junit.Before;
|
||||
@@ -34,9 +23,8 @@ import org.junit.Test;
|
||||
import org.junit.runner.RunWith;
|
||||
import org.mockito.Mock;
|
||||
import org.mockito.invocation.InvocationOnMock;
|
||||
import org.mockito.runners.MockitoJUnit44Runner;
|
||||
import org.mockito.runners.MockitoJUnitRunner;
|
||||
import org.mockito.stubbing.Answer;
|
||||
|
||||
import org.springframework.integration.channel.DirectChannel;
|
||||
import org.springframework.integration.core.Message;
|
||||
import org.springframework.integration.core.MessageChannel;
|
||||
@@ -44,12 +32,22 @@ import org.springframework.integration.message.MessageDeliveryException;
|
||||
import org.springframework.ws.WebServiceMessage;
|
||||
import org.springframework.ws.context.MessageContext;
|
||||
|
||||
import javax.xml.transform.Result;
|
||||
import javax.xml.transform.Source;
|
||||
import javax.xml.transform.stream.StreamResult;
|
||||
import javax.xml.transform.stream.StreamSource;
|
||||
import java.io.StringReader;
|
||||
import java.io.StringWriter;
|
||||
|
||||
import static org.junit.Assert.assertTrue;
|
||||
import static org.mockito.Mockito.*;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author Iwein Fuld
|
||||
*
|
||||
*/
|
||||
@RunWith(MockitoJUnit44Runner.class)
|
||||
@RunWith(MockitoJUnitRunner.class)
|
||||
public class SimpleWebServiceInboundGatewayTests {
|
||||
|
||||
private SimpleWebServiceInboundGateway gateway = new SimpleWebServiceInboundGateway();
|
||||
|
||||
@@ -15,32 +15,29 @@
|
||||
|
||||
package org.springframework.integration.dispatcher;
|
||||
|
||||
import static org.junit.Assert.assertFalse;
|
||||
import static org.junit.Assert.fail;
|
||||
import static org.mockito.Mockito.doThrow;
|
||||
import static org.mockito.Mockito.times;
|
||||
import static org.mockito.Mockito.verify;
|
||||
|
||||
import java.util.concurrent.CountDownLatch;
|
||||
import java.util.concurrent.TimeUnit;
|
||||
import java.util.concurrent.atomic.AtomicBoolean;
|
||||
|
||||
import org.junit.Before;
|
||||
import org.junit.Test;
|
||||
import org.junit.runner.RunWith;
|
||||
import org.mockito.Mock;
|
||||
import org.mockito.runners.MockitoJUnit44Runner;
|
||||
|
||||
import org.mockito.runners.MockitoJUnitRunner;
|
||||
import org.springframework.integration.core.Message;
|
||||
import org.springframework.integration.message.MessageHandler;
|
||||
import org.springframework.integration.message.MessageRejectedException;
|
||||
import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor;
|
||||
|
||||
import java.util.concurrent.CountDownLatch;
|
||||
import java.util.concurrent.TimeUnit;
|
||||
import java.util.concurrent.atomic.AtomicBoolean;
|
||||
|
||||
import static org.junit.Assert.assertFalse;
|
||||
import static org.junit.Assert.fail;
|
||||
import static org.mockito.Mockito.*;
|
||||
|
||||
|
||||
/**
|
||||
* @author Iwein Fuld
|
||||
*/
|
||||
@RunWith(MockitoJUnit44Runner.class)
|
||||
@RunWith(MockitoJUnitRunner.class)
|
||||
public class RoundRobinDispatcherConcurrentTests {
|
||||
|
||||
private static final int TOTAL_EXECUTIONS = 40;
|
||||
|
||||
@@ -15,27 +15,24 @@
|
||||
|
||||
package org.springframework.integration.dispatcher;
|
||||
|
||||
import static org.mockito.Mockito.atLeast;
|
||||
import static org.mockito.Mockito.times;
|
||||
import static org.mockito.Mockito.verify;
|
||||
|
||||
import java.util.concurrent.atomic.AtomicInteger;
|
||||
|
||||
import org.junit.Before;
|
||||
import org.junit.Test;
|
||||
import org.junit.runner.RunWith;
|
||||
import org.mockito.Mock;
|
||||
import org.mockito.runners.MockitoJUnit44Runner;
|
||||
|
||||
import org.mockito.runners.MockitoJUnitRunner;
|
||||
import org.springframework.beans.DirectFieldAccessor;
|
||||
import org.springframework.integration.core.Message;
|
||||
import org.springframework.integration.message.MessageHandler;
|
||||
|
||||
import java.util.concurrent.atomic.AtomicInteger;
|
||||
|
||||
import static org.mockito.Mockito.*;
|
||||
|
||||
/**
|
||||
* @author Iwein Fuld
|
||||
* @author Mark Fisher
|
||||
*/
|
||||
@RunWith(MockitoJUnit44Runner.class)
|
||||
@RunWith(MockitoJUnitRunner.class)
|
||||
public class RoundRobinDispatcherTests {
|
||||
|
||||
private UnicastingDispatcher dispatcher = new UnicastingDispatcher();
|
||||
|
||||
Reference in New Issue
Block a user