From 1d374738880061419cb859a4008214f218a89588 Mon Sep 17 00:00:00 2001 From: Deepthi Devaki Akkoorath Date: Fri, 24 Dec 2021 09:31:18 +0100 Subject: [PATCH] test(raft): remove unnecessary test The test was flaky. It is not clear what property this test is verifying. The current one is inherentaly non-deterministic as it expects a specific leader nodes which is not possible to guarantee. --- .../broker/partitioning/RaftRolesTest.java | 122 ------------------ 1 file changed, 122 deletions(-) diff --git a/broker/src/test/java/io/camunda/zeebe/broker/partitioning/RaftRolesTest.java b/broker/src/test/java/io/camunda/zeebe/broker/partitioning/RaftRolesTest.java index 52a1d295045c..54ce4cd73c96 100644 --- a/broker/src/test/java/io/camunda/zeebe/broker/partitioning/RaftRolesTest.java +++ b/broker/src/test/java/io/camunda/zeebe/broker/partitioning/RaftRolesTest.java @@ -15,19 +15,14 @@ import io.atomix.cluster.NoopSnapshotStoreFactory; import io.atomix.primitive.partition.Partition; import io.atomix.primitive.partition.impl.DefaultPartitionService; -import io.atomix.raft.RaftServer; import io.atomix.raft.RaftServer.Role; import io.atomix.raft.partition.RaftPartition; import io.atomix.raft.partition.RaftPartitionGroup; import java.io.File; import java.util.ArrayList; -import java.util.Arrays; import java.util.Collections; import java.util.List; -import java.util.Map; import java.util.concurrent.CompletableFuture; -import java.util.concurrent.ConcurrentHashMap; -import java.util.concurrent.CopyOnWriteArrayList; import java.util.concurrent.CountDownLatch; import java.util.concurrent.ExecutionException; import java.util.concurrent.TimeUnit; @@ -115,123 +110,6 @@ public void testStepDownInRoleChangedListener() throws Exception { assertThat(roles).containsSequence(Role.INACTIVE, Role.LEADER, Role.LEADER); } - @Test - public void testStepDownOnRoleChangeInCluster() throws Exception { - // given - // normal distribution - // Partitions \ Nodes - // \ 0 1 2 - // 0 L F F - // 1 F L F - // 2 F F L - final CountDownLatch latch = new CountDownLatch(3); - final List> nodeRoles = new CopyOnWriteArrayList<>(); - nodeRoles.add(new ConcurrentHashMap<>()); - nodeRoles.add(new ConcurrentHashMap<>()); - nodeRoles.add(new ConcurrentHashMap<>()); - - final List members = Arrays.asList(1, 2, 3); - - final int firstNodeId = 1; - final int expectedFirstNodeLeadingPartition = 1; - final CompletableFuture nodeOneFuture = - startPartitionManagerWithPartitionConsumer( - firstNodeId, - 3, - members, - partition -> { - final Map roleMap = nodeRoles.get(0); - final RaftPartition raftPartition = (RaftPartition) partition; - raftPartition.addRoleChangeListener( - (role, term) -> { - final Integer partitionId = partition.id().id(); - roleMap.put(partitionId, role); - - if (role == Role.LEADER) { - if (partitionId == expectedFirstNodeLeadingPartition) { - raftPartition.stepDown(); - } else { - latch.countDown(); - } - } - }); - }); - - final int secondNodeId = 2; - final int expectedSecondNodeLeadingPartition = 2; - final CompletableFuture nodeTwoFuture = - startPartitionManagerWithPartitionConsumer( - secondNodeId, - 3, - members, - partition -> { - final Map roleMap = nodeRoles.get(1); - final RaftPartition raftPartition = (RaftPartition) partition; - raftPartition.addRoleChangeListener( - (role, term) -> { - final Integer partitionId = partition.id().id(); - roleMap.put(partitionId, role); - - if (role == Role.LEADER) { - if (partitionId == expectedSecondNodeLeadingPartition) { - raftPartition.stepDown(); - } else { - latch.countDown(); - } - } - }); - }); - - final int thirdNodeId = 3; - final int expectedThirdNodeLeadingPartition = 3; - final CompletableFuture nodeThreeFuture = - startPartitionManagerWithPartitionConsumer( - thirdNodeId, - 3, - members, - partition -> { - final Map roleMap = nodeRoles.get(2); - final RaftPartition raftPartition = (RaftPartition) partition; - raftPartition.addRoleChangeListener( - (role, term) -> { - final Integer partitionId = partition.id().id(); - roleMap.put(partitionId, role); - - if (role == Role.LEADER) { - if (partitionId == expectedThirdNodeLeadingPartition) { - raftPartition.stepDown(); - } else { - latch.countDown(); - } - } - }); - }); - - // then - CompletableFuture.allOf(nodeOneFuture, nodeTwoFuture, nodeThreeFuture).join(); - assertThat(latch.await(15, TimeUnit.SECONDS)).isTrue(); - - // expect normal leaders are not the leaders this time - assertThat(nodeRoles.get(0)).containsEntry(1, Role.FOLLOWER); - assertThat(nodeRoles.get(1)).containsEntry(2, Role.FOLLOWER); - assertThat(nodeRoles.get(2)).containsEntry(3, Role.FOLLOWER); - - final List leaderRoles = - nodeRoles.stream() - .flatMap(map -> map.values().stream()) - .filter(r -> r == Role.LEADER) - .collect(Collectors.toList()); - - final List followerRoles = - nodeRoles.stream() - .flatMap(map -> map.values().stream()) - .filter(r -> r == Role.FOLLOWER) - .collect(Collectors.toList()); - - assertThat(leaderRoles).hasSize(3); - assertThat(followerRoles).hasSize(6); - } - private CompletableFuture startSingleNodeSinglePartitionWithPartitionConsumer( final Consumer partitionConsumer) {