use of com.hazelcast.internal.partition.membergroup.MemberGroupFactory in project hazelcast by hazelcast.
the class DiscoverySpiTest method testSPIAwareMemberGroupFactoryCreateMemberGroups.
@Test
public void testSPIAwareMemberGroupFactoryCreateMemberGroups() throws Exception {
String xmlFileName = "test-hazelcast-discovery-spi-metadata.xml";
Config config = getDiscoverySPIConfig(xmlFileName, false);
// we create this instance in order to fully create Node
HazelcastInstance hazelcastInstance = Hazelcast.newHazelcastInstance(config);
Node node = getNode(hazelcastInstance);
assertNotNull(node);
MemberGroupFactory groupFactory = new SPIAwareMemberGroupFactory(node.getDiscoveryService());
Collection<Member> members = createMembers();
Collection<MemberGroup> memberGroups = groupFactory.createMemberGroups(members);
assertEquals("Member Groups: " + String.valueOf(memberGroups), 2, memberGroups.size());
for (MemberGroup memberGroup : memberGroups) {
assertEquals("Member Group: " + String.valueOf(memberGroup), 2, memberGroup.size());
}
hazelcastInstance.shutdown();
}
use of com.hazelcast.internal.partition.membergroup.MemberGroupFactory in project hazelcast by hazelcast.
the class PartitionStateGeneratorTest method testRandomPartitionGenerator.
@Test
public void testRandomPartitionGenerator() throws Exception {
final MemberGroupFactory memberGroupFactory = new SingleMemberGroupFactory();
test(memberGroupFactory);
}
use of com.hazelcast.internal.partition.membergroup.MemberGroupFactory in project hazelcast by hazelcast.
the class PartitionStateGeneratorTest method testOnlyUnassignedArrangement.
@Test
public void testOnlyUnassignedArrangement() throws Exception {
List<Member> memberList = createMembers(10, 1);
MemberGroupFactory memberGroupFactory = new SingleMemberGroupFactory();
Collection<MemberGroup> groups = memberGroupFactory.createMemberGroups(memberList);
PartitionStateGenerator generator = new PartitionStateGeneratorImpl();
PartitionReplica[][] state = generator.arrange(groups, emptyPartitionArray(100));
// unassign some partitions entirely
Collection<Integer> unassignedPartitions = new ArrayList<Integer>();
for (int i = 0; i < state.length; i++) {
if (i % 3 == 0) {
state[i] = new PartitionReplica[InternalPartition.MAX_REPLICA_COUNT];
unassignedPartitions.add(i);
}
}
// unassign only backup replicas of some partitions
for (int i = 0; i < state.length; i++) {
if (i % 10 == 0) {
Arrays.fill(state[i], 1, InternalPartition.MAX_REPLICA_COUNT, null);
}
}
InternalPartition[] partitions = toPartitionArray(state);
state = generator.arrange(groups, partitions, unassignedPartitions);
for (int pid = 0; pid < state.length; pid++) {
PartitionReplica[] addresses = state[pid];
if (unassignedPartitions.contains(pid)) {
for (PartitionReplica address : addresses) {
assertNotNull(address);
}
} else {
InternalPartition partition = partitions[pid];
for (int replicaIx = 0; replicaIx < InternalPartition.MAX_REPLICA_COUNT; replicaIx++) {
assertEquals(partition.getReplica(replicaIx), addresses[replicaIx]);
}
}
}
}
use of com.hazelcast.internal.partition.membergroup.MemberGroupFactory in project hazelcast by hazelcast.
the class PartitionStateGeneratorTest method testCustomPartitionStateGenerator.
@Test
public void testCustomPartitionStateGenerator() throws Exception {
final MemberGroupFactory memberGroupFactory = new MemberGroupFactory() {
public Collection<MemberGroup> createMemberGroups(Collection<? extends Member> members) {
MemberGroup[] g = new MemberGroup[4];
for (int i = 0; i < g.length; i++) {
g[i] = new DefaultMemberGroup();
}
for (Member member : members) {
Address address = member.getAddress();
if (even(address.getHost().hashCode()) && even(address.getPort())) {
g[0].addMember(member);
} else if (even(address.getHost().hashCode()) && !even(address.getPort())) {
g[1].addMember(member);
} else if (!even(address.getHost().hashCode()) && even(address.getPort())) {
g[2].addMember(member);
} else if (!even(address.getHost().hashCode()) && !even(address.getPort())) {
g[3].addMember(member);
}
}
List<MemberGroup> list = new LinkedList<MemberGroup>();
for (MemberGroup memberGroup : g) {
if (memberGroup.size() > 0) {
list.add(memberGroup);
}
}
return list;
}
boolean even(int k) {
return k % 2 == 0;
}
};
test(memberGroupFactory);
}
use of com.hazelcast.internal.partition.membergroup.MemberGroupFactory in project hazelcast by hazelcast.
the class DiscoverySpiTest method testSPIAwareMemberGroupFactoryCreateMemberGroups_withDeprecated.
@Test
public void testSPIAwareMemberGroupFactoryCreateMemberGroups_withDeprecated() throws Exception {
String xmlFileName = "test-hazelcast-discovery-spi-metadata.xml";
Config config = getDiscoverySPIConfig(xmlFileName, true);
// we create this instance in order to fully create Node
HazelcastInstance hazelcastInstance = Hazelcast.newHazelcastInstance(config);
Node node = getNode(hazelcastInstance);
assertNotNull(node);
MemberGroupFactory groupFactory = new SPIAwareMemberGroupFactory(node.getDiscoveryService());
Collection<Member> members = createMembers();
Collection<MemberGroup> memberGroups = groupFactory.createMemberGroups(members);
assertEquals("Member Groups: " + String.valueOf(memberGroups), 2, memberGroups.size());
for (MemberGroup memberGroup : memberGroups) {
assertEquals("Member Group: " + String.valueOf(memberGroup), 2, memberGroup.size());
}
hazelcastInstance.shutdown();
}
Aggregations