package org.infinispan.server.core;
import org.infinispan.configuration.cache.Configuration;
import org.infinispan.configuration.cache.ConfigurationBuilder;
import org.infinispan.manager.DefaultCacheManager;
import org.infinispan.server.core.configuration.MockServerConfigurationBuilder;
import org.infinispan.server.core.configuration.ProtocolServerConfiguration;
import org.infinispan.test.AbstractInfinispanTest;
import org.testng.Assert;
import org.testng.annotations.Test;
import io.netty.channel.Channel;
import io.netty.channel.ChannelInboundHandler;
import io.netty.channel.ChannelInitializer;
import io.netty.channel.ChannelOutboundHandler;
/**
* Abstract protocol server test.
*
* @author Galder ZamarreƱo
* @since 4.1
*/
@Test(groups = "functional", testName = "server.core.AbstractProtocolServerTest")
public class AbstractProtocolServerTest extends AbstractInfinispanTest {
public void testValidateNegativeWorkerThreads() {
MockServerConfigurationBuilder b = new MockServerConfigurationBuilder();
b.workerThreads(-1);
expectIllegalArgument(b, new MockProtocolServer());
}
public void testValidateNegativeIdleTimeout() {
MockServerConfigurationBuilder b = new MockServerConfigurationBuilder();
b.idleTimeout(-2);
expectIllegalArgument(b, new MockProtocolServer());
}
public void testValidateNegativeSendBufSize() {
MockServerConfigurationBuilder b = new MockServerConfigurationBuilder();
b.sendBufSize(-1);
expectIllegalArgument(b, new MockProtocolServer());
}
public void testValidateNegativeRecvBufSize() {
MockServerConfigurationBuilder b = new MockServerConfigurationBuilder();
b.recvBufSize(-1);
expectIllegalArgument(b, new MockProtocolServer());
}
public void testStartingWithoutTransport() {
MockServerConfigurationBuilder b = new MockServerConfigurationBuilder();
b.startTransport(false);
AbstractProtocolServer server = new MockProtocolServer();
try {
server.start(b.build(), new DefaultCacheManager(new ConfigurationBuilder().build()));
Assert.assertFalse(server.isTransportEnabled());
} finally {
server.stop();
}
}
private void expectIllegalArgument(MockServerConfigurationBuilder builder, MockProtocolServer server) {
try {
// Stoppable.useCacheManager(TestCacheManagerFactory.createCacheManager()) { cm =>
// server.start(builder.build(), cm)
// }
} catch (IllegalArgumentException e) {
// case i: IllegalArgumentException => // expected
} finally {
server.stop();
}
}
class MockProtocolServer extends AbstractProtocolServer {
protected MockProtocolServer() {
super(null);
}
@Override
public ChannelOutboundHandler getEncoder() {
return null;
}
@Override
public ChannelInboundHandler getDecoder() {
return null;
}
@Override
public ProtocolServerConfiguration getConfiguration() {
return configuration;
}
@Override
public ChannelInitializer<Channel> getInitializer() {
return null;
}
}
}