package org.infinispan.configuration;
import java.io.ByteArrayInputStream;
import java.io.IOException;
import java.io.InputStream;
import org.infinispan.configuration.cache.CacheMode;
import org.infinispan.configuration.cache.Configuration;
import org.infinispan.configuration.global.GlobalConfiguration;
import org.infinispan.manager.EmbeddedCacheManager;
import org.infinispan.test.AbstractInfinispanTest;
import org.infinispan.test.TestingUtil;
import org.infinispan.test.fwk.TestCacheManagerFactory;
import org.testng.annotations.Test;
@Test(testName = "config.DifferentCacheModesTest", groups = "unit")
public class DifferentCacheModesTest extends AbstractInfinispanTest {
public void testCacheModes() throws IOException {
EmbeddedCacheManager cm = null;
try {
String xml = "<infinispan>" +
"<jgroups/>" +
"<cache-container name=\"different-cache-modes\" default-cache=\"replicated\">" +
"<replicated-cache name=\"replicated\" mode=\"SYNC\"></replicated-cache>" +
"<local-cache name=\"local\"></local-cache>" +
"<distributed-cache name=\"dist\" mode=\"SYNC\"></distributed-cache>" +
"<distributed-cache name=\"distasync\" mode=\"ASYNC\"></distributed-cache>" +
"<replicated-cache name=\"replicationasync\" mode=\"ASYNC\"></replicated-cache>" +
"</cache-container>" +
"</infinispan>";
InputStream is = new ByteArrayInputStream(xml.getBytes());
cm = TestCacheManagerFactory.fromStream(is);
GlobalConfiguration gc = cm.getCacheManagerConfiguration();
Configuration defaultCfg = cm.getCache().getCacheConfiguration();
assert gc.transport().transport() != null;
assert defaultCfg.clustering().cacheMode() == CacheMode.REPL_SYNC;
Configuration cfg = cm.getCache("local").getCacheConfiguration();
assert cfg.clustering().cacheMode() == CacheMode.LOCAL;
cfg = cm.getCache("dist").getCacheConfiguration();
assert cfg.clustering().cacheMode() == CacheMode.DIST_SYNC;
cfg = cm.getCache("distasync").getCacheConfiguration();
assert cfg.clustering().cacheMode() == CacheMode.DIST_ASYNC;
cfg = cm.getCache("replicationasync").getCacheConfiguration();
assert cfg.clustering().cacheMode() == CacheMode.REPL_ASYNC;
} finally {
TestingUtil.killCacheManagers(cm);
}
}
public void testReplicationAndStateTransfer() throws IOException {
EmbeddedCacheManager cm = null;
try {
String xml =
"<infinispan>" +
"<jgroups/>" +
"<cache-container name=\"different-cache-modes\" default-cache=\"replicated\">" +
"<replicated-cache name=\"replicated\" mode=\"SYNC\"/>" +
"<replicated-cache name=\"explicit-state-disable\" mode=\"SYNC\">" +
"<state-transfer enabled=\"false\"/>" +
"</replicated-cache>" +
"<replicated-cache name=\"explicit-state-enable\" mode=\"SYNC\">" +
"<state-transfer enabled=\"true\"/>" +
"</replicated-cache>" +
"<replicated-cache name=\"explicit-state-enable-async\" mode=\"ASYNC\">" +
"<state-transfer enabled=\"true\"/>" +
"</replicated-cache>" +
"</cache-container>" +
"</infinispan>";
InputStream is = new ByteArrayInputStream(xml.getBytes());
cm = TestCacheManagerFactory.fromStream(is);
GlobalConfiguration gc = cm.getCacheManagerConfiguration();
Configuration defaultCfg = cm.getCache().getCacheConfiguration();
assert defaultCfg.clustering().cacheMode() == CacheMode.REPL_SYNC;
assert defaultCfg.clustering().stateTransfer().fetchInMemoryState();
Configuration explicitDisable =
cm.getCache("explicit-state-disable").getCacheConfiguration();
assert explicitDisable.clustering().cacheMode() == CacheMode.REPL_SYNC;
assert !explicitDisable.clustering().stateTransfer().fetchInMemoryState();
Configuration explicitEnable =
cm.getCache("explicit-state-enable").getCacheConfiguration();
assert explicitEnable.clustering().cacheMode() == CacheMode.REPL_SYNC;
assert explicitEnable.clustering().stateTransfer().fetchInMemoryState();
Configuration explicitEnableAsync =
cm.getCache("explicit-state-enable-async").getCacheConfiguration();
assert explicitEnableAsync.clustering().cacheMode() == CacheMode.REPL_ASYNC;
assert explicitEnableAsync.clustering().stateTransfer().fetchInMemoryState();
} finally {
TestingUtil.killCacheManagers(cm);
}
}
}