package org.infinispan.rest;
import java.util.HashMap;
import java.util.Map;
import org.apache.commons.httpclient.HttpClient;
import org.apache.commons.httpclient.HttpMethodBase;
import org.apache.commons.httpclient.SimpleHttpConnectionManager;
import org.infinispan.manager.EmbeddedCacheManager;
import org.infinispan.rest.configuration.RestServerConfiguration;
import org.infinispan.rest.configuration.RestServerConfigurationBuilder;
import org.infinispan.rest.embedded.netty4.NettyRestServer;
import org.infinispan.test.AbstractInfinispanTest;
/**
* Basis for REST server tests.
*
* @author Michal Linhard (mlinhard@redhat.com)
*/
public class RestServerTestBase extends AbstractInfinispanTest {
private Map<String, NettyRestServer> servers = new HashMap<String, NettyRestServer>();
private HttpClient client;
protected void createClient() {
client = new HttpClient();
}
protected void destroyClient() {
((SimpleHttpConnectionManager) client.getHttpConnectionManager()).shutdown();
client = null;
}
public void addServer(String name, int port, EmbeddedCacheManager cacheManager) {
RestServerConfigurationBuilder builder = new RestServerConfigurationBuilder();
builder.port(port);
servers.put(name, NettyRestServer.createServer(builder.build(), cacheManager));
}
public void addServer(String name, EmbeddedCacheManager cacheManager, RestServerConfiguration configuration) {
servers.put(name, NettyRestServer.createServer(configuration, cacheManager));
}
protected void ignoreCache(String cacheName) {
servers.values().forEach(s -> s.ignoreCache(cacheName));
}
protected void enableCache(String cacheName) {
servers.values().forEach(s -> s.unignore(cacheName));
}
protected void removeServers() {
servers.clear();
}
protected EmbeddedCacheManager getCacheManager(String name) {
NettyRestServer ctx = servers.get(name);
if (ctx == null) {
return null;
}
return ctx.getCacheManager();
}
public void startServers() throws Exception {
if (!servers.isEmpty()) {
for (NettyRestServer s : servers.values())
s.start();
} else {
throw new IllegalStateException("No servers defined!");
}
}
public void stopServers() throws Exception {
if (!servers.isEmpty()) {
for (NettyRestServer s : servers.values())
s.stop();
} else {
throw new IllegalStateException("No servers defined!");
}
}
protected HttpMethodBase call(HttpMethodBase method) throws Exception {
client.executeMethod(method);
return method;
}
}