This is an automated email from the ASF dual-hosted git repository.
adoroszlai pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/ozone.git
The following commit(s) were added to refs/heads/master by this push:
new f803bdedd9 HDDS-8617. Ratis underreplication due to maintenance is not
deprioritised (#4735)
f803bdedd9 is described below
commit f803bdedd94ef63dfa95edd001aed5940e04a610
Author: Doroszlai, Attila <[email protected]>
AuthorDate: Fri May 19 22:38:45 2023 +0200
HDDS-8617. Ratis underreplication due to maintenance is not deprioritised
(#4735)
---
.../replication/ContainerHealthResult.java | 81 ++--
.../replication/RatisContainerReplicaCount.java | 8 +-
.../health/ECReplicationCheckHandler.java | 6 +-
.../apache/hadoop/hdds/scm/node/NodeStatus.java | 42 +-
.../replication/TestLegacyReplicationManager.java | 2 +-
.../TestRatisContainerReplicaCount.java | 108 ++---
.../TestClosedWithUnhealthyReplicasHandler.java | 24 +-
.../health/TestDeletingContainerHandler.java | 10 +-
.../health/TestECReplicationCheckHandler.java | 328 +++++++--------
.../health/TestRatisReplicationCheckHandler.java | 448 +++++++++++----------
.../TestRatisUnhealthyReplicationCheckHandler.java | 128 +++---
11 files changed, 630 insertions(+), 555 deletions(-)
diff --git
a/hadoop-hdds/server-scm/src/main/java/org/apache/hadoop/hdds/scm/container/replication/ContainerHealthResult.java
b/hadoop-hdds/server-scm/src/main/java/org/apache/hadoop/hdds/scm/container/replication/ContainerHealthResult.java
index 31e35e7e38..25d1d9e439 100644
---
a/hadoop-hdds/server-scm/src/main/java/org/apache/hadoop/hdds/scm/container/replication/ContainerHealthResult.java
+++
b/hadoop-hdds/server-scm/src/main/java/org/apache/hadoop/hdds/scm/container/replication/ContainerHealthResult.java
@@ -76,7 +76,7 @@ public class ContainerHealthResult {
/**
* Class for Unhealthy container check results, where the container has some
- * issue other than over or under replication.
+ * issue other than over- or under-replication.
*/
public static class UnHealthyResult extends ContainerHealthResult {
@@ -91,21 +91,21 @@ public class ContainerHealthResult {
public static class UnderReplicatedHealthResult
extends ContainerHealthResult {
- // For under replicated containers, the best remaining redundancy we can
+ // For under-replicated containers, the best remaining redundancy we can
// have is 3 for EC-10-4, 2 for EC-6-3, 1 for EC-3-2 and 2 for Ratis.
- // A container which is under-replicated due to decommission will have one
- // more, ie 4, 3, 2, 3 respectively. Ideally we want to sort decommission
- // only under-replication after all other under-replicated containers.
+ // A container which is under-replicated due to decommission or maintenance
+ // will have one more, ie 4, 3, 2, 3 respectively. Ideally we want to sort
+ // such under-replication after all other under-replicated containers.
// It may also make sense to allow under-replicated containers a chance to
- // retry once before processing the decommission only under replication.
- // Therefore we should adjust the weighted remaining redundancy of
- // decommission only under-replicated containers to a floor of 5 so they
- // sort after an under-replicated container with 3 remaining replicas (
- // EC-10-4) and plus one retry.
- private static final int DECOMMISSION_REDUNDANCY = 5;
+ // retry once before processing the out-of-service under-replication.
+ // Therefore, we should adjust the weighted remaining redundancy of
+ // containers under-replicated only due to out-of-service to 5, so they
+ // sort after an under-replicated container with 3 remaining replicas
+ // (EC-10-4) and plus one retry.
+ private static final int OUT_OF_SERVICE_REDUNDANCY = 5;
private final int remainingRedundancy;
- private final boolean dueToDecommission;
+ private final boolean dueToOutOfService;
private final boolean sufficientlyReplicatedAfterPending;
private final boolean unrecoverable;
private boolean hasHealthyReplicas;
@@ -113,19 +113,19 @@ public class ContainerHealthResult {
private int requeueCount = 0;
public UnderReplicatedHealthResult(ContainerInfo containerInfo,
- int remainingRedundancy, boolean dueToDecommission,
+ int remainingRedundancy, boolean dueToOutOfService,
boolean replicatedOkWithPending, boolean unrecoverable) {
- this(containerInfo, remainingRedundancy, dueToDecommission,
+ this(containerInfo, remainingRedundancy, dueToOutOfService,
replicatedOkWithPending, unrecoverable,
HealthState.UNDER_REPLICATED);
}
protected UnderReplicatedHealthResult(ContainerInfo containerInfo,
- int remainingRedundancy, boolean dueToDecommission,
+ int remainingRedundancy, boolean dueToOutOfService,
boolean replicatedOkWithPending, boolean unrecoverable,
HealthState healthState) {
super(containerInfo, healthState);
this.remainingRedundancy = remainingRedundancy;
- this.dueToDecommission = dueToDecommission;
+ this.dueToOutOfService = dueToOutOfService;
this.sufficientlyReplicatedAfterPending = replicatedOkWithPending;
this.unrecoverable = unrecoverable;
}
@@ -155,8 +155,8 @@ public class ContainerHealthResult {
*/
public int getWeightedRedundancy() {
int result = requeueCount;
- if (dueToDecommission) {
- result += DECOMMISSION_REDUNDANCY;
+ if (dueToOutOfService) {
+ result += OUT_OF_SERVICE_REDUNDANCY;
} else {
result += getRemainingRedundancy();
}
@@ -183,8 +183,8 @@ public class ContainerHealthResult {
* unavailable.
* @return True is the under-replication is caused by decommission.
*/
- public boolean underReplicatedDueToDecommission() {
- return dueToDecommission;
+ public boolean underReplicatedDueToOutOfService() {
+ return dueToOutOfService;
}
/**
@@ -237,11 +237,38 @@ public class ContainerHealthResult {
public void setHasHealthyReplicas(boolean hasHealthyReplicas) {
this.hasHealthyReplicas = hasHealthyReplicas;
}
+
+ @Override
+ public String toString() {
+ StringBuilder sb = new StringBuilder("UnderReplicatedHealthResult{")
+ .append("containerId=").append(getContainerInfo().getContainerID())
+ .append(", state=").append(getHealthState())
+ .append(", remainingRedundancy=").append(remainingRedundancy);
+ if (dueToOutOfService) {
+ sb.append(" +dueToOutOfService");
+ }
+ if (sufficientlyReplicatedAfterPending) {
+ sb.append(" +sufficientlyReplicatedAfterPending");
+ }
+ if (unrecoverable) {
+ sb.append(" +unrecoverable");
+ }
+ if (hasHealthyReplicas) {
+ sb.append(" +hasHealthyReplicas");
+ }
+ if (hasUnReplicatedOfflineIndexes) {
+ sb.append(" +hasUnReplicatedOfflineIndexes");
+ }
+ if (requeueCount > 0) {
+ sb.append(" requeued:").append(requeueCount);
+ }
+ return sb.append("}").toString();
+ }
}
/**
* Class to represent a container healthy state which is mis-Replicated. This
- * means the container is neither over nor under replicated, but its replicas
+ * means the container is neither over- nor under-replicated, but its
replicas
* don't meet the requirements of the container placement policy. Eg the
* containers are not spread across enough racks.
*/
@@ -250,13 +277,13 @@ public class ContainerHealthResult {
/**
* In UnderReplicatedHealthState, DECOMMISSION_REDUNDANCY is defined as
- * 5 so that containers which are really under replicated get fixed as a
+ * 5 so that containers which are really under-replicated get fixed as a
* priority over decommissioning hosts. We have defined that a container
- * can only be mis replicated if it is not over or under replicated. Fixing
- * mis replication is arguably less important than competing a
decommission.
- * So as a lot of mis replicated container do not block decommission, we
- * set the redundancy of mis replicated containers to 6 so they sort after
- * under / over replicated and decommissioning replicas in the under
+ * can only be mis-replicated if it is not over- or under-replicated.
Fixing
+ * mis-replication is arguably less important than completing decommission.
+ * To avoid a lot of mis-replicated containers blocking decommission, we
+ * set the redundancy of mis-replicated containers to 6, so they sort after
+ * under/over-replicated and decommissioning replicas in the under
* replication queue.
*/
private static final int MIS_REP_REDUNDANCY = 6;
diff --git
a/hadoop-hdds/server-scm/src/main/java/org/apache/hadoop/hdds/scm/container/replication/RatisContainerReplicaCount.java
b/hadoop-hdds/server-scm/src/main/java/org/apache/hadoop/hdds/scm/container/replication/RatisContainerReplicaCount.java
index e04740ab30..a6e6e390e9 100644
---
a/hadoop-hdds/server-scm/src/main/java/org/apache/hadoop/hdds/scm/container/replication/RatisContainerReplicaCount.java
+++
b/hadoop-hdds/server-scm/src/main/java/org/apache/hadoop/hdds/scm/container/replication/RatisContainerReplicaCount.java
@@ -507,14 +507,14 @@ public class RatisContainerReplicaCount implements
ContainerReplicaCount {
/**
* Checks whether insufficient replication is because of some replicas
- * being on datanodes that were decommissioned.
+ * being on datanodes that were decommissioned or are in maintenance.
*
* @return true if there is insufficient replication and it's because of
* decommissioning.
*/
- private boolean inSufficientDueToDecommission() {
+ boolean insufficientDueToOutOfService() {
int delta = redundancyDelta(true, false);
- return 0 < delta && delta <= getDecommissionCount();
+ return 0 < delta && delta <= getDecommissionCount() +
getMaintenanceCount();
}
/**
@@ -548,7 +548,7 @@ public class RatisContainerReplicaCount implements
ContainerReplicaCount {
UnderReplicatedHealthResult result = new UnderReplicatedHealthResult(
getContainer(),
getRemainingRedundancy(),
- inSufficientDueToDecommission(),
+ insufficientDueToOutOfService(),
isSufficientlyReplicated(true),
isUnrecoverable());
result.setHasHealthyReplicas(getHealthyReplicaCount() > 0);
diff --git
a/hadoop-hdds/server-scm/src/main/java/org/apache/hadoop/hdds/scm/container/replication/health/ECReplicationCheckHandler.java
b/hadoop-hdds/server-scm/src/main/java/org/apache/hadoop/hdds/scm/container/replication/health/ECReplicationCheckHandler.java
index 1073498c29..55f6c4cdf4 100644
---
a/hadoop-hdds/server-scm/src/main/java/org/apache/hadoop/hdds/scm/container/replication/health/ECReplicationCheckHandler.java
+++
b/hadoop-hdds/server-scm/src/main/java/org/apache/hadoop/hdds/scm/container/replication/health/ECReplicationCheckHandler.java
@@ -141,19 +141,19 @@ public class ECReplicationCheckHandler extends
AbstractCheck {
if (!replicaCount.isSufficientlyReplicated(false)) {
List<Integer> missingIndexes = replicaCount.unavailableIndexes(false);
int remainingRedundancy = repConfig.getParity();
- boolean dueToDecommission = true;
+ boolean dueToOutOfService = true;
if (missingIndexes.size() > 0) {
// The container has reduced redundancy and will need reconstructed
// via an EC reconstruction command. Note that it may also have some
// replicas in decommission / maintenance states, but as the under
// replication is not caused only by decommission, we say it is not
// due to decommission/
- dueToDecommission = false;
+ dueToOutOfService = false;
remainingRedundancy = repConfig.getParity() - missingIndexes.size();
}
ContainerHealthResult.UnderReplicatedHealthResult result =
new ContainerHealthResult.UnderReplicatedHealthResult(
- container, remainingRedundancy, dueToDecommission,
+ container, remainingRedundancy, dueToOutOfService,
replicaCount.isSufficientlyReplicated(true),
replicaCount.isUnrecoverable());
if (replicaCount.decommissioningOnlyIndexes(true).size() > 0
diff --git
a/hadoop-hdds/server-scm/src/main/java/org/apache/hadoop/hdds/scm/node/NodeStatus.java
b/hadoop-hdds/server-scm/src/main/java/org/apache/hadoop/hdds/scm/node/NodeStatus.java
index 84a411974e..7b1d6dd27d 100644
---
a/hadoop-hdds/server-scm/src/main/java/org/apache/hadoop/hdds/scm/node/NodeStatus.java
+++
b/hadoop-hdds/server-scm/src/main/java/org/apache/hadoop/hdds/scm/node/NodeStatus.java
@@ -18,9 +18,12 @@
package org.apache.hadoop.hdds.scm.node;
+import com.google.common.collect.ImmutableSet;
import org.apache.hadoop.hdds.protocol.proto.HddsProtos;
+import java.util.EnumSet;
import java.util.Objects;
+import java.util.Set;
/**
* This class is used to capture the current status of a datanode. This
@@ -30,6 +33,38 @@ import java.util.Objects;
*/
public class NodeStatus implements Comparable<NodeStatus> {
+ private static final Set<HddsProtos.NodeOperationalState>
+ MAINTENANCE_STATES = ImmutableSet.copyOf(EnumSet.of(
+ HddsProtos.NodeOperationalState.ENTERING_MAINTENANCE,
+ HddsProtos.NodeOperationalState.IN_MAINTENANCE
+ ));
+
+ private static final Set<HddsProtos.NodeOperationalState>
+ DECOMMISSION_STATES = ImmutableSet.copyOf(EnumSet.of(
+ HddsProtos.NodeOperationalState.DECOMMISSIONING,
+ HddsProtos.NodeOperationalState.DECOMMISSIONED
+ ));
+
+ private static final Set<HddsProtos.NodeOperationalState>
+ OUT_OF_SERVICE_STATES = ImmutableSet.copyOf(EnumSet.of(
+ HddsProtos.NodeOperationalState.DECOMMISSIONING,
+ HddsProtos.NodeOperationalState.DECOMMISSIONED,
+ HddsProtos.NodeOperationalState.ENTERING_MAINTENANCE,
+ HddsProtos.NodeOperationalState.IN_MAINTENANCE
+ ));
+
+ public static Set<HddsProtos.NodeOperationalState> maintenanceStates() {
+ return MAINTENANCE_STATES;
+ }
+
+ public static Set<HddsProtos.NodeOperationalState> decommissionStates() {
+ return DECOMMISSION_STATES;
+ }
+
+ public static Set<HddsProtos.NodeOperationalState> outOfServiceStates() {
+ return OUT_OF_SERVICE_STATES;
+ }
+
private HddsProtos.NodeOperationalState operationalState;
private HddsProtos.NodeState health;
private long opStateExpiryEpochSeconds;
@@ -104,8 +139,7 @@ public class NodeStatus implements Comparable<NodeStatus> {
* @return True if the node is in any decommission state, false otherwise
*/
public boolean isDecommission() {
- return operationalState == HddsProtos.NodeOperationalState.DECOMMISSIONING
- || operationalState == HddsProtos.NodeOperationalState.DECOMMISSIONED;
+ return DECOMMISSION_STATES.contains(operationalState);
}
/**
@@ -132,9 +166,7 @@ public class NodeStatus implements Comparable<NodeStatus> {
* @return True if the node is in any maintenance state, false otherwise
*/
public boolean isMaintenance() {
- return operationalState
- == HddsProtos.NodeOperationalState.ENTERING_MAINTENANCE
- || operationalState == HddsProtos.NodeOperationalState.IN_MAINTENANCE;
+ return MAINTENANCE_STATES.contains(operationalState);
}
/**
diff --git
a/hadoop-hdds/server-scm/src/test/java/org/apache/hadoop/hdds/scm/container/replication/TestLegacyReplicationManager.java
b/hadoop-hdds/server-scm/src/test/java/org/apache/hadoop/hdds/scm/container/replication/TestLegacyReplicationManager.java
index 2f4139ee0a..9641cdd7d8 100644
---
a/hadoop-hdds/server-scm/src/test/java/org/apache/hadoop/hdds/scm/container/replication/TestLegacyReplicationManager.java
+++
b/hadoop-hdds/server-scm/src/test/java/org/apache/hadoop/hdds/scm/container/replication/TestLegacyReplicationManager.java
@@ -1604,7 +1604,7 @@ public class TestLegacyReplicationManager {
* decommissioned replicas.
*/
@Test
- public void testUnderReplicatedDueToDecommission()
+ public void testUnderReplicatedDueToOutOfService()
throws IOException, TimeoutException {
final ContainerInfo container = createContainer(LifeCycleState.CLOSED);
addReplica(container, new NodeStatus(IN_SERVICE, HEALTHY), CLOSED);
diff --git
a/hadoop-hdds/server-scm/src/test/java/org/apache/hadoop/hdds/scm/container/replication/TestRatisContainerReplicaCount.java
b/hadoop-hdds/server-scm/src/test/java/org/apache/hadoop/hdds/scm/container/replication/TestRatisContainerReplicaCount.java
index cee80925d0..0380f2b8f8 100644
---
a/hadoop-hdds/server-scm/src/test/java/org/apache/hadoop/hdds/scm/container/replication/TestRatisContainerReplicaCount.java
+++
b/hadoop-hdds/server-scm/src/test/java/org/apache/hadoop/hdds/scm/container/replication/TestRatisContainerReplicaCount.java
@@ -26,6 +26,8 @@ import org.apache.hadoop.hdds.scm.container.ContainerInfo;
import org.apache.hadoop.hdds.scm.container.ContainerReplica;
import org.junit.Assert;
import org.junit.jupiter.api.Test;
+import org.junit.jupiter.params.ParameterizedTest;
+import org.junit.jupiter.params.provider.MethodSource;
import java.util.ArrayList;
import java.util.Collections;
@@ -61,7 +63,7 @@ class TestRatisContainerReplicaCount {
ContainerInfo container =
createContainer(HddsProtos.LifeCycleState.CLOSED);
RatisContainerReplicaCount rcnt =
new RatisContainerReplicaCount(container, replica, 0, 0, 3, 2);
- validate(rcnt, true, 0, false);
+ validate(rcnt, true, 0, false, false);
}
@Test
@@ -70,7 +72,7 @@ class TestRatisContainerReplicaCount {
ContainerInfo container =
createContainer(HddsProtos.LifeCycleState.CLOSED);
RatisContainerReplicaCount rcnt =
new RatisContainerReplicaCount(container, replica, 0, 0, 3, 2);
- validate(rcnt, false, 1, false);
+ validate(rcnt, false, 1, false, false);
}
@Test
@@ -79,7 +81,7 @@ class TestRatisContainerReplicaCount {
ContainerInfo container =
createContainer(HddsProtos.LifeCycleState.CLOSED);
RatisContainerReplicaCount rcnt =
new RatisContainerReplicaCount(container, replica, 0, 0, 3, 2);
- validate(rcnt, false, 2, false);
+ validate(rcnt, false, 2, false, false);
}
@Test
@@ -89,7 +91,7 @@ class TestRatisContainerReplicaCount {
ContainerInfo container =
createContainer(HddsProtos.LifeCycleState.CLOSED);
RatisContainerReplicaCount rcnt =
new RatisContainerReplicaCount(container, replica, 1, 0, 3, 2);
- validate(rcnt, false, 0, false);
+ validate(rcnt, false, 0, false, false);
}
/**
@@ -104,7 +106,7 @@ class TestRatisContainerReplicaCount {
ContainerInfo container =
createContainer(HddsProtos.LifeCycleState.CLOSED);
RatisContainerReplicaCount rcnt =
new RatisContainerReplicaCount(container, replica, 1, 0, 3, 2);
- validate(rcnt, true, 0, false);
+ validate(rcnt, true, 0, false, false);
}
/**
@@ -118,7 +120,7 @@ class TestRatisContainerReplicaCount {
ContainerInfo container =
createContainer(HddsProtos.LifeCycleState.CLOSED);
RatisContainerReplicaCount rcnt =
new RatisContainerReplicaCount(container, replica, 0, 1, 3, 2);
- validate(rcnt, false, 1, false);
+ validate(rcnt, false, 1, false, false);
}
/**
@@ -132,7 +134,7 @@ class TestRatisContainerReplicaCount {
ContainerInfo container =
createContainer(HddsProtos.LifeCycleState.CLOSED);
RatisContainerReplicaCount rcnt =
new RatisContainerReplicaCount(container, replica, 1, 1, 3, 2);
- validate(rcnt, false, 0, false);
+ validate(rcnt, false, 0, false, false);
}
@Test
@@ -142,7 +144,7 @@ class TestRatisContainerReplicaCount {
ContainerInfo container =
createContainer(HddsProtos.LifeCycleState.CLOSED);
RatisContainerReplicaCount rcnt =
new RatisContainerReplicaCount(container, replica, 0, 0, 3, 2);
- validate(rcnt, true, -1, true);
+ validate(rcnt, true, -1, true, false);
}
@Test
@@ -152,7 +154,7 @@ class TestRatisContainerReplicaCount {
ContainerInfo container =
createContainer(HddsProtos.LifeCycleState.CLOSED);
RatisContainerReplicaCount rcnt =
new RatisContainerReplicaCount(container, replica, 0, 1, 3, 2);
- validate(rcnt, true, 0, false);
+ validate(rcnt, true, 0, false, false);
}
@Test
@@ -162,7 +164,7 @@ class TestRatisContainerReplicaCount {
ContainerInfo container =
createContainer(HddsProtos.LifeCycleState.CLOSED);
RatisContainerReplicaCount rcnt =
new RatisContainerReplicaCount(container, replica, 0, 2, 3, 2);
- validate(rcnt, false, 1, false);
+ validate(rcnt, false, 1, false, false);
}
@Test
@@ -171,7 +173,7 @@ class TestRatisContainerReplicaCount {
ContainerInfo container =
createContainer(HddsProtos.LifeCycleState.CLOSED);
RatisContainerReplicaCount rcnt =
new RatisContainerReplicaCount(container, replica, 0, 0, 1, 2);
- validate(rcnt, true, 0, false);
+ validate(rcnt, true, 0, false, false);
}
@Test
@@ -180,7 +182,7 @@ class TestRatisContainerReplicaCount {
ContainerInfo container =
createContainer(HddsProtos.LifeCycleState.CLOSED);
RatisContainerReplicaCount rcnt =
new RatisContainerReplicaCount(container, replica, 0, 1, 1, 2);
- validate(rcnt, false, 1, false);
+ validate(rcnt, false, 1, false, false);
}
@Test
@@ -189,7 +191,7 @@ class TestRatisContainerReplicaCount {
ContainerInfo container =
createContainer(HddsProtos.LifeCycleState.CLOSED);
RatisContainerReplicaCount rcnt =
new RatisContainerReplicaCount(container, replica, 2, 0, 3, 2);
- validate(rcnt, false, 0, false);
+ validate(rcnt, false, 0, false, false);
}
/**
@@ -203,17 +205,18 @@ class TestRatisContainerReplicaCount {
ContainerInfo container =
createContainer(HddsProtos.LifeCycleState.CLOSED);
RatisContainerReplicaCount rcnt =
new RatisContainerReplicaCount(container, replica, 0, 0, 3, 2);
- validate(rcnt, true, 0, false);
+ validate(rcnt, true, 0, false, false);
}
- @Test
- void testOneDecommissionedReplica() {
+ @ParameterizedTest
+
@MethodSource("org.apache.hadoop.hdds.scm.node.NodeStatus#decommissionStates")
+ void testOneDecommissionReplica(HddsProtos.NodeOperationalState state) {
Set<ContainerReplica> replica =
- registerNodes(IN_SERVICE, IN_SERVICE, DECOMMISSIONING);
+ registerNodes(IN_SERVICE, IN_SERVICE, state);
ContainerInfo container =
createContainer(HddsProtos.LifeCycleState.CLOSED);
RatisContainerReplicaCount rcnt =
new RatisContainerReplicaCount(container, replica, 0, 0, 3, 2);
- validate(rcnt, false, 1, false);
+ validate(rcnt, false, 1, false, true);
}
@Test
@@ -223,17 +226,18 @@ class TestRatisContainerReplicaCount {
ContainerInfo container =
createContainer(HddsProtos.LifeCycleState.CLOSED);
RatisContainerReplicaCount rcnt =
new RatisContainerReplicaCount(container, replica, 1, 0, 3, 2);
- validate(rcnt, false, 0, false);
+ validate(rcnt, false, 0, false, true);
}
- @Test
- void testAllDecommissioned() {
+ @ParameterizedTest
+
@MethodSource("org.apache.hadoop.hdds.scm.node.NodeStatus#decommissionStates")
+ void testAllDecommissioned(HddsProtos.NodeOperationalState state) {
Set<ContainerReplica> replica =
- registerNodes(DECOMMISSIONED, DECOMMISSIONED, DECOMMISSIONED);
+ registerNodes(state, state, state);
ContainerInfo container =
createContainer(HddsProtos.LifeCycleState.CLOSED);
RatisContainerReplicaCount rcnt =
new RatisContainerReplicaCount(container, replica, 0, 0, 3, 2);
- validate(rcnt, false, 3, false);
+ validate(rcnt, false, 3, false, true);
}
@Test
@@ -242,7 +246,7 @@ class TestRatisContainerReplicaCount {
ContainerInfo container =
createContainer(HddsProtos.LifeCycleState.CLOSED);
RatisContainerReplicaCount rcnt =
new RatisContainerReplicaCount(container, replica, 0, 0, 1, 2);
- validate(rcnt, false, 1, false);
+ validate(rcnt, false, 1, false, true);
}
@@ -252,7 +256,7 @@ class TestRatisContainerReplicaCount {
ContainerInfo container =
createContainer(HddsProtos.LifeCycleState.CLOSED);
RatisContainerReplicaCount rcnt =
new RatisContainerReplicaCount(container, replica, 1, 0, 1, 2);
- validate(rcnt, false, 0, false);
+ validate(rcnt, false, 0, false, true);
}
@Test
@@ -261,21 +265,23 @@ class TestRatisContainerReplicaCount {
ContainerInfo container =
createContainer(HddsProtos.LifeCycleState.CLOSED);
RatisContainerReplicaCount rcnt =
new RatisContainerReplicaCount(container, replica, 0, 0, 1, 2);
- validate(rcnt, true, 0, false);
+ validate(rcnt, true, 0, false, false);
}
/**
* Maintenance tests from here.
*/
- @Test
- void testOneHealthyTwoMaintenanceMinRepOfTwo() {
+ @ParameterizedTest
+ @MethodSource("org.apache.hadoop.hdds.scm.node.NodeStatus#maintenanceStates")
+ void testOneHealthyTwoMaintenanceMinRepOfTwo(
+ HddsProtos.NodeOperationalState state) {
Set<ContainerReplica> replica =
- registerNodes(IN_SERVICE, IN_MAINTENANCE, IN_MAINTENANCE);
+ registerNodes(IN_SERVICE, state, state);
ContainerInfo container =
createContainer(HddsProtos.LifeCycleState.CLOSED);
RatisContainerReplicaCount rcnt =
new RatisContainerReplicaCount(container, replica, 0, 0, 3, 2);
- validate(rcnt, false, 1, false);
+ validate(rcnt, false, 1, false, true);
}
@Test
@@ -285,7 +291,7 @@ class TestRatisContainerReplicaCount {
ContainerInfo container =
createContainer(HddsProtos.LifeCycleState.CLOSED);
RatisContainerReplicaCount rcnt =
new RatisContainerReplicaCount(container, replica, 0, 0, 3, 2);
- validate(rcnt, false, 1, false);
+ validate(rcnt, false, 1, false, true);
}
@Test
@@ -295,7 +301,7 @@ class TestRatisContainerReplicaCount {
ContainerInfo container =
createContainer(HddsProtos.LifeCycleState.CLOSED);
RatisContainerReplicaCount rcnt =
new RatisContainerReplicaCount(container, replica, 0, 0, 3, 1);
- validate(rcnt, true, 0, false);
+ validate(rcnt, true, 0, false, false);
}
@Test
@@ -305,7 +311,7 @@ class TestRatisContainerReplicaCount {
ContainerInfo container =
createContainer(HddsProtos.LifeCycleState.CLOSED);
RatisContainerReplicaCount rcnt =
new RatisContainerReplicaCount(container, replica, 1, 0, 3, 2);
- validate(rcnt, false, 0, false);
+ validate(rcnt, false, 0, false, true);
}
@Test
@@ -315,7 +321,7 @@ class TestRatisContainerReplicaCount {
ContainerInfo container =
createContainer(HddsProtos.LifeCycleState.CLOSED);
RatisContainerReplicaCount rcnt =
new RatisContainerReplicaCount(container, replica, 0, 0, 3, 2);
- validate(rcnt, false, 2, false);
+ validate(rcnt, false, 2, false, true);
}
/**
@@ -330,7 +336,7 @@ class TestRatisContainerReplicaCount {
ContainerInfo container =
createContainer(HddsProtos.LifeCycleState.CLOSED);
RatisContainerReplicaCount rcnt =
new RatisContainerReplicaCount(container, replica, 0, 0, 3, 2);
- validate(rcnt, true, 0, false);
+ validate(rcnt, true, 0, false, false);
}
/**
@@ -346,7 +352,7 @@ class TestRatisContainerReplicaCount {
ContainerInfo container =
createContainer(HddsProtos.LifeCycleState.CLOSED);
RatisContainerReplicaCount rcnt =
new RatisContainerReplicaCount(container, replica, 0, 0, 3, 2);
- validate(rcnt, true, -1, true);
+ validate(rcnt, true, -1, true, false);
assertTrue(rcnt.isSafelyOverReplicated());
}
@@ -356,7 +362,7 @@ class TestRatisContainerReplicaCount {
ContainerInfo container =
createContainer(HddsProtos.LifeCycleState.CLOSED);
RatisContainerReplicaCount rcnt =
new RatisContainerReplicaCount(container, replica, 0, 0, 1, 2);
- validate(rcnt, false, 1, false);
+ validate(rcnt, false, 1, false, true);
}
@Test
@@ -365,7 +371,7 @@ class TestRatisContainerReplicaCount {
ContainerInfo container =
createContainer(HddsProtos.LifeCycleState.CLOSED);
RatisContainerReplicaCount rcnt =
new RatisContainerReplicaCount(container, replica, 1, 0, 1, 2);
- validate(rcnt, false, 0, false);
+ validate(rcnt, false, 0, false, true);
}
@Test
@@ -374,7 +380,7 @@ class TestRatisContainerReplicaCount {
ContainerInfo container =
createContainer(HddsProtos.LifeCycleState.CLOSED);
RatisContainerReplicaCount rcnt =
new RatisContainerReplicaCount(container, replica, 0, 0, 1, 2);
- validate(rcnt, true, 0, false);
+ validate(rcnt, true, 0, false, false);
}
@Test
@@ -385,7 +391,7 @@ class TestRatisContainerReplicaCount {
ContainerInfo container =
createContainer(HddsProtos.LifeCycleState.CLOSED);
RatisContainerReplicaCount rcnt =
new RatisContainerReplicaCount(container, replica, 1, 0, 3, 2);
- validate(rcnt, false, 1, false);
+ validate(rcnt, false, 1, false, true);
}
@Test
@@ -436,7 +442,7 @@ class TestRatisContainerReplicaCount {
RatisContainerReplicaCount rcnt =
new RatisContainerReplicaCount(container, replicas,
Collections.emptyList(), 2, false);
- validate(rcnt, true, 0, false);
+ validate(rcnt, true, 0, false, false);
}
@Test
@@ -566,11 +572,11 @@ class TestRatisContainerReplicaCount {
unhealthyReplica.getDatanodeDetails(), 0));
RatisContainerReplicaCount withoutUnhealthy =
new RatisContainerReplicaCount(container, replicas, ops, 2, false);
- validate(withoutUnhealthy, true, 0, false);
+ validate(withoutUnhealthy, true, 0, false, false);
RatisContainerReplicaCount withUnhealthy =
new RatisContainerReplicaCount(container, replicas, ops, 2, true);
- validate(withUnhealthy, true, 0, false);
+ validate(withUnhealthy, true, 0, false, false);
}
/**
@@ -593,7 +599,7 @@ class TestRatisContainerReplicaCount {
new RatisContainerReplicaCount(container, replicas,
Collections.emptyList(), 2,
false);
- validate(withoutUnhealthy, false, 1, false);
+ validate(withoutUnhealthy, false, 1, false, false);
}
@Test
@@ -657,12 +663,12 @@ class TestRatisContainerReplicaCount {
RatisContainerReplicaCount withoutUnhealthy =
new RatisContainerReplicaCount(container, replicas, ops, 2, false);
- validate(withoutUnhealthy, true, 0, false);
+ validate(withoutUnhealthy, true, 0, false, false);
assertFalse(withoutUnhealthy.isSafelyOverReplicated());
RatisContainerReplicaCount withUnhealthy =
new RatisContainerReplicaCount(container, replicas, ops, 2, true);
- validate(withUnhealthy, true, -1, true);
+ validate(withUnhealthy, true, -1, true, false);
assertFalse(withUnhealthy.isSafelyOverReplicated());
/*
@@ -684,14 +690,14 @@ class TestRatisContainerReplicaCount {
new RatisContainerReplicaCount(container, replicas,
Collections.emptyList(), 2,
false);
- validate(withoutUnhealthy, true, 0, false);
+ validate(withoutUnhealthy, true, 0, false, false);
assertFalse(withoutUnhealthy.isSafelyOverReplicated());
withUnhealthy =
new RatisContainerReplicaCount(container, replicas,
Collections.emptyList(), 2,
true);
- validate(withUnhealthy, true, -1, true);
+ validate(withUnhealthy, true, -1, true, false);
// Violates rule 2
assertFalse(withUnhealthy.isSafelyOverReplicated());
// now check by adding a CLOSED replica
@@ -701,7 +707,7 @@ class TestRatisContainerReplicaCount {
new RatisContainerReplicaCount(container, replicas,
Collections.emptyList(), 2,
true);
- validate(withUnhealthy, true, -2, true);
+ validate(withUnhealthy, true, -2, true, false);
assertTrue(withUnhealthy.isSafelyOverReplicated());
}
@@ -750,10 +756,12 @@ class TestRatisContainerReplicaCount {
private void validate(RatisContainerReplicaCount rcnt,
boolean sufficientlyReplicated, int replicaDelta,
- boolean overReplicated) {
+ boolean overReplicated, boolean insufficientDueToOutOfService) {
assertEquals(sufficientlyReplicated, rcnt.isSufficientlyReplicated());
assertEquals(overReplicated, rcnt.isOverReplicated());
assertEquals(replicaDelta, rcnt.additionalReplicaNeeded());
+ assertEquals(insufficientDueToOutOfService,
+ rcnt.insufficientDueToOutOfService());
}
private Set<ContainerReplica> registerNodes(
diff --git
a/hadoop-hdds/server-scm/src/test/java/org/apache/hadoop/hdds/scm/container/replication/health/TestClosedWithUnhealthyReplicasHandler.java
b/hadoop-hdds/server-scm/src/test/java/org/apache/hadoop/hdds/scm/container/replication/health/TestClosedWithUnhealthyReplicasHandler.java
index bf6232329f..f742c6003e 100644
---
a/hadoop-hdds/server-scm/src/test/java/org/apache/hadoop/hdds/scm/container/replication/health/TestClosedWithUnhealthyReplicasHandler.java
+++
b/hadoop-hdds/server-scm/src/test/java/org/apache/hadoop/hdds/scm/container/replication/health/TestClosedWithUnhealthyReplicasHandler.java
@@ -31,9 +31,8 @@ import
org.apache.hadoop.hdds.scm.container.replication.ContainerCheckRequest;
import org.apache.hadoop.hdds.scm.container.replication.ReplicationManager;
import org.apache.hadoop.hdds.scm.container.replication.ReplicationTestUtil;
import org.apache.ratis.protocol.exceptions.NotLeaderException;
-import org.junit.Assert;
-import org.junit.Before;
-import org.junit.Test;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Test;
import org.mockito.ArgumentCaptor;
import org.mockito.Mockito;
@@ -45,6 +44,9 @@ import static
org.apache.hadoop.hdds.protocol.proto.HddsProtos.LifeCycleState.CL
import static
org.apache.hadoop.hdds.protocol.proto.HddsProtos.NodeOperationalState.IN_SERVICE;
import static
org.apache.hadoop.hdds.scm.container.replication.ReplicationTestUtil.createContainerInfo;
import static
org.apache.hadoop.hdds.scm.container.replication.ReplicationTestUtil.createContainerReplica;
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertFalse;
+import static org.junit.jupiter.api.Assertions.assertTrue;
/**
* Tests for {@link ClosedWithUnhealthyReplicasHandler}.
@@ -55,7 +57,7 @@ public class TestClosedWithUnhealthyReplicasHandler {
private ECReplicationConfig ecReplicationConfig;
private ContainerCheckRequest.Builder requestBuilder;
- @Before
+ @BeforeEach
public void setup() {
ecReplicationConfig = new ECReplicationConfig(3, 2);
replicationManager = Mockito.mock(ReplicationManager.class);
@@ -82,7 +84,7 @@ public class TestClosedWithUnhealthyReplicasHandler {
.setContainerInfo(containerInfo)
.build();
- Assert.assertFalse(handler.handle(request));
+ assertFalse(handler.handle(request));
}
@Test
@@ -103,7 +105,7 @@ public class TestClosedWithUnhealthyReplicasHandler {
.setContainerInfo(containerInfo)
.build();
- Assert.assertFalse(handler.handle(request));
+ assertFalse(handler.handle(request));
}
/**
@@ -135,8 +137,8 @@ public class TestClosedWithUnhealthyReplicasHandler {
.setContainerInfo(container)
.build();
- Assert.assertTrue(handler.handle(request));
- Assert.assertEquals(1, request.getReport().getStat(
+ assertTrue(handler.handle(request));
+ assertEquals(1, request.getReport().getStat(
ReplicationManagerReport.HealthState.UNHEALTHY));
ArgumentCaptor<Integer> replicaIndexCaptor =
@@ -146,7 +148,7 @@ public class TestClosedWithUnhealthyReplicasHandler {
DatanodeDetails.class), Mockito.eq(true));
// replica index that delete was sent for should either be 2 or 5
replicaIndexCaptor.getAllValues()
- .forEach(index -> Assert.assertTrue(index == 2 || index == 5));
+ .forEach(index -> assertTrue(index == 2 || index == 5));
}
/**
@@ -167,7 +169,7 @@ public class TestClosedWithUnhealthyReplicasHandler {
.setContainerInfo(container)
.build();
- Assert.assertFalse(handler.handle(request));
+ assertFalse(handler.handle(request));
}
@Test
@@ -189,6 +191,6 @@ public class TestClosedWithUnhealthyReplicasHandler {
.setContainerInfo(container)
.build();
- Assert.assertFalse(handler.handle(request));
+ assertFalse(handler.handle(request));
}
}
diff --git
a/hadoop-hdds/server-scm/src/test/java/org/apache/hadoop/hdds/scm/container/replication/health/TestDeletingContainerHandler.java
b/hadoop-hdds/server-scm/src/test/java/org/apache/hadoop/hdds/scm/container/replication/health/TestDeletingContainerHandler.java
index eeaf290c7b..0cebdc3007 100644
---
a/hadoop-hdds/server-scm/src/test/java/org/apache/hadoop/hdds/scm/container/replication/health/TestDeletingContainerHandler.java
+++
b/hadoop-hdds/server-scm/src/test/java/org/apache/hadoop/hdds/scm/container/replication/health/TestDeletingContainerHandler.java
@@ -33,7 +33,7 @@ import
org.apache.hadoop.hdds.scm.container.replication.ContainerReplicaOp;
import org.apache.hadoop.hdds.scm.container.replication.ReplicationManager;
import org.apache.hadoop.hdds.scm.container.replication.ReplicationTestUtil;
import org.apache.ratis.protocol.exceptions.NotLeaderException;
-import org.junit.Assert;
+import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
import org.mockito.Mockito;
@@ -94,7 +94,7 @@ public class TestDeletingContainerHandler {
.setContainerReplicas(containerReplicas)
.build();
- Assert.assertFalse(deletingContainerHandler.handle(request));
+ Assertions.assertFalse(deletingContainerHandler.handle(request));
}
@Test
@@ -112,7 +112,7 @@ public class TestDeletingContainerHandler {
.setContainerReplicas(containerReplicas)
.build();
- Assert.assertFalse(deletingContainerHandler.handle(request));
+ Assertions.assertFalse(deletingContainerHandler.handle(request));
}
/**
@@ -145,7 +145,7 @@ public class TestDeletingContainerHandler {
.setContainerReplicas(containerReplicas)
.build();
- Assert.assertTrue(deletingContainerHandler.handle(request));
+ Assertions.assertTrue(deletingContainerHandler.handle(request));
Mockito.verify(replicationManager, Mockito.times(times))
.updateContainerState(Mockito.any(ContainerID.class),
Mockito.any(HddsProtos.LifeCycleEvent.class));
@@ -229,7 +229,7 @@ public class TestDeletingContainerHandler {
.setContainerReplicas(containerReplicas)
.build();
- Assert.assertTrue(deletingContainerHandler.handle(request));
+ Assertions.assertTrue(deletingContainerHandler.handle(request));
Mockito.verify(replicationManager, Mockito.times(times))
.sendDeleteCommand(Mockito.any(ContainerInfo.class), Mockito.anyInt(),
diff --git
a/hadoop-hdds/server-scm/src/test/java/org/apache/hadoop/hdds/scm/container/replication/health/TestECReplicationCheckHandler.java
b/hadoop-hdds/server-scm/src/test/java/org/apache/hadoop/hdds/scm/container/replication/health/TestECReplicationCheckHandler.java
index 850e975b22..33c8dd753b 100644
---
a/hadoop-hdds/server-scm/src/test/java/org/apache/hadoop/hdds/scm/container/replication/health/TestECReplicationCheckHandler.java
+++
b/hadoop-hdds/server-scm/src/test/java/org/apache/hadoop/hdds/scm/container/replication/health/TestECReplicationCheckHandler.java
@@ -36,9 +36,8 @@ import
org.apache.hadoop.hdds.scm.container.replication.ContainerHealthResult.He
import org.apache.hadoop.hdds.scm.container.replication.ContainerReplicaOp;
import org.apache.hadoop.hdds.scm.container.replication.ReplicationQueue;
import org.apache.hadoop.hdds.scm.container.replication.ReplicationTestUtil;
-import org.junit.Assert;
-import org.junit.Before;
-import org.junit.Test;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Test;
import org.mockito.Mockito;
import java.util.ArrayList;
@@ -58,6 +57,9 @@ import static
org.apache.hadoop.hdds.scm.container.replication.ContainerReplicaO
import static
org.apache.hadoop.hdds.scm.container.replication.ReplicationTestUtil.createContainerInfo;
import static
org.apache.hadoop.hdds.scm.container.replication.ReplicationTestUtil.createContainerReplica;
import static
org.apache.hadoop.hdds.scm.container.replication.ReplicationTestUtil.createReplicas;
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertFalse;
+import static org.junit.jupiter.api.Assertions.assertTrue;
import static org.mockito.ArgumentMatchers.anyInt;
import static org.mockito.ArgumentMatchers.anyList;
@@ -74,7 +76,7 @@ public class TestECReplicationCheckHandler {
private ReplicationManagerReport report;
private PlacementPolicy placementPolicy;
- @Before
+ @BeforeEach
public void setup() {
placementPolicy = Mockito.mock(PlacementPolicy.class);
Mockito.when(placementPolicy.validateContainerPlacement(
@@ -102,11 +104,11 @@ public class TestECReplicationCheckHandler {
.build();
ContainerHealthResult result = healthCheck.checkHealth(request);
- Assert.assertEquals(HealthState.HEALTHY, result.getHealthState());
+ assertEquals(HealthState.HEALTHY, result.getHealthState());
- Assert.assertFalse(healthCheck.handle(request));
- Assert.assertEquals(0, repQueue.underReplicatedQueueSize());
- Assert.assertEquals(0, repQueue.overReplicatedQueueSize());
+ assertFalse(healthCheck.handle(request));
+ assertEquals(0, repQueue.underReplicatedQueueSize());
+ assertEquals(0, repQueue.overReplicatedQueueSize());
}
@Test
@@ -120,15 +122,15 @@ public class TestECReplicationCheckHandler {
.build();
UnderReplicatedHealthResult result = (UnderReplicatedHealthResult)
healthCheck.checkHealth(request);
- Assert.assertEquals(HealthState.UNDER_REPLICATED, result.getHealthState());
- Assert.assertEquals(1, result.getRemainingRedundancy());
- Assert.assertFalse(result.isReplicatedOkAfterPending());
- Assert.assertFalse(result.underReplicatedDueToDecommission());
-
- Assert.assertTrue(healthCheck.handle(request));
- Assert.assertEquals(1, repQueue.underReplicatedQueueSize());
- Assert.assertEquals(0, repQueue.overReplicatedQueueSize());
- Assert.assertEquals(1, report.getStat(
+ assertEquals(HealthState.UNDER_REPLICATED, result.getHealthState());
+ assertEquals(1, result.getRemainingRedundancy());
+ assertFalse(result.isReplicatedOkAfterPending());
+ assertFalse(result.underReplicatedDueToOutOfService());
+
+ assertTrue(healthCheck.handle(request));
+ assertEquals(1, repQueue.underReplicatedQueueSize());
+ assertEquals(0, repQueue.overReplicatedQueueSize());
+ assertEquals(1, report.getStat(
ReplicationManagerReport.HealthState.UNDER_REPLICATED));
}
@@ -147,22 +149,22 @@ public class TestECReplicationCheckHandler {
.build();
UnderReplicatedHealthResult result = (UnderReplicatedHealthResult)
healthCheck.checkHealth(request);
- Assert.assertEquals(HealthState.UNDER_REPLICATED, result.getHealthState());
- Assert.assertEquals(1, result.getRemainingRedundancy());
- Assert.assertTrue(result.isReplicatedOkAfterPending());
- Assert.assertFalse(result.underReplicatedDueToDecommission());
+ assertEquals(HealthState.UNDER_REPLICATED, result.getHealthState());
+ assertEquals(1, result.getRemainingRedundancy());
+ assertTrue(result.isReplicatedOkAfterPending());
+ assertFalse(result.underReplicatedDueToOutOfService());
- Assert.assertTrue(healthCheck.handle(request));
+ assertTrue(healthCheck.handle(request));
// Fixed with pending so nothing added to the queue
- Assert.assertEquals(0, repQueue.underReplicatedQueueSize());
- Assert.assertEquals(0, repQueue.overReplicatedQueueSize());
+ assertEquals(0, repQueue.underReplicatedQueueSize());
+ assertEquals(0, repQueue.overReplicatedQueueSize());
// Still under replicated until the pending complete
- Assert.assertEquals(1, report.getStat(
+ assertEquals(1, report.getStat(
ReplicationManagerReport.HealthState.UNDER_REPLICATED));
}
@Test
- public void testUnderReplicatedDueToDecommission() {
+ public void testUnderReplicatedDueToOutOfService() {
ContainerInfo container = createContainerInfo(repConfig);
Set<ContainerReplica> replicas = createReplicas(container.containerID(),
Pair.of(IN_SERVICE, 1), Pair.of(IN_SERVICE, 2),
@@ -175,21 +177,21 @@ public class TestECReplicationCheckHandler {
UnderReplicatedHealthResult result = (UnderReplicatedHealthResult)
healthCheck.checkHealth(request);
- Assert.assertEquals(HealthState.UNDER_REPLICATED, result.getHealthState());
- Assert.assertEquals(2, result.getRemainingRedundancy());
- Assert.assertFalse(result.isReplicatedOkAfterPending());
- Assert.assertTrue(result.underReplicatedDueToDecommission());
-
- Assert.assertTrue(healthCheck.handle(request));
- Assert.assertEquals(1, repQueue.underReplicatedQueueSize());
- Assert.assertEquals(0, repQueue.overReplicatedQueueSize());
+ assertEquals(HealthState.UNDER_REPLICATED, result.getHealthState());
+ assertEquals(2, result.getRemainingRedundancy());
+ assertFalse(result.isReplicatedOkAfterPending());
+ assertTrue(result.underReplicatedDueToOutOfService());
+
+ assertTrue(healthCheck.handle(request));
+ assertEquals(1, repQueue.underReplicatedQueueSize());
+ assertEquals(0, repQueue.overReplicatedQueueSize());
// Still under replicated until the pending complete
- Assert.assertEquals(1, report.getStat(
+ assertEquals(1, report.getStat(
ReplicationManagerReport.HealthState.UNDER_REPLICATED));
}
@Test
- public void testUnderReplicatedDueToDecommissionFixedWithPending() {
+ public void testUnderReplicatedDueToOutOfServiceFixedWithPending() {
ContainerInfo container = createContainerInfo(repConfig);
Set<ContainerReplica> replicas = createReplicas(container.containerID(),
Pair.of(IN_SERVICE, 1), Pair.of(IN_SERVICE, 2),
@@ -206,22 +208,22 @@ public class TestECReplicationCheckHandler {
UnderReplicatedHealthResult result = (UnderReplicatedHealthResult)
healthCheck.checkHealth(request);
- Assert.assertEquals(HealthState.UNDER_REPLICATED, result.getHealthState());
- Assert.assertEquals(2, result.getRemainingRedundancy());
- Assert.assertTrue(result.isReplicatedOkAfterPending());
- Assert.assertTrue(result.underReplicatedDueToDecommission());
+ assertEquals(HealthState.UNDER_REPLICATED, result.getHealthState());
+ assertEquals(2, result.getRemainingRedundancy());
+ assertTrue(result.isReplicatedOkAfterPending());
+ assertTrue(result.underReplicatedDueToOutOfService());
- Assert.assertTrue(healthCheck.handle(request));
+ assertTrue(healthCheck.handle(request));
// Fixed with pending so nothing added to the queue
- Assert.assertEquals(0, repQueue.underReplicatedQueueSize());
- Assert.assertEquals(0, repQueue.overReplicatedQueueSize());
+ assertEquals(0, repQueue.underReplicatedQueueSize());
+ assertEquals(0, repQueue.overReplicatedQueueSize());
// Still under replicated until the pending complete
- Assert.assertEquals(1, report.getStat(
+ assertEquals(1, report.getStat(
ReplicationManagerReport.HealthState.UNDER_REPLICATED));
}
@Test
- public void testUnderReplicatedDueToDecommissionAndMissingReplica() {
+ public void testUnderReplicatedDueToOutOfServiceAndMissingReplica() {
ContainerInfo container = createContainerInfo(repConfig);
Set<ContainerReplica> replicas = createReplicas(container.containerID(),
Pair.of(IN_SERVICE, 1), Pair.of(IN_SERVICE, 2),
@@ -237,15 +239,15 @@ public class TestECReplicationCheckHandler {
.build();
UnderReplicatedHealthResult result = (UnderReplicatedHealthResult)
healthCheck.checkHealth(request);
- Assert.assertEquals(HealthState.UNDER_REPLICATED, result.getHealthState());
- Assert.assertEquals(1, result.getRemainingRedundancy());
- Assert.assertFalse(result.isReplicatedOkAfterPending());
- Assert.assertFalse(result.underReplicatedDueToDecommission());
-
- Assert.assertTrue(healthCheck.handle(request));
- Assert.assertEquals(1, repQueue.underReplicatedQueueSize());
- Assert.assertEquals(0, repQueue.overReplicatedQueueSize());
- Assert.assertEquals(1, report.getStat(
+ assertEquals(HealthState.UNDER_REPLICATED, result.getHealthState());
+ assertEquals(1, result.getRemainingRedundancy());
+ assertFalse(result.isReplicatedOkAfterPending());
+ assertFalse(result.underReplicatedDueToOutOfService());
+
+ assertTrue(healthCheck.handle(request));
+ assertEquals(1, repQueue.underReplicatedQueueSize());
+ assertEquals(0, repQueue.overReplicatedQueueSize());
+ assertEquals(1, report.getStat(
ReplicationManagerReport.HealthState.UNDER_REPLICATED));
}
@@ -261,19 +263,19 @@ public class TestECReplicationCheckHandler {
UnderReplicatedHealthResult result = (UnderReplicatedHealthResult)
healthCheck.checkHealth(request);
- Assert.assertEquals(HealthState.UNDER_REPLICATED, result.getHealthState());
- Assert.assertEquals(-1, result.getRemainingRedundancy());
- Assert.assertFalse(result.isReplicatedOkAfterPending());
- Assert.assertFalse(result.underReplicatedDueToDecommission());
- Assert.assertTrue(result.isUnrecoverable());
+ assertEquals(HealthState.UNDER_REPLICATED, result.getHealthState());
+ assertEquals(-1, result.getRemainingRedundancy());
+ assertFalse(result.isReplicatedOkAfterPending());
+ assertFalse(result.underReplicatedDueToOutOfService());
+ assertTrue(result.isUnrecoverable());
- Assert.assertTrue(healthCheck.handle(request));
+ assertTrue(healthCheck.handle(request));
// Unrecoverable so not added to the queue
- Assert.assertEquals(0, repQueue.underReplicatedQueueSize());
- Assert.assertEquals(0, repQueue.overReplicatedQueueSize());
- Assert.assertEquals(0, report.getStat(
+ assertEquals(0, repQueue.underReplicatedQueueSize());
+ assertEquals(0, repQueue.overReplicatedQueueSize());
+ assertEquals(0, report.getStat(
ReplicationManagerReport.HealthState.UNDER_REPLICATED));
- Assert.assertEquals(1, report.getStat(
+ assertEquals(1, report.getStat(
ReplicationManagerReport.HealthState.MISSING));
}
@@ -299,20 +301,20 @@ public class TestECReplicationCheckHandler {
UnderReplicatedHealthResult result = (UnderReplicatedHealthResult)
healthCheck.checkHealth(request);
- Assert.assertEquals(HealthState.UNDER_REPLICATED, result.getHealthState());
- Assert.assertEquals(-1, result.getRemainingRedundancy());
- Assert.assertFalse(result.isReplicatedOkAfterPending());
- Assert.assertFalse(result.underReplicatedDueToDecommission());
- Assert.assertTrue(result.isUnrecoverable());
- Assert.assertTrue(result.hasUnreplicatedOfflineIndexes());
-
- Assert.assertTrue(healthCheck.handle(request));
+ assertEquals(HealthState.UNDER_REPLICATED, result.getHealthState());
+ assertEquals(-1, result.getRemainingRedundancy());
+ assertFalse(result.isReplicatedOkAfterPending());
+ assertFalse(result.underReplicatedDueToOutOfService());
+ assertTrue(result.isUnrecoverable());
+ assertTrue(result.hasUnreplicatedOfflineIndexes());
+
+ assertTrue(healthCheck.handle(request));
// Unrecoverable so not added to the queue
- Assert.assertEquals(1, repQueue.underReplicatedQueueSize());
- Assert.assertEquals(0, repQueue.overReplicatedQueueSize());
- Assert.assertEquals(0, report.getStat(
+ assertEquals(1, repQueue.underReplicatedQueueSize());
+ assertEquals(0, repQueue.overReplicatedQueueSize());
+ assertEquals(0, report.getStat(
ReplicationManagerReport.HealthState.UNDER_REPLICATED));
- Assert.assertEquals(1, report.getStat(
+ assertEquals(1, report.getStat(
ReplicationManagerReport.HealthState.MISSING));
}
@@ -342,20 +344,20 @@ public class TestECReplicationCheckHandler {
UnderReplicatedHealthResult result = (UnderReplicatedHealthResult)
healthCheck.checkHealth(request);
- Assert.assertEquals(HealthState.UNDER_REPLICATED, result.getHealthState());
- Assert.assertEquals(-1, result.getRemainingRedundancy());
- Assert.assertFalse(result.isReplicatedOkAfterPending());
- Assert.assertFalse(result.underReplicatedDueToDecommission());
- Assert.assertTrue(result.isUnrecoverable());
- Assert.assertFalse(result.hasUnreplicatedOfflineIndexes());
-
- Assert.assertTrue(healthCheck.handle(request));
+ assertEquals(HealthState.UNDER_REPLICATED, result.getHealthState());
+ assertEquals(-1, result.getRemainingRedundancy());
+ assertFalse(result.isReplicatedOkAfterPending());
+ assertFalse(result.underReplicatedDueToOutOfService());
+ assertTrue(result.isUnrecoverable());
+ assertFalse(result.hasUnreplicatedOfflineIndexes());
+
+ assertTrue(healthCheck.handle(request));
// Unrecoverable so not added to the queue
- Assert.assertEquals(0, repQueue.underReplicatedQueueSize());
- Assert.assertEquals(0, repQueue.overReplicatedQueueSize());
- Assert.assertEquals(1, report.getStat(
+ assertEquals(0, repQueue.underReplicatedQueueSize());
+ assertEquals(0, repQueue.overReplicatedQueueSize());
+ assertEquals(1, report.getStat(
ReplicationManagerReport.HealthState.UNDER_REPLICATED));
- Assert.assertEquals(1, report.getStat(
+ assertEquals(1, report.getStat(
ReplicationManagerReport.HealthState.MISSING));
}
@@ -387,15 +389,15 @@ public class TestECReplicationCheckHandler {
UnderReplicatedHealthResult result = (UnderReplicatedHealthResult)
healthCheck.checkHealth(request);
- Assert.assertEquals(HealthState.UNDER_REPLICATED, result.getHealthState());
- Assert.assertEquals(0, result.getRemainingRedundancy());
- Assert.assertFalse(result.isReplicatedOkAfterPending());
- Assert.assertFalse(result.underReplicatedDueToDecommission());
-
- Assert.assertTrue(healthCheck.handle(request));
- Assert.assertEquals(1, repQueue.underReplicatedQueueSize());
- Assert.assertEquals(0, repQueue.overReplicatedQueueSize());
- Assert.assertEquals(1, report.getStat(
+ assertEquals(HealthState.UNDER_REPLICATED, result.getHealthState());
+ assertEquals(0, result.getRemainingRedundancy());
+ assertFalse(result.isReplicatedOkAfterPending());
+ assertFalse(result.underReplicatedDueToOutOfService());
+
+ assertTrue(healthCheck.handle(request));
+ assertEquals(1, repQueue.underReplicatedQueueSize());
+ assertEquals(0, repQueue.overReplicatedQueueSize());
+ assertEquals(1, report.getStat(
ReplicationManagerReport.HealthState.UNDER_REPLICATED));
}
@@ -424,11 +426,11 @@ public class TestECReplicationCheckHandler {
.build();
ContainerHealthResult result = healthCheck.checkHealth(request);
- Assert.assertEquals(HealthState.HEALTHY, result.getHealthState());
+ assertEquals(HealthState.HEALTHY, result.getHealthState());
- Assert.assertFalse(healthCheck.handle(request));
- Assert.assertEquals(0, repQueue.underReplicatedQueueSize());
- Assert.assertEquals(0, repQueue.overReplicatedQueueSize());
+ assertFalse(healthCheck.handle(request));
+ assertEquals(0, repQueue.underReplicatedQueueSize());
+ assertEquals(0, repQueue.overReplicatedQueueSize());
}
@Test
@@ -447,14 +449,14 @@ public class TestECReplicationCheckHandler {
OverReplicatedHealthResult result = (OverReplicatedHealthResult)
healthCheck.checkHealth(request);
- Assert.assertEquals(HealthState.OVER_REPLICATED, result.getHealthState());
- Assert.assertEquals(2, result.getExcessRedundancy());
- Assert.assertFalse(result.isReplicatedOkAfterPending());
-
- Assert.assertTrue(healthCheck.handle(request));
- Assert.assertEquals(0, repQueue.underReplicatedQueueSize());
- Assert.assertEquals(1, repQueue.overReplicatedQueueSize());
- Assert.assertEquals(1, report.getStat(
+ assertEquals(HealthState.OVER_REPLICATED, result.getHealthState());
+ assertEquals(2, result.getExcessRedundancy());
+ assertFalse(result.isReplicatedOkAfterPending());
+
+ assertTrue(healthCheck.handle(request));
+ assertEquals(0, repQueue.underReplicatedQueueSize());
+ assertEquals(1, repQueue.overReplicatedQueueSize());
+ assertEquals(1, report.getStat(
ReplicationManagerReport.HealthState.OVER_REPLICATED));
}
@@ -480,14 +482,14 @@ public class TestECReplicationCheckHandler {
OverReplicatedHealthResult result = (OverReplicatedHealthResult)
healthCheck.checkHealth(request);
- Assert.assertEquals(HealthState.OVER_REPLICATED, result.getHealthState());
- Assert.assertEquals(2, result.getExcessRedundancy());
- Assert.assertTrue(result.isReplicatedOkAfterPending());
-
- Assert.assertTrue(healthCheck.handle(request));
- Assert.assertEquals(0, repQueue.underReplicatedQueueSize());
- Assert.assertEquals(0, repQueue.overReplicatedQueueSize());
- Assert.assertEquals(1, report.getStat(
+ assertEquals(HealthState.OVER_REPLICATED, result.getHealthState());
+ assertEquals(2, result.getExcessRedundancy());
+ assertTrue(result.isReplicatedOkAfterPending());
+
+ assertTrue(healthCheck.handle(request));
+ assertEquals(0, repQueue.underReplicatedQueueSize());
+ assertEquals(0, repQueue.overReplicatedQueueSize());
+ assertEquals(1, report.getStat(
ReplicationManagerReport.HealthState.OVER_REPLICATED));
}
@@ -504,14 +506,14 @@ public class TestECReplicationCheckHandler {
.setContainerInfo(container)
.build();
ContainerHealthResult result = healthCheck.checkHealth(request);
- Assert.assertEquals(HealthState.HEALTHY, result.getHealthState());
+ assertEquals(HealthState.HEALTHY, result.getHealthState());
// As it is maintenance replicas causing the over replication, the
container
// is not really over-replicated.
- Assert.assertFalse(healthCheck.handle(request));
- Assert.assertEquals(0, repQueue.underReplicatedQueueSize());
- Assert.assertEquals(0, repQueue.overReplicatedQueueSize());
- Assert.assertEquals(0, report.getStat(
+ assertFalse(healthCheck.handle(request));
+ assertEquals(0, repQueue.underReplicatedQueueSize());
+ assertEquals(0, repQueue.overReplicatedQueueSize());
+ assertEquals(0, report.getStat(
ReplicationManagerReport.HealthState.OVER_REPLICATED));
}
@@ -527,18 +529,18 @@ public class TestECReplicationCheckHandler {
.setContainerInfo(container)
.build();
ContainerHealthResult result = healthCheck.checkHealth(request);
- Assert.assertEquals(HealthState.UNDER_REPLICATED, result.getHealthState());
- Assert.assertEquals(1,
+ assertEquals(HealthState.UNDER_REPLICATED, result.getHealthState());
+ assertEquals(1,
((UnderReplicatedHealthResult)result).getRemainingRedundancy());
// Under-replicated takes precedence and the over-replication is ignored
// for now.
- Assert.assertTrue(healthCheck.handle(request));
- Assert.assertEquals(1, repQueue.underReplicatedQueueSize());
- Assert.assertEquals(0, repQueue.overReplicatedQueueSize());
- Assert.assertEquals(1, report.getStat(
+ assertTrue(healthCheck.handle(request));
+ assertEquals(1, repQueue.underReplicatedQueueSize());
+ assertEquals(0, repQueue.overReplicatedQueueSize());
+ assertEquals(1, report.getStat(
ReplicationManagerReport.HealthState.UNDER_REPLICATED));
- Assert.assertEquals(0, report.getStat(
+ assertEquals(0, report.getStat(
ReplicationManagerReport.HealthState.OVER_REPLICATED));
}
@@ -563,16 +565,16 @@ public class TestECReplicationCheckHandler {
.build();
ContainerHealthResult result = healthCheck.checkHealth(request);
- Assert.assertEquals(HealthState.MIS_REPLICATED, result.getHealthState());
+ assertEquals(HealthState.MIS_REPLICATED, result.getHealthState());
- Assert.assertTrue(healthCheck.handle(request));
- Assert.assertEquals(1, repQueue.underReplicatedQueueSize());
- Assert.assertEquals(0, repQueue.overReplicatedQueueSize());
- Assert.assertEquals(0, report.getStat(
+ assertTrue(healthCheck.handle(request));
+ assertEquals(1, repQueue.underReplicatedQueueSize());
+ assertEquals(0, repQueue.overReplicatedQueueSize());
+ assertEquals(0, report.getStat(
ReplicationManagerReport.HealthState.UNDER_REPLICATED));
- Assert.assertEquals(0, report.getStat(
+ assertEquals(0, report.getStat(
ReplicationManagerReport.HealthState.OVER_REPLICATED));
- Assert.assertEquals(1, report.getStat(
+ assertEquals(1, report.getStat(
ReplicationManagerReport.HealthState.MIS_REPLICATED));
}
@@ -608,18 +610,18 @@ public class TestECReplicationCheckHandler {
.build();
ContainerHealthResult result = healthCheck.checkHealth(request);
- Assert.assertEquals(HealthState.MIS_REPLICATED, result.getHealthState());
+ assertEquals(HealthState.MIS_REPLICATED, result.getHealthState());
// Under-replicated takes precedence and the over-replication is ignored
// for now.
- Assert.assertTrue(healthCheck.handle(request));
- Assert.assertEquals(0, repQueue.underReplicatedQueueSize());
- Assert.assertEquals(0, repQueue.overReplicatedQueueSize());
- Assert.assertEquals(0, report.getStat(
+ assertTrue(healthCheck.handle(request));
+ assertEquals(0, repQueue.underReplicatedQueueSize());
+ assertEquals(0, repQueue.overReplicatedQueueSize());
+ assertEquals(0, report.getStat(
ReplicationManagerReport.HealthState.UNDER_REPLICATED));
- Assert.assertEquals(0, report.getStat(
+ assertEquals(0, report.getStat(
ReplicationManagerReport.HealthState.OVER_REPLICATED));
- Assert.assertEquals(1, report.getStat(
+ assertEquals(1, report.getStat(
ReplicationManagerReport.HealthState.MIS_REPLICATED));
}
@@ -643,18 +645,18 @@ public class TestECReplicationCheckHandler {
.build();
ContainerHealthResult result = healthCheck.checkHealth(request);
- Assert.assertEquals(HealthState.UNDER_REPLICATED, result.getHealthState());
+ assertEquals(HealthState.UNDER_REPLICATED, result.getHealthState());
// Under-replicated takes precedence and the over-replication is ignored
// for now.
- Assert.assertTrue(healthCheck.handle(request));
- Assert.assertEquals(1, repQueue.underReplicatedQueueSize());
- Assert.assertEquals(0, repQueue.overReplicatedQueueSize());
- Assert.assertEquals(1, report.getStat(
+ assertTrue(healthCheck.handle(request));
+ assertEquals(1, repQueue.underReplicatedQueueSize());
+ assertEquals(0, repQueue.overReplicatedQueueSize());
+ assertEquals(1, report.getStat(
ReplicationManagerReport.HealthState.UNDER_REPLICATED));
- Assert.assertEquals(0, report.getStat(
+ assertEquals(0, report.getStat(
ReplicationManagerReport.HealthState.OVER_REPLICATED));
- Assert.assertEquals(0, report.getStat(
+ assertEquals(0, report.getStat(
ReplicationManagerReport.HealthState.MIS_REPLICATED));
}
@@ -679,18 +681,18 @@ public class TestECReplicationCheckHandler {
.build();
ContainerHealthResult result = healthCheck.checkHealth(request);
- Assert.assertEquals(HealthState.OVER_REPLICATED, result.getHealthState());
+ assertEquals(HealthState.OVER_REPLICATED, result.getHealthState());
// Under-replicated takes precedence and the over-replication is ignored
// for now.
- Assert.assertTrue(healthCheck.handle(request));
- Assert.assertEquals(0, repQueue.underReplicatedQueueSize());
- Assert.assertEquals(1, repQueue.overReplicatedQueueSize());
- Assert.assertEquals(0, report.getStat(
+ assertTrue(healthCheck.handle(request));
+ assertEquals(0, repQueue.underReplicatedQueueSize());
+ assertEquals(1, repQueue.overReplicatedQueueSize());
+ assertEquals(0, report.getStat(
ReplicationManagerReport.HealthState.UNDER_REPLICATED));
- Assert.assertEquals(1, report.getStat(
+ assertEquals(1, report.getStat(
ReplicationManagerReport.HealthState.OVER_REPLICATED));
- Assert.assertEquals(0, report.getStat(
+ assertEquals(0, report.getStat(
ReplicationManagerReport.HealthState.MIS_REPLICATED));
}
@@ -718,14 +720,14 @@ public class TestECReplicationCheckHandler {
.setPendingOps(pendingOps)
.build();
ContainerHealthResult result = healthCheck.checkHealth(request);
- Assert.assertEquals(HealthState.HEALTHY, result.getHealthState());
+ assertEquals(HealthState.HEALTHY, result.getHealthState());
- Assert.assertFalse(healthCheck.handle(request));
- Assert.assertEquals(0, repQueue.underReplicatedQueueSize());
- Assert.assertEquals(0, repQueue.overReplicatedQueueSize());
- Assert.assertEquals(0, report.getStat(
+ assertFalse(healthCheck.handle(request));
+ assertEquals(0, repQueue.underReplicatedQueueSize());
+ assertEquals(0, repQueue.overReplicatedQueueSize());
+ assertEquals(0, report.getStat(
ReplicationManagerReport.HealthState.UNDER_REPLICATED));
- Assert.assertEquals(0, report.getStat(
+ assertEquals(0, report.getStat(
ReplicationManagerReport.HealthState.OVER_REPLICATED));
}
diff --git
a/hadoop-hdds/server-scm/src/test/java/org/apache/hadoop/hdds/scm/container/replication/health/TestRatisReplicationCheckHandler.java
b/hadoop-hdds/server-scm/src/test/java/org/apache/hadoop/hdds/scm/container/replication/health/TestRatisReplicationCheckHandler.java
index e0605469a3..a960e6549c 100644
---
a/hadoop-hdds/server-scm/src/test/java/org/apache/hadoop/hdds/scm/container/replication/health/TestRatisReplicationCheckHandler.java
+++
b/hadoop-hdds/server-scm/src/test/java/org/apache/hadoop/hdds/scm/container/replication/health/TestRatisReplicationCheckHandler.java
@@ -37,9 +37,10 @@ import
org.apache.hadoop.hdds.scm.container.replication.ContainerHealthResult.Ov
import
org.apache.hadoop.hdds.scm.container.replication.ContainerHealthResult.UnderReplicatedHealthResult;
import org.apache.hadoop.hdds.scm.container.replication.ContainerReplicaOp;
import org.apache.hadoop.hdds.scm.container.replication.ReplicationQueue;
-import org.junit.Assert;
-import org.junit.Before;
-import org.junit.Test;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Test;
+import org.junit.jupiter.params.ParameterizedTest;
+import org.junit.jupiter.params.provider.MethodSource;
import org.mockito.Mockito;
import java.io.IOException;
@@ -58,6 +59,9 @@ import static
org.apache.hadoop.hdds.scm.container.replication.ContainerReplicaO
import static
org.apache.hadoop.hdds.scm.container.replication.ReplicationTestUtil.createContainerInfo;
import static
org.apache.hadoop.hdds.scm.container.replication.ReplicationTestUtil.createContainerReplica;
import static
org.apache.hadoop.hdds.scm.container.replication.ReplicationTestUtil.createReplicas;
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertFalse;
+import static org.junit.jupiter.api.Assertions.assertTrue;
/**
* Tests for the RatisReplicationCheckHandler class.
@@ -72,7 +76,7 @@ public class TestRatisReplicationCheckHandler {
private ReplicationManagerReport report;
private int maintenanceRedundancy = 2;
- @Before
+ @BeforeEach
public void setup() throws IOException {
containerPlacementPolicy = Mockito.mock(PlacementPolicy.class);
Mockito.when(containerPlacementPolicy.validateContainerPlacement(
@@ -100,9 +104,9 @@ public class TestRatisReplicationCheckHandler {
requestBuilder.setContainerReplicas(replicas)
.setContainerInfo(container);
- Assert.assertFalse(healthCheck.handle(requestBuilder.build()));
- Assert.assertEquals(0, repQueue.underReplicatedQueueSize());
- Assert.assertEquals(0, repQueue.overReplicatedQueueSize());
+ assertFalse(healthCheck.handle(requestBuilder.build()));
+ assertEquals(0, repQueue.underReplicatedQueueSize());
+ assertEquals(0, repQueue.overReplicatedQueueSize());
}
@Test
@@ -114,11 +118,11 @@ public class TestRatisReplicationCheckHandler {
.setContainerInfo(container);
ContainerHealthResult result =
healthCheck.checkHealth(requestBuilder.build());
- Assert.assertEquals(HealthState.HEALTHY, result.getHealthState());
+ assertEquals(HealthState.HEALTHY, result.getHealthState());
- Assert.assertFalse(healthCheck.handle(requestBuilder.build()));
- Assert.assertEquals(0, repQueue.underReplicatedQueueSize());
- Assert.assertEquals(0, repQueue.overReplicatedQueueSize());
+ assertFalse(healthCheck.handle(requestBuilder.build()));
+ assertEquals(0, repQueue.underReplicatedQueueSize());
+ assertEquals(0, repQueue.overReplicatedQueueSize());
}
@Test
@@ -130,15 +134,15 @@ public class TestRatisReplicationCheckHandler {
.setContainerInfo(container);
UnderReplicatedHealthResult result = (UnderReplicatedHealthResult)
healthCheck.checkHealth(requestBuilder.build());
- Assert.assertEquals(HealthState.UNDER_REPLICATED, result.getHealthState());
- Assert.assertEquals(1, result.getRemainingRedundancy());
- Assert.assertFalse(result.isReplicatedOkAfterPending());
- Assert.assertFalse(result.underReplicatedDueToDecommission());
-
- Assert.assertTrue(healthCheck.handle(requestBuilder.build()));
- Assert.assertEquals(1, repQueue.underReplicatedQueueSize());
- Assert.assertEquals(0, repQueue.overReplicatedQueueSize());
- Assert.assertEquals(1, report.getStat(
+ assertEquals(HealthState.UNDER_REPLICATED, result.getHealthState());
+ assertEquals(1, result.getRemainingRedundancy());
+ assertFalse(result.isReplicatedOkAfterPending());
+ assertFalse(result.underReplicatedDueToOutOfService());
+
+ assertTrue(healthCheck.handle(requestBuilder.build()));
+ assertEquals(1, repQueue.underReplicatedQueueSize());
+ assertEquals(0, repQueue.overReplicatedQueueSize());
+ assertEquals(1, report.getStat(
ReplicationManagerReport.HealthState.UNDER_REPLICATED));
}
@@ -155,15 +159,15 @@ public class TestRatisReplicationCheckHandler {
.setPendingOps(pending);
UnderReplicatedHealthResult result = (UnderReplicatedHealthResult)
healthCheck.checkHealth(requestBuilder.build());
- Assert.assertEquals(HealthState.UNDER_REPLICATED, result.getHealthState());
- Assert.assertEquals(1, result.getRemainingRedundancy());
- Assert.assertFalse(result.isReplicatedOkAfterPending());
- Assert.assertFalse(result.underReplicatedDueToDecommission());
-
- Assert.assertTrue(healthCheck.handle(requestBuilder.build()));
- Assert.assertEquals(1, repQueue.underReplicatedQueueSize());
- Assert.assertEquals(0, repQueue.overReplicatedQueueSize());
- Assert.assertEquals(1, report.getStat(
+ assertEquals(HealthState.UNDER_REPLICATED, result.getHealthState());
+ assertEquals(1, result.getRemainingRedundancy());
+ assertFalse(result.isReplicatedOkAfterPending());
+ assertFalse(result.underReplicatedDueToOutOfService());
+
+ assertTrue(healthCheck.handle(requestBuilder.build()));
+ assertEquals(1, repQueue.underReplicatedQueueSize());
+ assertEquals(0, repQueue.overReplicatedQueueSize());
+ assertEquals(1, report.getStat(
ReplicationManagerReport.HealthState.UNDER_REPLICATED));
}
@@ -180,22 +184,22 @@ public class TestRatisReplicationCheckHandler {
.setContainerInfo(container);
UnderReplicatedHealthResult result = (UnderReplicatedHealthResult)
healthCheck.checkHealth(requestBuilder.build());
- Assert.assertEquals(HealthState.UNDER_REPLICATED, result.getHealthState());
- Assert.assertEquals(1, result.getRemainingRedundancy());
- Assert.assertTrue(result.isReplicatedOkAfterPending());
- Assert.assertFalse(result.underReplicatedDueToDecommission());
+ assertEquals(HealthState.UNDER_REPLICATED, result.getHealthState());
+ assertEquals(1, result.getRemainingRedundancy());
+ assertTrue(result.isReplicatedOkAfterPending());
+ assertFalse(result.underReplicatedDueToOutOfService());
- Assert.assertTrue(healthCheck.handle(requestBuilder.build()));
+ assertTrue(healthCheck.handle(requestBuilder.build()));
// Fixed with pending, so nothing added to the queue
- Assert.assertEquals(0, repQueue.underReplicatedQueueSize());
- Assert.assertEquals(0, repQueue.overReplicatedQueueSize());
+ assertEquals(0, repQueue.underReplicatedQueueSize());
+ assertEquals(0, repQueue.overReplicatedQueueSize());
// Still under replicated until the pending complete
- Assert.assertEquals(1, report.getStat(
+ assertEquals(1, report.getStat(
ReplicationManagerReport.HealthState.UNDER_REPLICATED));
}
@Test
- public void testUnderReplicatedDueToDecommission() {
+ public void testUnderReplicatedDueToOutOfService() {
ContainerInfo container = createContainerInfo(repConfig);
Set<ContainerReplica> replicas = createReplicas(container.containerID(),
Pair.of(IN_SERVICE, 0), Pair.of(DECOMMISSIONING, 0),
@@ -205,26 +209,27 @@ public class TestRatisReplicationCheckHandler {
.setContainerInfo(container);
UnderReplicatedHealthResult result = (UnderReplicatedHealthResult)
healthCheck.checkHealth(requestBuilder.build());
- Assert.assertEquals(HealthState.UNDER_REPLICATED, result.getHealthState());
- Assert.assertEquals(2, result.getRemainingRedundancy());
- Assert.assertFalse(result.isReplicatedOkAfterPending());
- Assert.assertTrue(result.underReplicatedDueToDecommission());
-
- Assert.assertTrue(healthCheck.handle(requestBuilder.build()));
- Assert.assertEquals(1, repQueue.underReplicatedQueueSize());
- Assert.assertEquals(0, repQueue.overReplicatedQueueSize());
- Assert.assertEquals(1, report.getStat(
+ assertEquals(HealthState.UNDER_REPLICATED, result.getHealthState());
+ assertEquals(2, result.getRemainingRedundancy());
+ assertFalse(result.isReplicatedOkAfterPending());
+ assertTrue(result.underReplicatedDueToOutOfService());
+
+ assertTrue(healthCheck.handle(requestBuilder.build()));
+ assertEquals(1, repQueue.underReplicatedQueueSize());
+ assertEquals(0, repQueue.overReplicatedQueueSize());
+ assertEquals(1, report.getStat(
ReplicationManagerReport.HealthState.UNDER_REPLICATED));
}
- @Test
- public void testUnderReplicatedDueToAllDecommissioning() {
- Pair<HddsProtos.NodeOperationalState, Integer> state =
- Pair.of(DECOMMISSIONING, 0);
+ @ParameterizedTest
+
@MethodSource("org.apache.hadoop.hdds.scm.node.NodeStatus#outOfServiceStates")
+ void testUnderReplicatedDueToAllOutOfService(
+ HddsProtos.NodeOperationalState state) {
+ Pair<HddsProtos.NodeOperationalState, Integer> pair = Pair.of(state, 0);
ContainerInfo container = createContainerInfo(repConfig);
Set<ContainerReplica> replicas = createReplicas(container.containerID(),
- state, state, state);
+ pair, pair, pair);
ContainerCheckRequest checkRequest = requestBuilder
.setContainerReplicas(replicas)
@@ -232,26 +237,24 @@ public class TestRatisReplicationCheckHandler {
.build();
ContainerHealthResult healthResult = healthCheck.checkHealth(checkRequest);
- Assert.assertEquals(HealthState.UNDER_REPLICATED,
- healthResult.getHealthState());
- Assert.assertEquals(UnderReplicatedHealthResult.class,
- healthResult.getClass());
+ assertEquals(HealthState.UNDER_REPLICATED, healthResult.getHealthState());
+ assertEquals(UnderReplicatedHealthResult.class, healthResult.getClass());
UnderReplicatedHealthResult result = (UnderReplicatedHealthResult)
healthResult;
- Assert.assertEquals(2, result.getRemainingRedundancy());
- Assert.assertFalse(result.isReplicatedOkAfterPending());
- Assert.assertTrue(result.underReplicatedDueToDecommission());
+ assertEquals(2, result.getRemainingRedundancy());
+ assertFalse(result.isReplicatedOkAfterPending());
+ assertTrue(result.underReplicatedDueToOutOfService());
- Assert.assertTrue(healthCheck.handle(checkRequest));
- Assert.assertEquals(1, repQueue.underReplicatedQueueSize());
- Assert.assertEquals(0, repQueue.overReplicatedQueueSize());
- Assert.assertEquals(1, report.getStat(
+ assertTrue(healthCheck.handle(checkRequest));
+ assertEquals(1, repQueue.underReplicatedQueueSize());
+ assertEquals(0, repQueue.overReplicatedQueueSize());
+ assertEquals(1, report.getStat(
ReplicationManagerReport.HealthState.UNDER_REPLICATED));
}
@Test
- public void testUnderReplicatedDueToDecommissionFixedWithPending() {
+ public void testUnderReplicatedDueToOutOfServiceFixedWithPending() {
ContainerInfo container = createContainerInfo(repConfig);
Set<ContainerReplica> replicas = createReplicas(container.containerID(),
Pair.of(IN_SERVICE, 0), Pair.of(IN_SERVICE, 0),
@@ -265,22 +268,22 @@ public class TestRatisReplicationCheckHandler {
.setContainerInfo(container);
UnderReplicatedHealthResult result = (UnderReplicatedHealthResult)
healthCheck.checkHealth(requestBuilder.build());
- Assert.assertEquals(HealthState.UNDER_REPLICATED, result.getHealthState());
- Assert.assertEquals(2, result.getRemainingRedundancy());
- Assert.assertTrue(result.isReplicatedOkAfterPending());
- Assert.assertTrue(result.underReplicatedDueToDecommission());
+ assertEquals(HealthState.UNDER_REPLICATED, result.getHealthState());
+ assertEquals(2, result.getRemainingRedundancy());
+ assertTrue(result.isReplicatedOkAfterPending());
+ assertTrue(result.underReplicatedDueToOutOfService());
- Assert.assertTrue(healthCheck.handle(requestBuilder.build()));
+ assertTrue(healthCheck.handle(requestBuilder.build()));
// Nothing queued as inflight replicas will fix it.
- Assert.assertEquals(0, repQueue.underReplicatedQueueSize());
- Assert.assertEquals(0, repQueue.overReplicatedQueueSize());
+ assertEquals(0, repQueue.underReplicatedQueueSize());
+ assertEquals(0, repQueue.overReplicatedQueueSize());
// Still under replicated in the report until pending complete
- Assert.assertEquals(1, report.getStat(
+ assertEquals(1, report.getStat(
ReplicationManagerReport.HealthState.UNDER_REPLICATED));
}
@Test
- public void testUnderReplicatedDueToDecommissionAndMissing() {
+ public void testUnderReplicatedDueToOutOfServiceAndMissing() {
ContainerInfo container = createContainerInfo(repConfig);
Set<ContainerReplica> replicas = createReplicas(container.containerID(),
Pair.of(IN_SERVICE, 0), Pair.of(DECOMMISSIONED, 0));
@@ -293,40 +296,39 @@ public class TestRatisReplicationCheckHandler {
.setContainerInfo(container);
UnderReplicatedHealthResult result = (UnderReplicatedHealthResult)
healthCheck.checkHealth(requestBuilder.build());
- Assert.assertEquals(HealthState.UNDER_REPLICATED, result.getHealthState());
- Assert.assertEquals(1, result.getRemainingRedundancy());
- Assert.assertFalse(result.isReplicatedOkAfterPending());
- Assert.assertFalse(result.underReplicatedDueToDecommission());
-
- Assert.assertTrue(healthCheck.handle(requestBuilder.build()));
- Assert.assertEquals(1, repQueue.underReplicatedQueueSize());
- Assert.assertEquals(0, repQueue.overReplicatedQueueSize());
- Assert.assertEquals(1, report.getStat(
+ assertEquals(HealthState.UNDER_REPLICATED, result.getHealthState());
+ assertEquals(1, result.getRemainingRedundancy());
+ assertFalse(result.isReplicatedOkAfterPending());
+ assertFalse(result.underReplicatedDueToOutOfService());
+
+ assertTrue(healthCheck.handle(requestBuilder.build()));
+ assertEquals(1, repQueue.underReplicatedQueueSize());
+ assertEquals(0, repQueue.overReplicatedQueueSize());
+ assertEquals(1, report.getStat(
ReplicationManagerReport.HealthState.UNDER_REPLICATED));
}
@Test
public void testUnderReplicatedAndUnrecoverable() {
ContainerInfo container = createContainerInfo(repConfig);
- Set<ContainerReplica> replicas = Collections.EMPTY_SET;
- requestBuilder.setContainerReplicas(replicas)
+ requestBuilder.setContainerReplicas(Collections.emptySet())
.setContainerInfo(container);
UnderReplicatedHealthResult result = (UnderReplicatedHealthResult)
healthCheck.checkHealth(requestBuilder.build());
- Assert.assertEquals(HealthState.UNDER_REPLICATED, result.getHealthState());
- Assert.assertEquals(0, result.getRemainingRedundancy());
- Assert.assertFalse(result.isReplicatedOkAfterPending());
- Assert.assertFalse(result.underReplicatedDueToDecommission());
- Assert.assertTrue(result.isUnrecoverable());
+ assertEquals(HealthState.UNDER_REPLICATED, result.getHealthState());
+ assertEquals(0, result.getRemainingRedundancy());
+ assertFalse(result.isReplicatedOkAfterPending());
+ assertFalse(result.underReplicatedDueToOutOfService());
+ assertTrue(result.isUnrecoverable());
- Assert.assertTrue(healthCheck.handle(requestBuilder.build()));
+ assertTrue(healthCheck.handle(requestBuilder.build()));
// Unrecoverable, so not added to the queue.
- Assert.assertEquals(0, repQueue.underReplicatedQueueSize());
- Assert.assertEquals(0, repQueue.overReplicatedQueueSize());
- Assert.assertEquals(0, report.getStat(
+ assertEquals(0, repQueue.underReplicatedQueueSize());
+ assertEquals(0, repQueue.overReplicatedQueueSize());
+ assertEquals(0, report.getStat(
ReplicationManagerReport.HealthState.UNDER_REPLICATED));
- Assert.assertEquals(1, report.getStat(
+ assertEquals(1, report.getStat(
ReplicationManagerReport.HealthState.MISSING));
}
@@ -348,15 +350,15 @@ public class TestRatisReplicationCheckHandler {
UnderReplicatedHealthResult result = (UnderReplicatedHealthResult)
healthCheck.checkHealth(requestBuilder.build());
- Assert.assertEquals(HealthState.UNDER_REPLICATED, result.getHealthState());
- Assert.assertEquals(1, result.getRemainingRedundancy());
- Assert.assertFalse(result.isReplicatedOkAfterPending());
- Assert.assertFalse(result.underReplicatedDueToDecommission());
+ assertEquals(HealthState.UNDER_REPLICATED, result.getHealthState());
+ assertEquals(1, result.getRemainingRedundancy());
+ assertFalse(result.isReplicatedOkAfterPending());
+ assertFalse(result.underReplicatedDueToOutOfService());
- Assert.assertTrue(healthCheck.handle(requestBuilder.build()));
- Assert.assertEquals(1, repQueue.underReplicatedQueueSize());
- Assert.assertEquals(0, repQueue.overReplicatedQueueSize());
- Assert.assertEquals(1, report.getStat(
+ assertTrue(healthCheck.handle(requestBuilder.build()));
+ assertEquals(1, repQueue.underReplicatedQueueSize());
+ assertEquals(0, repQueue.overReplicatedQueueSize());
+ assertEquals(1, report.getStat(
ReplicationManagerReport.HealthState.UNDER_REPLICATED));
}
@@ -370,11 +372,11 @@ public class TestRatisReplicationCheckHandler {
.setContainerInfo(container);
ContainerHealthResult result =
healthCheck.checkHealth(requestBuilder.build());
- Assert.assertEquals(HealthState.HEALTHY, result.getHealthState());
+ assertEquals(HealthState.HEALTHY, result.getHealthState());
- Assert.assertFalse(healthCheck.handle(requestBuilder.build()));
- Assert.assertEquals(0, repQueue.underReplicatedQueueSize());
- Assert.assertEquals(0, repQueue.overReplicatedQueueSize());
+ assertFalse(healthCheck.handle(requestBuilder.build()));
+ assertEquals(0, repQueue.underReplicatedQueueSize());
+ assertEquals(0, repQueue.overReplicatedQueueSize());
}
@Test
@@ -392,15 +394,15 @@ public class TestRatisReplicationCheckHandler {
healthy replicas. This handler cannot make a decision about
replication/deleting replicas when all of them are unhealthy.
*/
- Assert.assertEquals(HealthState.UNDER_REPLICATED, result.getHealthState());
- Assert.assertEquals(0, result.getRemainingRedundancy());
- Assert.assertFalse(result.isReplicatedOkAfterPending());
- Assert.assertFalse(result.underReplicatedDueToDecommission());
-
- Assert.assertFalse(healthCheck.handle(requestBuilder.build()));
- Assert.assertEquals(0, repQueue.underReplicatedQueueSize());
- Assert.assertEquals(0, repQueue.overReplicatedQueueSize());
- Assert.assertEquals(0, report.getStat(
+ assertEquals(HealthState.UNDER_REPLICATED, result.getHealthState());
+ assertEquals(0, result.getRemainingRedundancy());
+ assertFalse(result.isReplicatedOkAfterPending());
+ assertFalse(result.underReplicatedDueToOutOfService());
+
+ assertFalse(healthCheck.handle(requestBuilder.build()));
+ assertEquals(0, repQueue.underReplicatedQueueSize());
+ assertEquals(0, repQueue.overReplicatedQueueSize());
+ assertEquals(0, report.getStat(
ReplicationManagerReport.HealthState.UNDER_REPLICATED));
/*
@@ -414,15 +416,15 @@ public class TestRatisReplicationCheckHandler {
result = (UnderReplicatedHealthResult) healthCheck.checkHealth(
requestBuilder.build());
- Assert.assertEquals(HealthState.UNDER_REPLICATED, result.getHealthState());
- Assert.assertEquals(0, result.getRemainingRedundancy());
- Assert.assertFalse(result.isReplicatedOkAfterPending());
- Assert.assertFalse(result.underReplicatedDueToDecommission());
+ assertEquals(HealthState.UNDER_REPLICATED, result.getHealthState());
+ assertEquals(0, result.getRemainingRedundancy());
+ assertFalse(result.isReplicatedOkAfterPending());
+ assertFalse(result.underReplicatedDueToOutOfService());
- Assert.assertFalse(healthCheck.handle(requestBuilder.build()));
- Assert.assertEquals(0, repQueue.underReplicatedQueueSize());
- Assert.assertEquals(0, repQueue.overReplicatedQueueSize());
- Assert.assertEquals(0, report.getStat(
+ assertFalse(healthCheck.handle(requestBuilder.build()));
+ assertEquals(0, repQueue.underReplicatedQueueSize());
+ assertEquals(0, repQueue.overReplicatedQueueSize());
+ assertEquals(0, report.getStat(
ReplicationManagerReport.HealthState.UNDER_REPLICATED));
}
@@ -446,14 +448,14 @@ public class TestRatisReplicationCheckHandler {
.setContainerInfo(container);
OverReplicatedHealthResult result = (OverReplicatedHealthResult)
healthCheck.checkHealth(requestBuilder.build());
- Assert.assertEquals(HealthState.OVER_REPLICATED, result.getHealthState());
- Assert.assertEquals(4, result.getExcessRedundancy());
- Assert.assertFalse(result.isReplicatedOkAfterPending());
-
- Assert.assertTrue(healthCheck.handle(requestBuilder.build()));
- Assert.assertEquals(0, repQueue.underReplicatedQueueSize());
- Assert.assertEquals(1, repQueue.overReplicatedQueueSize());
- Assert.assertEquals(1, report.getStat(
+ assertEquals(HealthState.OVER_REPLICATED, result.getHealthState());
+ assertEquals(4, result.getExcessRedundancy());
+ assertFalse(result.isReplicatedOkAfterPending());
+
+ assertTrue(healthCheck.handle(requestBuilder.build()));
+ assertEquals(0, repQueue.underReplicatedQueueSize());
+ assertEquals(1, repQueue.overReplicatedQueueSize());
+ assertEquals(1, report.getStat(
ReplicationManagerReport.HealthState.OVER_REPLICATED));
}
@@ -470,19 +472,19 @@ public class TestRatisReplicationCheckHandler {
OverReplicatedHealthResult result = (OverReplicatedHealthResult)
healthCheck.checkHealth(requestBuilder.build());
- Assert.assertEquals(HealthState.OVER_REPLICATED, result.getHealthState());
- Assert.assertEquals(1, result.getExcessRedundancy());
- Assert.assertFalse(result.isReplicatedOkAfterPending());
+ assertEquals(HealthState.OVER_REPLICATED, result.getHealthState());
+ assertEquals(1, result.getExcessRedundancy());
+ assertFalse(result.isReplicatedOkAfterPending());
- Assert.assertTrue(healthCheck.handle(requestBuilder.build()));
- Assert.assertEquals(0, repQueue.underReplicatedQueueSize());
+ assertTrue(healthCheck.handle(requestBuilder.build()));
+ assertEquals(0, repQueue.underReplicatedQueueSize());
/*
We have an excess replica, but we hold off on adding to the over
replication queue until all the mismatched replicas match the container
state.
*/
- Assert.assertEquals(0, repQueue.overReplicatedQueueSize());
- Assert.assertEquals(1, report.getStat(
+ assertEquals(0, repQueue.overReplicatedQueueSize());
+ assertEquals(1, report.getStat(
ReplicationManagerReport.HealthState.OVER_REPLICATED));
}
@@ -512,21 +514,21 @@ public class TestRatisReplicationCheckHandler {
healthCheck.checkHealth(requestBuilder.build());
// there's an excess of 3 UNHEALTHY replicas, so it's over replicated
- Assert.assertEquals(HealthState.OVER_REPLICATED, result.getHealthState());
+ assertEquals(HealthState.OVER_REPLICATED, result.getHealthState());
OverReplicatedHealthResult overRepResult =
(OverReplicatedHealthResult) result;
- Assert.assertEquals(3, overRepResult.getExcessRedundancy());
- Assert.assertTrue(overRepResult.hasMismatchedReplicas());
- Assert.assertFalse(overRepResult.isReplicatedOkAfterPending());
+ assertEquals(3, overRepResult.getExcessRedundancy());
+ assertTrue(overRepResult.hasMismatchedReplicas());
+ assertFalse(overRepResult.isReplicatedOkAfterPending());
- Assert.assertTrue(healthCheck.handle(requestBuilder.build()));
- Assert.assertEquals(0, repQueue.underReplicatedQueueSize());
+ assertTrue(healthCheck.handle(requestBuilder.build()));
+ assertEquals(0, repQueue.underReplicatedQueueSize());
// it should not be queued for over replication because there's a mis
// matched replica
- Assert.assertEquals(0, repQueue.overReplicatedQueueSize());
- Assert.assertEquals(1, report.getStat(
+ assertEquals(0, repQueue.overReplicatedQueueSize());
+ assertEquals(1, report.getStat(
ReplicationManagerReport.HealthState.OVER_REPLICATED));
- Assert.assertEquals(0, report.getStat(
+ assertEquals(0, report.getStat(
ReplicationManagerReport.HealthState.UNDER_REPLICATED));
}
@@ -550,19 +552,19 @@ public class TestRatisReplicationCheckHandler {
healthCheck.checkHealth(requestBuilder.build());
// there's an excess of 3 UNHEALTHY replicas, so it's over replicated
- Assert.assertEquals(HealthState.OVER_REPLICATED, result.getHealthState());
+ assertEquals(HealthState.OVER_REPLICATED, result.getHealthState());
OverReplicatedHealthResult overRepResult =
(OverReplicatedHealthResult) result;
- Assert.assertEquals(3, overRepResult.getExcessRedundancy());
- Assert.assertFalse(overRepResult.hasMismatchedReplicas());
- Assert.assertFalse(overRepResult.isReplicatedOkAfterPending());
-
- Assert.assertTrue(healthCheck.handle(requestBuilder.build()));
- Assert.assertEquals(0, repQueue.underReplicatedQueueSize());
- Assert.assertEquals(1, repQueue.overReplicatedQueueSize());
- Assert.assertEquals(1, report.getStat(
+ assertEquals(3, overRepResult.getExcessRedundancy());
+ assertFalse(overRepResult.hasMismatchedReplicas());
+ assertFalse(overRepResult.isReplicatedOkAfterPending());
+
+ assertTrue(healthCheck.handle(requestBuilder.build()));
+ assertEquals(0, repQueue.underReplicatedQueueSize());
+ assertEquals(1, repQueue.overReplicatedQueueSize());
+ assertEquals(1, report.getStat(
ReplicationManagerReport.HealthState.OVER_REPLICATED));
- Assert.assertEquals(0, report.getStat(
+ assertEquals(0, report.getStat(
ReplicationManagerReport.HealthState.UNDER_REPLICATED));
}
@@ -583,16 +585,16 @@ public class TestRatisReplicationCheckHandler {
.setContainerInfo(container);
OverReplicatedHealthResult result = (OverReplicatedHealthResult)
healthCheck.checkHealth(requestBuilder.build());
- Assert.assertEquals(HealthState.OVER_REPLICATED, result.getHealthState());
- Assert.assertEquals(1, result.getExcessRedundancy());
- Assert.assertTrue(result.isReplicatedOkAfterPending());
+ assertEquals(HealthState.OVER_REPLICATED, result.getHealthState());
+ assertEquals(1, result.getExcessRedundancy());
+ assertTrue(result.isReplicatedOkAfterPending());
- Assert.assertTrue(healthCheck.handle(requestBuilder.build()));
- Assert.assertEquals(0, repQueue.underReplicatedQueueSize());
+ assertTrue(healthCheck.handle(requestBuilder.build()));
+ assertEquals(0, repQueue.underReplicatedQueueSize());
// Fixed by pending so nothing queued.
- Assert.assertEquals(0, repQueue.overReplicatedQueueSize());
+ assertEquals(0, repQueue.overReplicatedQueueSize());
// Still over replicated, so the report should contain it
- Assert.assertEquals(1, report.getStat(
+ assertEquals(1, report.getStat(
ReplicationManagerReport.HealthState.OVER_REPLICATED));
}
@@ -608,14 +610,14 @@ public class TestRatisReplicationCheckHandler {
.setContainerInfo(container);
OverReplicatedHealthResult result = (OverReplicatedHealthResult)
healthCheck.checkHealth(requestBuilder.build());
- Assert.assertEquals(HealthState.OVER_REPLICATED, result.getHealthState());
- Assert.assertEquals(1, result.getExcessRedundancy());
- Assert.assertFalse(result.isReplicatedOkAfterPending());
-
- Assert.assertTrue(healthCheck.handle(requestBuilder.build()));
- Assert.assertEquals(0, repQueue.underReplicatedQueueSize());
- Assert.assertEquals(1, repQueue.overReplicatedQueueSize());
- Assert.assertEquals(1, report.getStat(
+ assertEquals(HealthState.OVER_REPLICATED, result.getHealthState());
+ assertEquals(1, result.getExcessRedundancy());
+ assertFalse(result.isReplicatedOkAfterPending());
+
+ assertTrue(healthCheck.handle(requestBuilder.build()));
+ assertEquals(0, repQueue.underReplicatedQueueSize());
+ assertEquals(1, repQueue.overReplicatedQueueSize());
+ assertEquals(1, report.getStat(
ReplicationManagerReport.HealthState.OVER_REPLICATED));
}
@@ -631,14 +633,14 @@ public class TestRatisReplicationCheckHandler {
.setContainerInfo(container);
ContainerHealthResult result =
healthCheck.checkHealth(requestBuilder.build());
- Assert.assertEquals(HealthState.HEALTHY, result.getHealthState());
+ assertEquals(HealthState.HEALTHY, result.getHealthState());
- Assert.assertFalse(healthCheck.handle(requestBuilder.build()));
- Assert.assertEquals(0, repQueue.underReplicatedQueueSize());
- Assert.assertEquals(0, repQueue.overReplicatedQueueSize());
- Assert.assertEquals(0, report.getStat(
+ assertFalse(healthCheck.handle(requestBuilder.build()));
+ assertEquals(0, repQueue.underReplicatedQueueSize());
+ assertEquals(0, repQueue.overReplicatedQueueSize());
+ assertEquals(0, report.getStat(
ReplicationManagerReport.HealthState.OVER_REPLICATED));
- Assert.assertEquals(0, report.getStat(
+ assertEquals(0, report.getStat(
ReplicationManagerReport.HealthState.UNDER_REPLICATED));
}
@@ -666,21 +668,21 @@ public class TestRatisReplicationCheckHandler {
healthCheck.checkHealth(requestBuilder.build());
// there's an excess of 3 UNHEALTHY replicas, so it's over replicated
- Assert.assertEquals(HealthState.OVER_REPLICATED, result.getHealthState());
+ assertEquals(HealthState.OVER_REPLICATED, result.getHealthState());
OverReplicatedHealthResult overRepResult =
(OverReplicatedHealthResult) result;
- Assert.assertEquals(3, overRepResult.getExcessRedundancy());
- Assert.assertFalse(overRepResult.hasMismatchedReplicas());
- Assert.assertFalse(overRepResult.isReplicatedOkAfterPending());
-
- Assert.assertTrue(healthCheck.handle(requestBuilder.build()));
- Assert.assertEquals(0, repQueue.underReplicatedQueueSize());
- Assert.assertEquals(1, repQueue.overReplicatedQueueSize());
- Assert.assertEquals(1, report.getStat(
+ assertEquals(3, overRepResult.getExcessRedundancy());
+ assertFalse(overRepResult.hasMismatchedReplicas());
+ assertFalse(overRepResult.isReplicatedOkAfterPending());
+
+ assertTrue(healthCheck.handle(requestBuilder.build()));
+ assertEquals(0, repQueue.underReplicatedQueueSize());
+ assertEquals(1, repQueue.overReplicatedQueueSize());
+ assertEquals(1, report.getStat(
ReplicationManagerReport.HealthState.OVER_REPLICATED));
- Assert.assertEquals(0, report.getStat(
+ assertEquals(0, report.getStat(
ReplicationManagerReport.HealthState.UNDER_REPLICATED));
- Assert.assertEquals(0, report.getStat(
+ assertEquals(0, report.getStat(
ReplicationManagerReport.HealthState.MIS_REPLICATED));
}
@@ -699,17 +701,17 @@ public class TestRatisReplicationCheckHandler {
.setContainerInfo(container);
UnderReplicatedHealthResult result = (UnderReplicatedHealthResult)
healthCheck.checkHealth(requestBuilder.build());
- Assert.assertEquals(HealthState.UNDER_REPLICATED, result.getHealthState());
- Assert.assertEquals(1, result.getRemainingRedundancy());
- Assert.assertFalse(result.isReplicatedOkAfterPending());
- Assert.assertFalse(result.underReplicatedDueToDecommission());
-
- Assert.assertTrue(healthCheck.handle(requestBuilder.build()));
- Assert.assertEquals(1, repQueue.underReplicatedQueueSize());
- Assert.assertEquals(0, repQueue.overReplicatedQueueSize());
- Assert.assertEquals(1, report.getStat(
+ assertEquals(HealthState.UNDER_REPLICATED, result.getHealthState());
+ assertEquals(1, result.getRemainingRedundancy());
+ assertFalse(result.isReplicatedOkAfterPending());
+ assertFalse(result.underReplicatedDueToOutOfService());
+
+ assertTrue(healthCheck.handle(requestBuilder.build()));
+ assertEquals(1, repQueue.underReplicatedQueueSize());
+ assertEquals(0, repQueue.overReplicatedQueueSize());
+ assertEquals(1, report.getStat(
ReplicationManagerReport.HealthState.UNDER_REPLICATED));
- Assert.assertEquals(0, report.getStat(
+ assertEquals(0, report.getStat(
ReplicationManagerReport.HealthState.MIS_REPLICATED));
}
@@ -743,17 +745,17 @@ public class TestRatisReplicationCheckHandler {
.setPendingOps(pending);
UnderReplicatedHealthResult result = (UnderReplicatedHealthResult)
healthCheck.checkHealth(requestBuilder.build());
- Assert.assertEquals(HealthState.UNDER_REPLICATED, result.getHealthState());
- Assert.assertEquals(1, result.getRemainingRedundancy());
- Assert.assertTrue(result.isReplicatedOkAfterPending());
- Assert.assertFalse(result.underReplicatedDueToDecommission());
-
- Assert.assertTrue(healthCheck.handle(requestBuilder.build()));
- Assert.assertEquals(0, repQueue.underReplicatedQueueSize());
- Assert.assertEquals(0, repQueue.overReplicatedQueueSize());
- Assert.assertEquals(1, report.getStat(
+ assertEquals(HealthState.UNDER_REPLICATED, result.getHealthState());
+ assertEquals(1, result.getRemainingRedundancy());
+ assertTrue(result.isReplicatedOkAfterPending());
+ assertFalse(result.underReplicatedDueToOutOfService());
+
+ assertTrue(healthCheck.handle(requestBuilder.build()));
+ assertEquals(0, repQueue.underReplicatedQueueSize());
+ assertEquals(0, repQueue.overReplicatedQueueSize());
+ assertEquals(1, report.getStat(
ReplicationManagerReport.HealthState.UNDER_REPLICATED));
- Assert.assertEquals(0, report.getStat(
+ assertEquals(0, report.getStat(
ReplicationManagerReport.HealthState.MIS_REPLICATED));
}
@@ -772,15 +774,15 @@ public class TestRatisReplicationCheckHandler {
.setContainerInfo(container);
MisReplicatedHealthResult result = (MisReplicatedHealthResult)
healthCheck.checkHealth(requestBuilder.build());
- Assert.assertEquals(HealthState.MIS_REPLICATED, result.getHealthState());
- Assert.assertFalse(result.isReplicatedOkAfterPending());
+ assertEquals(HealthState.MIS_REPLICATED, result.getHealthState());
+ assertFalse(result.isReplicatedOkAfterPending());
- Assert.assertTrue(healthCheck.handle(requestBuilder.build()));
- Assert.assertEquals(1, repQueue.underReplicatedQueueSize());
- Assert.assertEquals(0, repQueue.overReplicatedQueueSize());
- Assert.assertEquals(0, report.getStat(
+ assertTrue(healthCheck.handle(requestBuilder.build()));
+ assertEquals(1, repQueue.underReplicatedQueueSize());
+ assertEquals(0, repQueue.overReplicatedQueueSize());
+ assertEquals(0, report.getStat(
ReplicationManagerReport.HealthState.UNDER_REPLICATED));
- Assert.assertEquals(1, report.getStat(
+ assertEquals(1, report.getStat(
ReplicationManagerReport.HealthState.MIS_REPLICATED));
}
@@ -814,15 +816,15 @@ public class TestRatisReplicationCheckHandler {
.setPendingOps(pending);
MisReplicatedHealthResult result = (MisReplicatedHealthResult)
healthCheck.checkHealth(requestBuilder.build());
- Assert.assertEquals(HealthState.MIS_REPLICATED, result.getHealthState());
- Assert.assertTrue(result.isReplicatedOkAfterPending());
+ assertEquals(HealthState.MIS_REPLICATED, result.getHealthState());
+ assertTrue(result.isReplicatedOkAfterPending());
- Assert.assertTrue(healthCheck.handle(requestBuilder.build()));
- Assert.assertEquals(0, repQueue.underReplicatedQueueSize());
- Assert.assertEquals(0, repQueue.overReplicatedQueueSize());
- Assert.assertEquals(0, report.getStat(
+ assertTrue(healthCheck.handle(requestBuilder.build()));
+ assertEquals(0, repQueue.underReplicatedQueueSize());
+ assertEquals(0, repQueue.overReplicatedQueueSize());
+ assertEquals(0, report.getStat(
ReplicationManagerReport.HealthState.UNDER_REPLICATED));
- Assert.assertEquals(1, report.getStat(
+ assertEquals(1, report.getStat(
ReplicationManagerReport.HealthState.MIS_REPLICATED));
}
diff --git
a/hadoop-hdds/server-scm/src/test/java/org/apache/hadoop/hdds/scm/container/replication/health/TestRatisUnhealthyReplicationCheckHandler.java
b/hadoop-hdds/server-scm/src/test/java/org/apache/hadoop/hdds/scm/container/replication/health/TestRatisUnhealthyReplicationCheckHandler.java
index e9e55ab0dc..f17cef2a0d 100644
---
a/hadoop-hdds/server-scm/src/test/java/org/apache/hadoop/hdds/scm/container/replication/health/TestRatisUnhealthyReplicationCheckHandler.java
+++
b/hadoop-hdds/server-scm/src/test/java/org/apache/hadoop/hdds/scm/container/replication/health/TestRatisUnhealthyReplicationCheckHandler.java
@@ -31,9 +31,8 @@ import
org.apache.hadoop.hdds.scm.container.replication.ContainerCheckRequest;
import org.apache.hadoop.hdds.scm.container.replication.ContainerHealthResult;
import org.apache.hadoop.hdds.scm.container.replication.ContainerReplicaOp;
import org.apache.hadoop.hdds.scm.container.replication.ReplicationQueue;
-import org.junit.Assert;
-import org.junit.Before;
-import org.junit.Test;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Test;
import java.io.IOException;
import java.util.Collections;
@@ -45,6 +44,9 @@ import static
org.apache.hadoop.hdds.protocol.proto.HddsProtos.ReplicationFactor
import static
org.apache.hadoop.hdds.scm.container.replication.ReplicationTestUtil.createContainerInfo;
import static
org.apache.hadoop.hdds.scm.container.replication.ReplicationTestUtil.createContainerReplica;
import static
org.apache.hadoop.hdds.scm.container.replication.ReplicationTestUtil.createReplicas;
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertFalse;
+import static org.junit.jupiter.api.Assertions.assertTrue;
/**
* Tests for {@link RatisUnhealthyReplicationCheckHandler}.
@@ -57,7 +59,7 @@ public class TestRatisUnhealthyReplicationCheckHandler {
private ReplicationManagerReport report;
private int maintenanceRedundancy = 2;
- @Before
+ @BeforeEach
public void setup() throws IOException {
handler = new RatisUnhealthyReplicationCheckHandler();
repConfig = RatisReplicationConfig.getInstance(THREE);
@@ -79,9 +81,9 @@ public class TestRatisUnhealthyReplicationCheckHandler {
requestBuilder.setContainerReplicas(replicas)
.setContainerInfo(container);
- Assert.assertFalse(handler.handle(requestBuilder.build()));
- Assert.assertEquals(0, repQueue.underReplicatedQueueSize());
- Assert.assertEquals(0, repQueue.overReplicatedQueueSize());
+ assertFalse(handler.handle(requestBuilder.build()));
+ assertEquals(0, repQueue.underReplicatedQueueSize());
+ assertEquals(0, repQueue.overReplicatedQueueSize());
}
@Test
@@ -94,7 +96,7 @@ public class TestRatisUnhealthyReplicationCheckHandler {
requestBuilder.setContainerReplicas(replicas)
.setContainerInfo(container);
- Assert.assertFalse(handler.handle(requestBuilder.build()));
+ assertFalse(handler.handle(requestBuilder.build()));
}
@Test
@@ -107,7 +109,7 @@ public class TestRatisUnhealthyReplicationCheckHandler {
requestBuilder.setContainerReplicas(replicas)
.setContainerInfo(container);
- Assert.assertFalse(handler.handle(requestBuilder.build()));
+ assertFalse(handler.handle(requestBuilder.build()));
}
@Test
@@ -125,7 +127,7 @@ public class TestRatisUnhealthyReplicationCheckHandler {
requestBuilder.setContainerReplicas(replicas)
.setContainerInfo(container);
- Assert.assertFalse(handler.handle(requestBuilder.build()));
+ assertFalse(handler.handle(requestBuilder.build()));
}
@Test
@@ -145,17 +147,17 @@ public class TestRatisUnhealthyReplicationCheckHandler {
ContainerHealthResult.OverReplicatedHealthResult result =
(ContainerHealthResult.OverReplicatedHealthResult)
handler.checkReplication(requestBuilder.build());
- Assert.assertEquals(ContainerHealthResult.HealthState.OVER_REPLICATED,
+ assertEquals(ContainerHealthResult.HealthState.OVER_REPLICATED,
result.getHealthState());
- Assert.assertEquals(1, result.getExcessRedundancy());
- Assert.assertFalse(result.isReplicatedOkAfterPending());
+ assertEquals(1, result.getExcessRedundancy());
+ assertFalse(result.isReplicatedOkAfterPending());
- Assert.assertTrue(handler.handle(requestBuilder.build()));
- Assert.assertEquals(0, repQueue.underReplicatedQueueSize());
- Assert.assertEquals(1, repQueue.overReplicatedQueueSize());
- Assert.assertEquals(1, report.getStat(
+ assertTrue(handler.handle(requestBuilder.build()));
+ assertEquals(0, repQueue.underReplicatedQueueSize());
+ assertEquals(1, repQueue.overReplicatedQueueSize());
+ assertEquals(1, report.getStat(
ReplicationManagerReport.HealthState.OVER_REPLICATED));
- Assert.assertEquals(1,
+ assertEquals(1,
report.getStat(ReplicationManagerReport.HealthState.UNHEALTHY));
}
@@ -178,18 +180,18 @@ public class TestRatisUnhealthyReplicationCheckHandler {
result = (ContainerHealthResult.UnderReplicatedHealthResult)
handler.checkReplication(requestBuilder.build());
- Assert.assertEquals(ContainerHealthResult.HealthState.UNDER_REPLICATED,
+ assertEquals(ContainerHealthResult.HealthState.UNDER_REPLICATED,
result.getHealthState());
- Assert.assertEquals(0, result.getRemainingRedundancy());
- Assert.assertFalse(result.isReplicatedOkAfterPending());
- Assert.assertFalse(result.underReplicatedDueToDecommission());
-
- Assert.assertTrue(handler.handle(requestBuilder.build()));
- Assert.assertEquals(1, repQueue.underReplicatedQueueSize());
- Assert.assertEquals(0, repQueue.overReplicatedQueueSize());
- Assert.assertEquals(1, report.getStat(
+ assertEquals(0, result.getRemainingRedundancy());
+ assertFalse(result.isReplicatedOkAfterPending());
+ assertFalse(result.underReplicatedDueToOutOfService());
+
+ assertTrue(handler.handle(requestBuilder.build()));
+ assertEquals(1, repQueue.underReplicatedQueueSize());
+ assertEquals(0, repQueue.overReplicatedQueueSize());
+ assertEquals(1, report.getStat(
ReplicationManagerReport.HealthState.UNDER_REPLICATED));
- Assert.assertEquals(1,
+ assertEquals(1,
report.getStat(ReplicationManagerReport.HealthState.UNHEALTHY));
}
@@ -212,18 +214,18 @@ public class TestRatisUnhealthyReplicationCheckHandler {
result = (ContainerHealthResult.UnderReplicatedHealthResult)
handler.checkReplication(requestBuilder.build());
- Assert.assertEquals(ContainerHealthResult.HealthState.UNDER_REPLICATED,
+ assertEquals(ContainerHealthResult.HealthState.UNDER_REPLICATED,
result.getHealthState());
- Assert.assertEquals(1, result.getRemainingRedundancy());
- Assert.assertTrue(result.isReplicatedOkAfterPending());
- Assert.assertFalse(result.underReplicatedDueToDecommission());
-
- Assert.assertTrue(handler.handle(requestBuilder.build()));
- Assert.assertEquals(0, repQueue.underReplicatedQueueSize());
- Assert.assertEquals(0, repQueue.overReplicatedQueueSize());
- Assert.assertEquals(1, report.getStat(
+ assertEquals(1, result.getRemainingRedundancy());
+ assertTrue(result.isReplicatedOkAfterPending());
+ assertFalse(result.underReplicatedDueToOutOfService());
+
+ assertTrue(handler.handle(requestBuilder.build()));
+ assertEquals(0, repQueue.underReplicatedQueueSize());
+ assertEquals(0, repQueue.overReplicatedQueueSize());
+ assertEquals(1, report.getStat(
ReplicationManagerReport.HealthState.UNDER_REPLICATED));
- Assert.assertEquals(1,
+ assertEquals(1,
report.getStat(ReplicationManagerReport.HealthState.UNHEALTHY));
}
@@ -246,17 +248,17 @@ public class TestRatisUnhealthyReplicationCheckHandler {
result = (ContainerHealthResult.UnderReplicatedHealthResult)
handler.checkReplication(requestBuilder.build());
- Assert.assertEquals(ContainerHealthResult.HealthState.UNDER_REPLICATED,
+ assertEquals(ContainerHealthResult.HealthState.UNDER_REPLICATED,
result.getHealthState());
- Assert.assertEquals(1, result.getRemainingRedundancy());
- Assert.assertFalse(result.isReplicatedOkAfterPending());
+ assertEquals(1, result.getRemainingRedundancy());
+ assertFalse(result.isReplicatedOkAfterPending());
- Assert.assertTrue(handler.handle(requestBuilder.build()));
- Assert.assertEquals(1, repQueue.underReplicatedQueueSize());
- Assert.assertEquals(0, repQueue.overReplicatedQueueSize());
- Assert.assertEquals(1, report.getStat(
+ assertTrue(handler.handle(requestBuilder.build()));
+ assertEquals(1, repQueue.underReplicatedQueueSize());
+ assertEquals(0, repQueue.overReplicatedQueueSize());
+ assertEquals(1, report.getStat(
ReplicationManagerReport.HealthState.UNDER_REPLICATED));
- Assert.assertEquals(1,
+ assertEquals(1,
report.getStat(ReplicationManagerReport.HealthState.UNHEALTHY));
}
@@ -279,17 +281,17 @@ public class TestRatisUnhealthyReplicationCheckHandler {
result = (ContainerHealthResult.OverReplicatedHealthResult)
handler.checkReplication(requestBuilder.build());
- Assert.assertEquals(ContainerHealthResult.HealthState.OVER_REPLICATED,
+ assertEquals(ContainerHealthResult.HealthState.OVER_REPLICATED,
result.getHealthState());
- Assert.assertEquals(1, result.getExcessRedundancy());
- Assert.assertTrue(result.isReplicatedOkAfterPending());
+ assertEquals(1, result.getExcessRedundancy());
+ assertTrue(result.isReplicatedOkAfterPending());
- Assert.assertTrue(handler.handle(requestBuilder.build()));
- Assert.assertEquals(0, repQueue.underReplicatedQueueSize());
- Assert.assertEquals(0, repQueue.overReplicatedQueueSize());
- Assert.assertEquals(1, report.getStat(
+ assertTrue(handler.handle(requestBuilder.build()));
+ assertEquals(0, repQueue.underReplicatedQueueSize());
+ assertEquals(0, repQueue.overReplicatedQueueSize());
+ assertEquals(1, report.getStat(
ReplicationManagerReport.HealthState.OVER_REPLICATED));
- Assert.assertEquals(1,
+ assertEquals(1,
report.getStat(ReplicationManagerReport.HealthState.UNHEALTHY));
}
@@ -315,20 +317,20 @@ public class TestRatisUnhealthyReplicationCheckHandler {
result = (ContainerHealthResult.OverReplicatedHealthResult)
handler.checkReplication(requestBuilder.build());
- Assert.assertEquals(ContainerHealthResult.HealthState.OVER_REPLICATED,
+ assertEquals(ContainerHealthResult.HealthState.OVER_REPLICATED,
result.getHealthState());
- Assert.assertEquals(1, result.getExcessRedundancy());
- Assert.assertFalse(result.isReplicatedOkAfterPending());
+ assertEquals(1, result.getExcessRedundancy());
+ assertFalse(result.isReplicatedOkAfterPending());
// not safe for over replication because we don't have 3 matching replicas
- Assert.assertFalse(result.isSafelyOverReplicated());
+ assertFalse(result.isSafelyOverReplicated());
- Assert.assertTrue(handler.handle(requestBuilder.build()));
- Assert.assertEquals(0, repQueue.underReplicatedQueueSize());
- Assert.assertEquals(0, repQueue.overReplicatedQueueSize());
- Assert.assertEquals(1, report.getStat(
+ assertTrue(handler.handle(requestBuilder.build()));
+ assertEquals(0, repQueue.underReplicatedQueueSize());
+ assertEquals(0, repQueue.overReplicatedQueueSize());
+ assertEquals(1, report.getStat(
ReplicationManagerReport.HealthState.OVER_REPLICATED));
- Assert.assertEquals(1,
+ assertEquals(1,
report.getStat(ReplicationManagerReport.HealthState.UNHEALTHY));
}
}
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]