From ed78b1c0c7ac7dd237e41699d1eec792997e6852 Mon Sep 17 00:00:00 2001 From: BUAAserein <18376359@buaa.edu.cn> Date: Mon, 21 Aug 2023 17:17:08 +0800 Subject: [PATCH 1/2] enhance test --- .../iotdb/consensus/iot/StabilityTest.java | 70 ++++++++++++++++++- .../consensus/ratis/RatisConsensusTest.java | 28 +++++++- .../consensus/simple/SimpleConsensusTest.java | 4 +- 3 files changed, 95 insertions(+), 7 deletions(-) diff --git a/iotdb-core/consensus/src/test/java/org/apache/iotdb/consensus/iot/StabilityTest.java b/iotdb-core/consensus/src/test/java/org/apache/iotdb/consensus/iot/StabilityTest.java index ec6a70189424a..c045a8777270b 100644 --- a/iotdb-core/consensus/src/test/java/org/apache/iotdb/consensus/iot/StabilityTest.java +++ b/iotdb-core/consensus/src/test/java/org/apache/iotdb/consensus/iot/StabilityTest.java @@ -27,8 +27,7 @@ import org.apache.iotdb.consensus.IConsensus; import org.apache.iotdb.consensus.common.Peer; import org.apache.iotdb.consensus.config.ConsensusConfig; -import org.apache.iotdb.consensus.exception.ConsensusException; -import org.apache.iotdb.consensus.exception.ConsensusGroupModifyPeerException; +import org.apache.iotdb.consensus.exception.*; import org.apache.iotdb.consensus.iot.util.TestStateMachine; import org.apache.ratis.util.FileUtils; @@ -41,6 +40,8 @@ import java.io.IOException; import java.util.Collections; +import static org.junit.Assert.assertTrue; + public class StabilityTest { private final ConsensusGroupId dataRegionId = new DataRegionId(1); @@ -49,7 +50,7 @@ public class StabilityTest { private IConsensus consensusImpl; - private final int basePort = 9000; + private final int basePort = 6667; public void constructConsensus() throws IOException { consensusImpl = @@ -89,6 +90,58 @@ public void allTest() throws Exception { snapshotUpgradeTest(); } + @Test + public void addConsensusGroup() { + try { + consensusImpl.createLocalPeer( + dataRegionId, + Collections.singletonList(new Peer(dataRegionId, 1, new TEndPoint("0.0.0.0", 6667)))); + } catch (ConsensusException e) { + throw new RuntimeException(e); + } + + try { + consensusImpl.createLocalPeer( + dataRegionId, + Collections.singletonList(new Peer(dataRegionId, 1, new TEndPoint("0.0.0.0", 6667)))); + } catch (ConsensusException e) { + assertTrue(e instanceof ConsensusGroupAlreadyExistException); + } + + try { + consensusImpl.createLocalPeer(dataRegionId, Collections.emptyList()); + } catch (ConsensusException e) { + assertTrue(e instanceof IllegalPeerNumException); + } + + try { + consensusImpl.createLocalPeer( + dataRegionId, + Collections.singletonList(new Peer(dataRegionId, 1, new TEndPoint("0.0.0.1", 6667)))); + } catch (ConsensusException e) { + assertTrue(e instanceof IllegalPeerEndpointException); + } + } + + @Test + public void removeConsensusGroup() throws ConsensusException { + try { + consensusImpl.deleteLocalPeer(dataRegionId); + } catch (ConsensusException e) { + assertTrue(e instanceof ConsensusGroupNotExistException); + } + + try { + consensusImpl.createLocalPeer( + dataRegionId, + Collections.singletonList(new Peer(dataRegionId, 1, new TEndPoint("0.0.0.0", 6667)))); + } catch (ConsensusException e) { + throw new RuntimeException(e); + } + + consensusImpl.deleteLocalPeer(dataRegionId); + } + public void peerTest() throws Exception { consensusImpl.createLocalPeer( dataRegionId, @@ -106,6 +159,17 @@ public void peerTest() throws Exception { consensusImpl.deleteLocalPeer(dataRegionId); } + @Test + public void transferLeader() { + try { + consensusImpl.transferLeader( + dataRegionId, new Peer(dataRegionId, 1, new TEndPoint("0.0.0.0", 6667))); + Assert.fail("Can't transfer leader in SimpleConsensus."); + } catch (ConsensusException e) { + assert true; + } + } + public void snapshotTest() throws IOException, ConsensusException { consensusImpl.createLocalPeer( dataRegionId, diff --git a/iotdb-core/consensus/src/test/java/org/apache/iotdb/consensus/ratis/RatisConsensusTest.java b/iotdb-core/consensus/src/test/java/org/apache/iotdb/consensus/ratis/RatisConsensusTest.java index 850e26f5135ef..07fb82fc53776 100644 --- a/iotdb-core/consensus/src/test/java/org/apache/iotdb/consensus/ratis/RatisConsensusTest.java +++ b/iotdb-core/consensus/src/test/java/org/apache/iotdb/consensus/ratis/RatisConsensusTest.java @@ -27,8 +27,7 @@ import org.apache.iotdb.consensus.common.Peer; import org.apache.iotdb.consensus.common.request.ByteBufferConsensusRequest; import org.apache.iotdb.consensus.config.RatisConfig; -import org.apache.iotdb.consensus.exception.ConsensusException; -import org.apache.iotdb.consensus.exception.ConsensusGroupAlreadyExistException; +import org.apache.iotdb.consensus.exception.*; import org.apache.iotdb.rpc.TSStatusCode; import org.apache.ratis.util.TimeDuration; @@ -135,6 +134,11 @@ public void addMemberToGroup() throws Exception { @Test public void removeMemberFromGroup() throws Exception { + try { + servers.get(0).deleteLocalPeer(group.getGroupId()); + } catch (ConsensusException e) { + Assert.assertTrue(e instanceof ConsensusGroupNotExistException); + } servers.get(0).createLocalPeer(group.getGroupId(), group.getPeers()); servers.get(1).createLocalPeer(group.getGroupId(), group.getPeers()); servers.get(2).createLocalPeer(group.getGroupId(), group.getPeers()); @@ -152,15 +156,35 @@ public void removeMemberFromGroup() throws Exception { @Test public void oneMemberGroupChange() throws Exception { + try { + servers.get(0).addRemotePeer(group.getGroupId(), peers.get(0)); + } catch (ConsensusException e) { + Assert.assertTrue(e instanceof ConsensusGroupNotExistException); + } servers.get(0).createLocalPeer(group.getGroupId(), peers.subList(0, 1)); doConsensus(servers.get(0), group.getGroupId(), 10, 10); servers.get(1).createLocalPeer(group.getGroupId(), Collections.emptyList()); servers.get(0).addRemotePeer(group.getGroupId(), peers.get(1)); + try { + servers.get(0).addRemotePeer(group.getGroupId(), peers.get(1)); + } catch (ConsensusException e) { + Assert.assertTrue(e instanceof PeerAlreadyInConsensusGroupException); + } servers.get(1).transferLeader(group.getGroupId(), peers.get(1)); servers.get(0).removeRemotePeer(group.getGroupId(), peers.get(0)); + try { + servers.get(0).removeRemotePeer(group.getGroupId(), peers.get(0)); + } catch (ConsensusException e) { + Assert.assertTrue(e instanceof PeerNotInConsensusGroupException); + } Assert.assertEquals(servers.get(1).getLeader(gid).getNodeId(), peers.get(1).getNodeId()); servers.get(0).deleteLocalPeer(group.getGroupId()); + try { + servers.get(0).removeRemotePeer(group.getGroupId(), peers.get(0)); + } catch (ConsensusException e) { + Assert.assertTrue(e instanceof ConsensusGroupNotExistException); + } } @Test diff --git a/iotdb-core/consensus/src/test/java/org/apache/iotdb/consensus/simple/SimpleConsensusTest.java b/iotdb-core/consensus/src/test/java/org/apache/iotdb/consensus/simple/SimpleConsensusTest.java index 8dcf3aa61815c..d5d277bea1e14 100644 --- a/iotdb-core/consensus/src/test/java/org/apache/iotdb/consensus/simple/SimpleConsensusTest.java +++ b/iotdb-core/consensus/src/test/java/org/apache/iotdb/consensus/simple/SimpleConsensusTest.java @@ -283,12 +283,12 @@ public void write() throws ConsensusException { consensusImpl.createLocalPeer( configId, Collections.singletonList(new Peer(configId, 1, new TEndPoint("0.0.0.0", 6667)))); - // test new TestStateMachine(true), should return 1; + // test new TestStateMachine(false), should return -1; TSStatus response4 = consensusImpl.write(dataRegionId, entry1); assertNotNull(response4); assertEquals(-1, response4.getCode()); - // test new TestStateMachine(false), should return -1; + // test new TestStateMachine(true), should return 1; TSStatus response5 = consensusImpl.write(schemaRegionId, entry1); assertNotNull(response5); assertEquals(1, response5.getCode()); From f27b1f685e84148d92d993b4ddfd68b69806050c Mon Sep 17 00:00:00 2001 From: BUAAserein <18376359@buaa.edu.cn> Date: Mon, 21 Aug 2023 18:46:28 +0800 Subject: [PATCH 2/2] enhance test --- .../iotdb/confignode/manager/PermissionManager.java | 2 +- .../iotdb/confignode/manager/TriggerManager.java | 2 +- .../org/apache/iotdb/consensus/iot/StabilityTest.java | 10 +++++----- .../iotdb/consensus/simple/SimpleConsensusTest.java | 6 +++--- 4 files changed, 10 insertions(+), 10 deletions(-) diff --git a/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/manager/PermissionManager.java b/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/manager/PermissionManager.java index 7cbaeeeaec380..87878fb5b13e5 100644 --- a/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/manager/PermissionManager.java +++ b/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/manager/PermissionManager.java @@ -19,7 +19,6 @@ package org.apache.iotdb.confignode.manager; -import java.util.Collections; import org.apache.iotdb.common.rpc.thrift.TDataNodeConfiguration; import org.apache.iotdb.common.rpc.thrift.TSStatus; import org.apache.iotdb.commons.path.PartialPath; @@ -39,6 +38,7 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import java.util.Collections; import java.util.List; /** Manager permission read and operation. */ diff --git a/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/manager/TriggerManager.java b/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/manager/TriggerManager.java index 372abdce43000..e1e1905fb6203 100644 --- a/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/manager/TriggerManager.java +++ b/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/manager/TriggerManager.java @@ -19,7 +19,6 @@ package org.apache.iotdb.confignode.manager; -import java.io.IOException; import org.apache.iotdb.common.rpc.thrift.TDataNodeLocation; import org.apache.iotdb.common.rpc.thrift.TSStatus; import org.apache.iotdb.commons.path.PartialPath; @@ -60,6 +59,7 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import java.io.IOException; import java.util.Collections; import java.util.List; import java.util.Map; diff --git a/iotdb-core/consensus/src/test/java/org/apache/iotdb/consensus/iot/StabilityTest.java b/iotdb-core/consensus/src/test/java/org/apache/iotdb/consensus/iot/StabilityTest.java index c045a8777270b..647b659db9e67 100644 --- a/iotdb-core/consensus/src/test/java/org/apache/iotdb/consensus/iot/StabilityTest.java +++ b/iotdb-core/consensus/src/test/java/org/apache/iotdb/consensus/iot/StabilityTest.java @@ -85,19 +85,21 @@ public void tearDown() throws IOException { @Test public void allTest() throws Exception { + addConsensusGroup(); + removeConsensusGroup(); peerTest(); + transferLeader(); snapshotTest(); snapshotUpgradeTest(); } - @Test public void addConsensusGroup() { try { consensusImpl.createLocalPeer( dataRegionId, Collections.singletonList(new Peer(dataRegionId, 1, new TEndPoint("0.0.0.0", 6667)))); } catch (ConsensusException e) { - throw new RuntimeException(e); + Assert.fail(); } try { @@ -123,7 +125,6 @@ public void addConsensusGroup() { } } - @Test public void removeConsensusGroup() throws ConsensusException { try { consensusImpl.deleteLocalPeer(dataRegionId); @@ -136,7 +137,7 @@ public void removeConsensusGroup() throws ConsensusException { dataRegionId, Collections.singletonList(new Peer(dataRegionId, 1, new TEndPoint("0.0.0.0", 6667)))); } catch (ConsensusException e) { - throw new RuntimeException(e); + Assert.fail(); } consensusImpl.deleteLocalPeer(dataRegionId); @@ -159,7 +160,6 @@ public void peerTest() throws Exception { consensusImpl.deleteLocalPeer(dataRegionId); } - @Test public void transferLeader() { try { consensusImpl.transferLeader( diff --git a/iotdb-core/consensus/src/test/java/org/apache/iotdb/consensus/simple/SimpleConsensusTest.java b/iotdb-core/consensus/src/test/java/org/apache/iotdb/consensus/simple/SimpleConsensusTest.java index d5d277bea1e14..61857d5685961 100644 --- a/iotdb-core/consensus/src/test/java/org/apache/iotdb/consensus/simple/SimpleConsensusTest.java +++ b/iotdb-core/consensus/src/test/java/org/apache/iotdb/consensus/simple/SimpleConsensusTest.java @@ -169,7 +169,7 @@ public void addConsensusGroup() { dataRegionId, Collections.singletonList(new Peer(dataRegionId, 1, new TEndPoint("0.0.0.0", 6667)))); } catch (ConsensusException e) { - throw new RuntimeException(e); + Assert.fail(); } try { @@ -203,7 +203,7 @@ public void addConsensusGroup() { schemaRegionId, Collections.singletonList(new Peer(schemaRegionId, 1, new TEndPoint("0.0.0.0", 6667)))); } catch (ConsensusException e) { - throw new RuntimeException(e); + Assert.fail(); } } @@ -220,7 +220,7 @@ public void removeConsensusGroup() throws ConsensusException { dataRegionId, Collections.singletonList(new Peer(dataRegionId, 1, new TEndPoint("0.0.0.0", 6667)))); } catch (ConsensusException e) { - throw new RuntimeException(e); + Assert.fail(); } consensusImpl.deleteLocalPeer(dataRegionId);