package org.infinispan.server.test.rollingupgrades;
import javax.management.ObjectName;
import org.infinispan.arquillian.core.InfinispanResource;
import org.infinispan.arquillian.core.RemoteInfinispanServers;
import org.infinispan.arquillian.utils.MBeanServerConnectionProvider;
import org.infinispan.client.hotrod.ProtocolVersion;
import org.infinispan.client.hotrod.RemoteCache;
import org.infinispan.server.test.util.RemoteCacheManagerFactory;
import org.infinispan.server.test.util.RemoteInfinispanMBeans;
import org.jboss.arquillian.container.test.api.ContainerController;
import org.jboss.arquillian.test.api.ArquillianResource;
import org.junit.After;
import org.junit.Before;
/**
* Base class for HotRod rolling upgrade tests.
*
* @author vjuranek
* @since 9.0
*/
public class AbstractHotRodRollingUpgradesIT {
static final String DEFAULT_CACHE_NAME = "default";
@InfinispanResource
protected RemoteInfinispanServers serverManager;
@ArquillianResource
protected ContainerController controller;
protected RemoteCacheManagerFactory rcmFactory;
@Before
public void setUp() {
rcmFactory = new RemoteCacheManagerFactory();
}
@After
public void tearDown() {
if (rcmFactory != null) {
rcmFactory.stopManagers();
}
rcmFactory = null;
}
protected RemoteCache<Object, Object> createCache(RemoteInfinispanMBeans cacheBeans) {
if (ProtocolVersion.parseVersion(System.getProperty("hotrod.protocol.version")) != null) {
// we might want to test backwards compatibility as well
// old Hot Rod protocol version was set for communication with new server
return createCache(cacheBeans, System.getProperty("hotrod.protocol.version"));
} else {
return createCache(cacheBeans, ProtocolVersion.DEFAULT_PROTOCOL_VERSION.toString());
}
}
protected RemoteCache<Object, Object> createCache(RemoteInfinispanMBeans cacheBeans, String protocolVersion) {
return rcmFactory.createCache(cacheBeans, protocolVersion);
}
protected RemoteInfinispanMBeans createRemotes(String serverName, String managerName, String cacheName) {
return RemoteInfinispanMBeans.create(serverManager, serverName, cacheName, managerName);
}
protected Object invokeOperation(MBeanServerConnectionProvider provider, String mbean, String operationName, Object[] params,
String[] signature) throws Exception {
return provider.getConnection().invoke(new ObjectName(mbean), operationName, params, signature);
}
}