summaryrefslogtreecommitdiffstats
path: root/clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/UpEdgeMaintenanceTransitionConstraintTest.java
diff options
context:
space:
mode:
Diffstat (limited to 'clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/UpEdgeMaintenanceTransitionConstraintTest.java')
-rw-r--r--clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/UpEdgeMaintenanceTransitionConstraintTest.java46
1 files changed, 46 insertions, 0 deletions
diff --git a/clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/UpEdgeMaintenanceTransitionConstraintTest.java b/clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/UpEdgeMaintenanceTransitionConstraintTest.java
new file mode 100644
index 00000000000..86cd0d8f288
--- /dev/null
+++ b/clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/UpEdgeMaintenanceTransitionConstraintTest.java
@@ -0,0 +1,46 @@
+// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+package com.yahoo.vespa.clustercontroller.core;
+
+import com.yahoo.vdslib.state.ClusterState;
+import org.junit.Test;
+
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertTrue;
+
+public class UpEdgeMaintenanceTransitionConstraintTest {
+
+ private static UpEdgeMaintenanceTransitionConstraint makeChecker(String state) {
+ return UpEdgeMaintenanceTransitionConstraint.forPreviouslyPublishedState(ClusterState.stateFromString(state));
+ }
+
+ private static boolean nodeMayTransitionToMaintenanceInState(int contentNodeIndex, String state) {
+ UpEdgeMaintenanceTransitionConstraint checker = makeChecker(state);
+ return checker.maintenanceTransitionAllowed(contentNodeIndex);
+ }
+
+ @Test
+ public void eligible_when_previous_state_is_down() {
+ assertTrue(nodeMayTransitionToMaintenanceInState(1, "distributor:5 storage:5 .1.s:d"));
+ }
+
+ @Test
+ public void eligible_when_previous_state_is_maintenance() {
+ assertTrue(nodeMayTransitionToMaintenanceInState(1, "distributor:5 storage:5 .1.s:m"));
+ }
+
+ @Test
+ public void not_eligible_when_previous_state_is_up() {
+ assertFalse(nodeMayTransitionToMaintenanceInState(0, "distributor:5 storage:5"));
+ }
+
+ @Test
+ public void not_eligible_when_previous_state_is_initializing() {
+ assertFalse(nodeMayTransitionToMaintenanceInState(0, "distributor:5 storage:5 .0.s:i"));
+ }
+
+ @Test
+ public void not_eligible_when_previous_state_is_retired() {
+ assertFalse(nodeMayTransitionToMaintenanceInState(0, "distributor:5 storage:5 .0.s:r"));
+ }
+
+}