} else { if (!latestView.contains(entry.getKey())) { latestView.add(entry.getKey());
newMembers.add(member); latestView = newMembers;
for (InternalDistributedMember mbr : newMembers) { int port = conflictingView.getFailureDetectionPort(mbr); newView.add(mbr); newView.setFailureDetectionPort(mbr, port); joinReqs.add(mbr);
newView.add(newMember); newView.setFailureDetectionPort(newMember, v.getFailureDetectionPort(newMember)); newView.setPublicKey(newMember, v.getPublicKey(newMember));
@Test public void testAddLotsOfMembers() throws Exception { NetView view = new NetView(members.get(0), 2, new ArrayList<>(members)); setFailureDetectionPorts(view); NetView copy = new NetView(view, 2); int oldSize = view.size(); for (int i = 0; i < 100; i++) { InternalDistributedMember mbr = new InternalDistributedMember(SocketCreator.getLocalHost(), 2000 + i); mbr.setVmKind(ClusterDistributionManager.NORMAL_DM_TYPE); mbr.setVmViewId(2); view.add(mbr); view.setFailureDetectionPort(mbr, 2000 + i); } assertEquals(oldSize + 100, view.size()); for (InternalDistributedMember mbr : view.getMembers()) { assertEquals(mbr.getPort(), view.getFailureDetectionPort(mbr)); } assertEquals(100, view.getNewMembers(copy).size()); }