use of com.hazelcast.core.Member in project hazelcast by hazelcast.
the class PartitionStateGeneratorTest method test.
private void test(MemberGroupFactory memberGroupFactory) throws Exception {
PartitionStateGenerator generator = new PartitionStateGeneratorImpl();
int maxSameHostCount = 3;
int[] partitionCounts = new int[] { 271, 787, 1549, 3217 };
int[] members = new int[] { 3, 6, 9, 10, 11, 17, 57, 100, 130, 77, 179, 93, 37, 26, 15, 5 };
for (int partitionCount : partitionCounts) {
int memberCount = members[0];
List<Member> memberList = createMembers(memberCount, maxSameHostCount);
Collection<MemberGroup> groups = memberGroupFactory.createMemberGroups(memberList);
Address[][] state = generator.arrange(groups, emptyPartitionArray(partitionCount));
checkTestResult(state, groups, partitionCount);
int previousMemberCount = memberCount;
for (int j = 1; j < members.length; j++) {
memberCount = members[j];
if (partitionCount / memberCount < 10) {
break;
}
if ((float) partitionCount / memberCount > 2) {
if (previousMemberCount == 0) {
memberList = createMembers(memberCount, maxSameHostCount);
} else if (memberCount > previousMemberCount) {
MemberImpl last = (MemberImpl) memberList.get(previousMemberCount - 1);
List<Member> extra = createMembers(last, (memberCount - previousMemberCount), maxSameHostCount);
memberList.addAll(extra);
} else {
List<Member> removedMembers = memberList.subList(memberCount, memberList.size());
memberList = memberList.subList(0, memberCount);
remove(state, removedMembers);
}
groups = memberGroupFactory.createMemberGroups(memberList);
state = generator.arrange(groups, toPartitionArray(state));
checkTestResult(state, groups, partitionCount);
previousMemberCount = memberCount;
}
}
}
}
use of com.hazelcast.core.Member in project hazelcast by hazelcast.
the class PartitionStateGeneratorTest method createMembers.
private static List<Member> createMembers(MemberImpl startAfter, int memberCount, int maxSameHostCount) throws Exception {
Random rand = new Random();
final byte[] ip = new byte[] { 10, 10, 0, 0 };
if (startAfter != null) {
Address address = startAfter.getAddress();
byte[] startIp = address.getInetAddress().getAddress();
if ((0xff & startIp[3]) < 255) {
ip[2] = startIp[2];
ip[3] = (byte) (startIp[3] + 1);
} else {
ip[2] = (byte) (startIp[2] + 1);
ip[3] = 0;
}
}
int count = 0;
int port = 5700;
List<Member> members = new ArrayList<Member>();
int sameHostCount = rand.nextInt(maxSameHostCount) + 1;
for (int i = 0; i < memberCount; i++) {
if (count == sameHostCount) {
ip[3] = ++ip[3];
count = 0;
port = 5700;
sameHostCount = rand.nextInt(maxSameHostCount) + 1;
}
count++;
port++;
MemberImpl m = new MemberImpl(new Address(InetAddress.getByAddress(new byte[] { ip[0], ip[1], ip[2], ip[3] }), port), VERSION, false);
members.add(m);
if ((0xff & ip[3]) == 255) {
ip[2] = ++ip[2];
}
}
return members;
}
use of com.hazelcast.core.Member in project hazelcast by hazelcast.
the class MemberProviderFilterParserTest method givenMemberAttributeFilterIsUsed_whenMemberAttributeIsNotPresent_thenFilterDoesNotMatch.
@Test
public void givenMemberAttributeFilterIsUsed_whenMemberAttributeIsNotPresent_thenFilterDoesNotMatch() {
Filter<Member> memberFilter = MemberProviderFilterParser.parseMemberFilter("HAS_ATTRIBUTE:foo");
Map<String, Object> attributes = ImmutableMap.of("bar", (Object) "other");
Member mockMember = createMockMemberWithAttributes(attributes);
assertFalse(memberFilter.accept(mockMember));
}
use of com.hazelcast.core.Member in project hazelcast by hazelcast.
the class MemberProviderFilterParserTest method givenMemberAttributeFilterIsUsed_whenMemberAttributeIsPresent_thenFilterMatches.
@Test
public void givenMemberAttributeFilterIsUsed_whenMemberAttributeIsPresent_thenFilterMatches() {
Filter<Member> memberFilter = MemberProviderFilterParser.parseMemberFilter("HAS_ATTRIBUTE:foo");
Map<String, Object> attributes = ImmutableMap.of("foo", (Object) "bar");
Member mockMember = createMockMemberWithAttributes(attributes);
assertTrue(memberFilter.accept(mockMember));
}
use of com.hazelcast.core.Member in project hazelcast by hazelcast.
the class WriteBehindOnBackupsTest method getOwnerNode.
private HazelcastInstance getOwnerNode(String key, HazelcastInstance[] nodes) {
PartitionService partitionService = nodes[0].getPartitionService();
Partition partition = partitionService.getPartition(key);
Member owner = partition.getOwner();
for (HazelcastInstance node : nodes) {
Member localMember = node.getCluster().getLocalMember();
if (localMember.equals(owner)) {
return node;
}
}
throw new IllegalStateException("This should not be happen...");
}
Aggregations