package org.infinispan.distribution.topologyaware; import org.infinispan.configuration.cache.ConfigurationBuilder; import org.infinispan.configuration.global.GlobalConfigurationBuilder; import org.infinispan.distribution.DistSyncFuncTest; import org.infinispan.distribution.ch.ConsistentHash; import org.infinispan.manager.EmbeddedCacheManager; import org.infinispan.test.fwk.TestCacheManagerFactory; import org.infinispan.test.fwk.TransportFlags; import org.testng.annotations.Test; /** * @author Mircea.Markus@jboss.com * @since 4.2 */ @Test (groups = "functional", testName = "distribution.topologyaware.TopologyAwareChFunctionalTest") public class TopologyAwareChFunctionalTest extends DistSyncFuncTest { @Override protected EmbeddedCacheManager addClusterEnabledCacheManager(TransportFlags flags) { int index = cacheManagers.size(); String rack; String machine; switch (index) { case 0 : { rack = "r0"; machine = "m0"; break; } case 1 : { rack = "r0"; machine = "m1"; break; } case 2 : { rack = "r1"; machine = "m0"; break; } case 3 : { rack = "r2"; machine = "m0"; break; } default : { throw new RuntimeException("Bad!"); } } GlobalConfigurationBuilder gc = GlobalConfigurationBuilder.defaultClusteredBuilder(); gc.transport().rackId(rack).machineId(machine); EmbeddedCacheManager cm = TestCacheManagerFactory.createClusteredCacheManager(gc, new ConfigurationBuilder()); cacheManagers.add(cm); return cm; } public void testHashesInitiated() { ConsistentHash hash = advancedCache(0, cacheName).getDistributionManager().getWriteConsistentHash(); containsAllHashes(hash); containsAllHashes(advancedCache(1, cacheName).getDistributionManager().getWriteConsistentHash()); containsAllHashes(advancedCache(2, cacheName).getDistributionManager().getWriteConsistentHash()); containsAllHashes(advancedCache(3, cacheName).getDistributionManager().getWriteConsistentHash()); } private void containsAllHashes(ConsistentHash ch) { assert ch.getMembers().contains(address(0)); assert ch.getMembers().contains(address(1)); assert ch.getMembers().contains(address(2)); assert ch.getMembers().contains(address(3)); } }