Skip to content

Commit

Permalink
[#5545] naming/src/test/java/com/alibaba/nacos/naming/consistency/per…
Browse files Browse the repository at this point in the history
…sistent/ClusterVersionJudgementTest.java unit tests cannot pass, and have bad code style. (#5546)
  • Loading branch information
realJackSun authored Apr 30, 2021
1 parent a713203 commit 7d110e6
Showing 1 changed file with 72 additions and 30 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -29,15 +29,44 @@
import org.springframework.mock.env.MockEnvironment;
import org.springframework.mock.web.MockServletContext;

import java.util.Arrays;
import java.util.Collection;
import java.util.HashMap;
import java.util.LinkedList;
import java.util.List;
import java.util.Map;
import java.util.concurrent.atomic.AtomicInteger;

public class ClusterVersionJudgementTest {

private ServerMemberManager manager;

private String[] ipList;

private final int ipCount = 3;

private final String ip1 = "1.1.1.1";

private final String ip2 = "2.2.2.2";

private final String ip3 = "3.3.3.3";

private final int defalutPort = 80;

private final String newVersion = "1.4.0";

private final String oldVersion = "1.3.0";

private List<Member> members;

private Map<String, Object> newVersionMeta;

private Map<String, Object> oldVersionMeta;

private ClusterVersionJudgement judgement;

public ClusterVersionJudgementTest() {
}

@BeforeClass
public static void beforeClass() {
EnvUtil.setEnvironment(new MockEnvironment());
Expand All @@ -46,6 +75,19 @@ public static void beforeClass() {
@Before
public void beforeMethod() throws Exception {
manager = new ServerMemberManager(new MockServletContext());
newVersionMeta = new HashMap<>(4);
newVersionMeta.put(MemberMetaDataConstants.VERSION, newVersion);
oldVersionMeta = new HashMap<>(4);
oldVersionMeta.put(MemberMetaDataConstants.VERSION, oldVersion);
ipList = new String[ipCount];
ipList[0] = ip1;
ipList[1] = ip2;
ipList[2] = ip3;
members = new LinkedList<>();
members.add(Member.builder().ip(ipList[0]).port(defalutPort).state(NodeState.UP).build());
members.add(Member.builder().ip(ipList[1]).port(defalutPort).state(NodeState.UP).build());
members.add(Member.builder().ip(ipList[2]).port(defalutPort).state(NodeState.UP).build());
manager.memberJoin(members);
}

@After
Expand All @@ -59,49 +101,49 @@ public void afterMethod() throws Exception {
*/
@Test
public void testAllMemberIsNewVersion() {
Map<String, String> metadataInfo = new HashMap<>(4);
metadataInfo.put(MemberMetaDataConstants.VERSION, "1.4.0");
Collection<Member> members = Arrays
.asList(Member.builder().ip("1.1.1.1").port(80).state(NodeState.UP).extendInfo(metadataInfo).build(),
Member.builder().ip("2.2.2.2").port(80).state(NodeState.UP).extendInfo(metadataInfo).build(),
Member.builder().ip("3.3.3.3").port(80).state(NodeState.UP).extendInfo(metadataInfo).build());
manager.memberJoin(members);
ClusterVersionJudgement judgement = new ClusterVersionJudgement(manager);
Collection<Member> allMembers = manager.allMembers();
allMembers.forEach(member -> member.setExtendInfo(newVersionMeta));
judgement = new ClusterVersionJudgement(manager);
judgement.judge();
Assert.assertTrue(judgement.allMemberIsNewVersion());
}

@Test
public void testPartMemberIsNewVersion() {
Map<String, String> metadataInfo = new HashMap<>(4);
metadataInfo.put(MemberMetaDataConstants.VERSION, "1.4.0");
Collection<Member> members = Arrays
.asList(Member.builder().ip("1.1.1.1").port(80).state(NodeState.UP).extendInfo(metadataInfo).build(),
Member.builder().ip("2.2.2.2").port(80).state(NodeState.UP).extendInfo(metadataInfo).build(),
Member.builder().ip("3.3.3.3").port(80).state(NodeState.UP).build());
manager.memberJoin(members);
ClusterVersionJudgement judgement = new ClusterVersionJudgement(manager);
Collection<Member> allMembers = manager.allMembers();
AtomicInteger count = new AtomicInteger();
allMembers.forEach(member -> {
if (count.get() == 0) {
member.setExtendInfo(oldVersionMeta);
} else {
count.incrementAndGet();
member.setExtendInfo(newVersionMeta);
}
});
judgement = new ClusterVersionJudgement(manager);
judgement.judge();
Assert.assertFalse(judgement.allMemberIsNewVersion());
}

@Test
public void testPartMemberUpdateToNewVersion() {
Map<String, String> metadataInfo = new HashMap<>(4);
metadataInfo.put(MemberMetaDataConstants.VERSION, "1.4.0");
Collection<Member> members = Arrays
.asList(Member.builder().ip("1.1.1.1").port(80).state(NodeState.UP).extendInfo(metadataInfo).build(),
Member.builder().ip("2.2.2.2").port(80).state(NodeState.UP).extendInfo(metadataInfo).build(),
Member.builder().ip("3.3.3.3").port(80).state(NodeState.UP).build());
manager.memberJoin(members);
ClusterVersionJudgement judgement = new ClusterVersionJudgement(manager);
// Firstly, make a cluster with a part of new version servers.
Collection<Member> allMembers = manager.allMembers();
AtomicInteger count = new AtomicInteger();
allMembers.forEach(member -> {
if (count.get() == 0) {
member.setExtendInfo(oldVersionMeta);
} else {
count.incrementAndGet();
member.setExtendInfo(newVersionMeta);
}
});
judgement = new ClusterVersionJudgement(manager);
judgement.judge();
Assert.assertFalse(judgement.allMemberIsNewVersion());

// update 3.3.3.3:80 version to 1.4.0
manager.update(Member.builder().ip("3.3.3.3").port(80).state(NodeState.UP).extendInfo(metadataInfo).build());

judgement.registerObserver(Assert::assertTrue, 0);
// Secondly, make all in the cluster to be new version servers.
allMembers.forEach(member -> member.setExtendInfo(newVersionMeta));
judgement = new ClusterVersionJudgement(manager);
judgement.judge();
Assert.assertTrue(judgement.allMemberIsNewVersion());
}
Expand Down

0 comments on commit 7d110e6

Please sign in to comment.