@Test public void testCustomQuorumFunctionIsPresent() throws Exception { Config config = new Config(); QuorumConfig quorumConfig = new QuorumConfig(); String quorumName = randomString(); quorumConfig.setName(quorumName); quorumConfig.setEnabled(true); quorumConfig.setQuorumFunctionImplementation( new QuorumFunction() { @Override public boolean apply(Collection<Member> members) { return false; } }); config.addQuorumConfig(quorumConfig); String mapName = randomMapName(); MapConfig mapConfig = new MapConfig(mapName); mapConfig.setQuorumName(quorumName); config.addMapConfig(mapConfig); HazelcastInstance hazelcastInstance = createHazelcastInstance(config); IMap<Object, Object> map = hazelcastInstance.getMap(mapName); try { map.put("1", "1"); fail(); } catch (Exception e) { } Quorum quorum = hazelcastInstance.getQuorumService().getQuorum(quorumName); assertFalse(quorum.isPresent()); }
@Test(expected = QuorumException.class) public void testCustomQuorumFunctionFailsForAllNodes() throws Exception { Config config = new Config(); QuorumConfig quorumConfig = new QuorumConfig(); String quorumName = randomString(); quorumConfig.setName(quorumName); quorumConfig.setEnabled(true); quorumConfig.setQuorumFunctionImplementation( new QuorumFunction() { @Override public boolean apply(Collection<Member> members) { return false; } }); config.addQuorumConfig(quorumConfig); String mapName = randomMapName(); MapConfig mapConfig = new MapConfig(mapName); mapConfig.setQuorumName(quorumName); config.addMapConfig(mapConfig); TestHazelcastInstanceFactory factory = createHazelcastInstanceFactory(2); HazelcastInstance h1 = factory.newHazelcastInstance(config); HazelcastInstance h2 = factory.newHazelcastInstance(config); IMap<Object, Object> map2 = h2.getMap(mapName); map2.put("1", "1"); }
@BeforeClass public static void initialize() throws Exception { QuorumConfig quorumConfig = new QuorumConfig(); quorumConfig.setName(QUORUM_ID); quorumConfig.setType(QuorumType.READ); quorumConfig.setEnabled(true); quorumConfig.setSize(3); CacheSimpleConfig cacheConfig = new CacheSimpleConfig(); cacheConfig.setName(CACHE_NAME_PREFIX + "*"); cacheConfig.setQuorumName(QUORUM_ID); factory = new TestHazelcastFactory(); cluster = new PartitionedCluster(factory).createFiveMemberCluster(cacheConfig, quorumConfig); initializeClients(); initializeCaches(); cluster.splitFiveMembersThreeAndTwo(); }
@BeforeClass public static void initialize() throws InterruptedException { CacheSimpleConfig cacheConfig = new CacheSimpleConfig(); cacheConfig.setName(CACHE_NAME_PREFIX + "*"); cacheConfig.setQuorumName(QUORUM_ID); QuorumConfig quorumConfig = new QuorumConfig(); quorumConfig.setName(QUORUM_ID); quorumConfig.setType(QuorumType.READ_WRITE); quorumConfig.setEnabled(true); quorumConfig.setSize(3); PartitionedCluster cluster = new PartitionedCluster(new TestHazelcastInstanceFactory()) .partitionFiveMembersThreeAndTwo(cacheConfig, quorumConfig); cachingProvider1 = HazelcastServerCachingProvider.createCachingProvider(cluster.h1); cachingProvider2 = HazelcastServerCachingProvider.createCachingProvider(cluster.h2); cachingProvider3 = HazelcastServerCachingProvider.createCachingProvider(cluster.h3); cachingProvider4 = HazelcastServerCachingProvider.createCachingProvider(cluster.h4); cachingProvider5 = HazelcastServerCachingProvider.createCachingProvider(cluster.h5); }
@Test public void testCustomQuorumFunctionFailsThenSuccess() throws Exception { Config config = new Config(); QuorumConfig quorumConfig = new QuorumConfig(); String quorumName = randomString(); quorumConfig.setName(quorumName); quorumConfig.setEnabled(true); final AtomicInteger count = new AtomicInteger(1); quorumConfig.setQuorumFunctionImplementation( new QuorumFunction() { @Override public boolean apply(Collection<Member> members) { if (count.get() == 1) { count.incrementAndGet(); return false; } else { return true; } } }); config.addQuorumConfig(quorumConfig); String mapName = randomMapName(); MapConfig mapConfig = new MapConfig(mapName); mapConfig.setQuorumName(quorumName); config.addMapConfig(mapConfig); TestHazelcastInstanceFactory f = new TestHazelcastInstanceFactory(2); HazelcastInstance hazelcastInstance = f.newHazelcastInstance(config); IMap<Object, Object> map = hazelcastInstance.getMap(mapName); try { map.put("1", "1"); fail(); } catch (Exception e) { e.printStackTrace(); } HazelcastInstance hazelcastInstance2 = f.newHazelcastInstance(config); map.put("1", "1"); f.shutdownAll(); }