Skip to content

Commit

Permalink
test: Adding test cases for RaftClusterMetadataMsg (apache#5995)
Browse files Browse the repository at this point in the history
  • Loading branch information
ggbocoder committed Nov 5, 2023
1 parent a2f22c6 commit b883c2c
Show file tree
Hide file tree
Showing 3 changed files with 60 additions and 0 deletions.
1 change: 1 addition & 0 deletions changes/en-us/2.0.0.md
Original file line number Diff line number Diff line change
Expand Up @@ -171,6 +171,7 @@ The version is updated as follows:
- [[#5845](https://github.com/seata/seata/pull/5845)] upgrade druid and add `test-druid.yml`
- [[#5863](https://github.com/seata/seata/pull/5863)] fix unit test in java 21
- [[#5986](https://github.com/seata/seata/pull/5986)] fix zookeeper UT failed
- [[#5995](https://github.com/seata/seata/pull/5995)] add test cases for RaftClusterMetadataMsg


### Contributors:
Expand Down
2 changes: 2 additions & 0 deletions changes/zh-cn/2.0.0.md
Original file line number Diff line number Diff line change
Expand Up @@ -172,6 +172,7 @@ Seata 是一款开源的分布式事务解决方案,提供高性能和简单
- [[#5845](https://github.com/seata/seata/pull/5845)] 升级 `druid` 版本,并添加 `test-druid.yml` 用于测试seata与druid各版本的兼容性。
- [[#5863](https://github.com/seata/seata/pull/5863)] 修复单元测试在Java21下无法正常运行的问题。
- [[#5986](https://github.com/seata/seata/pull/5986)] 修复 zookeeper 单测失败问题
- [[#5995](https://github.com/seata/seata/pull/5995)] 添加 RaftClusterMetadataMsg 模块的单元测试用例

### Contributors:

Expand Down Expand Up @@ -206,6 +207,7 @@ Seata 是一款开源的分布式事务解决方案,提供高性能和简单
- [iquanzhan](https://github.com/iquanzhan)
- [leizhiyuan](https://github.com/leizhiyuan)
- [Aruato](https://github.com/Aruato)
- [ggbocoder](https://github.com/ggbocoder)

同时,我们收到了社区反馈的很多有价值的issue和建议,非常感谢大家。

Expand Down
57 changes: 57 additions & 0 deletions server/src/test/java/io/seata/server/raft/RaftSyncMessageTest.java
Original file line number Diff line number Diff line change
Expand Up @@ -16,11 +16,17 @@
package io.seata.server.raft;

import java.io.IOException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import io.seata.common.metadata.ClusterRole;
import io.seata.common.metadata.Node;
import io.seata.core.exception.TransactionException;
import io.seata.core.model.BranchType;
import io.seata.server.cluster.raft.sync.msg.RaftBranchSessionSyncMsg;
import io.seata.server.cluster.raft.sync.msg.RaftClusterMetadataMsg;
import io.seata.server.cluster.raft.sync.msg.RaftGlobalSessionSyncMsg;
import io.seata.server.cluster.raft.sync.msg.RaftSyncMessage;
import io.seata.server.cluster.raft.sync.RaftSyncMessageSerializer;
Expand All @@ -29,6 +35,7 @@
import io.seata.server.cluster.raft.snapshot.session.RaftSessionSnapshot;
import io.seata.server.cluster.raft.sync.msg.dto.BranchTransactionDTO;
import io.seata.server.cluster.raft.sync.msg.dto.GlobalTransactionDTO;
import io.seata.server.cluster.raft.sync.msg.dto.RaftClusterMetadata;
import io.seata.server.session.GlobalSession;
import io.seata.server.session.SessionHelper;
import io.seata.server.session.SessionHolder;
Expand Down Expand Up @@ -94,4 +101,54 @@ public void testSnapshotSerialize() throws IOException, TransactionException {
Assertions.assertEquals(1, map.get(globalSession.getXid()).getBranchSessions().size());
}

@Test
public void testRaftClusterMetadataSerialize() throws IOException {
RaftSyncMessage raftSyncMessage = new RaftSyncMessage();
RaftClusterMetadata raftClusterMetadata = new RaftClusterMetadata();
//set leader
Node leader = new Node();
leader.setRole(ClusterRole.LEADER);
leader.setGroup("abc");
leader.setControl(leader.createEndpoint("1.1.1.1",8088,"http"));
leader.setTransaction(leader.createEndpoint("1.1.1.1",8089,"netty"));
Map<String,Object> metaData=new HashMap<>();
metaData.put("abc","abc");
leader.setMetadata(metaData);
raftClusterMetadata.setLeader(leader);
//set learner
Node learner = new Node();
learner.setRole(ClusterRole.LEARNER);
learner.setGroup("abc");
learner.setControl(leader.createEndpoint("1.1.1.2",8088,"http"));
learner.setTransaction(leader.createEndpoint("1.1.1.2",8089,"netty"));
List<Node> learners=new ArrayList<>();
learners.add(learner);
raftClusterMetadata.setLearner(learners);
//set follower
Node follower = new Node();
follower.setRole(ClusterRole.FOLLOWER);
follower.setGroup("abc");
follower.setControl(leader.createEndpoint("1.1.1.3",8088,"http"));
follower.setTransaction(leader.createEndpoint("1.1.1.3",8089,"netty"));
List<Node> followers=new ArrayList<>();
followers.add(follower);
raftClusterMetadata.setFollowers(followers);

RaftClusterMetadataMsg raftClusterMetadataMsg=new RaftClusterMetadataMsg(raftClusterMetadata);

raftSyncMessage.setBody(raftClusterMetadataMsg);
byte[] msg = RaftSyncMessageSerializer.encode(raftSyncMessage);
RaftSyncMessage raftSyncMessage1 = RaftSyncMessageSerializer.decode(msg);
RaftClusterMetadataMsg raftClusterMetadataMsg1=(RaftClusterMetadataMsg) raftSyncMessage1.getBody();
Node leader1=raftClusterMetadataMsg1.getRaftClusterMetadata().getLeader();
Assertions.assertEquals("1.1.1.1", leader1.getControl().getHost());
Assertions.assertEquals("abc",leader1.getMetadata().get("abc"));
Assertions.assertEquals(1,raftClusterMetadataMsg1.getRaftClusterMetadata().getFollowers().size());
Node follower1=raftClusterMetadataMsg1.getRaftClusterMetadata().getFollowers().get(0);
Assertions.assertEquals("abc", follower1.getGroup());
Assertions.assertEquals(1,raftClusterMetadataMsg1.getRaftClusterMetadata().getLearner().size());
Node learner1=raftClusterMetadataMsg1.getRaftClusterMetadata().getLearner().get(0);
Assertions.assertEquals(ClusterRole.LEARNER,learner1.getRole());
}

}

0 comments on commit b883c2c

Please sign in to comment.