summaryrefslogtreecommitdiffstats
path: root/node-repository/src/test/java/com
diff options
context:
space:
mode:
authorValerij Fredriksen <valerijf@verizonmedia.com>2020-08-10 15:26:45 +0200
committerValerij Fredriksen <valerijf@verizonmedia.com>2020-08-10 15:26:45 +0200
commite50e9a1382bce77029ad4e40ddace4a271ffcbd4 (patch)
tree01a4065c53404eb89a4334cf81ad8b5021f46dde /node-repository/src/test/java/com
parent5573411c823144ecab2c60c0d21e828a47a7e479 (diff)
Prioritize retiring nodes on spare hosts
Diffstat (limited to 'node-repository/src/test/java/com')
-rw-r--r--node-repository/src/test/java/com/yahoo/vespa/hosted/provision/provisioning/ProvisioningTest.java25
1 files changed, 24 insertions, 1 deletions
diff --git a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/provisioning/ProvisioningTest.java b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/provisioning/ProvisioningTest.java
index 845eeba972c..1b8330f22fc 100644
--- a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/provisioning/ProvisioningTest.java
+++ b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/provisioning/ProvisioningTest.java
@@ -33,6 +33,7 @@ import java.util.HashSet;
import java.util.Iterator;
import java.util.List;
import java.util.Optional;
+import java.util.Random;
import java.util.Set;
import java.util.function.Function;
import java.util.function.Predicate;
@@ -720,7 +721,7 @@ public class ProvisioningTest {
// content0
assertFalse(state2.hostByMembership("content0", 0, 0).membership().get().retired());
- assertFalse( state2.hostByMembership("content0", 0, 1).membership().get().retired());
+ assertFalse(state2.hostByMembership("content0", 0, 1).membership().get().retired());
assertTrue( state2.hostByMembership("content0", 0, 2).membership().get().retired());
assertTrue( state2.hostByMembership("content0", 0, 3).membership().get().retired());
@@ -732,6 +733,28 @@ public class ProvisioningTest {
}
@Test
+ public void node_on_spare_host_retired_first() {
+ ProvisioningTester tester = new ProvisioningTester.Builder().zone(new Zone(Environment.prod, RegionName.from("us-east")))
+ .spareCount(1).build();
+ tester.makeReadyHosts(7, defaultResources).deployZoneApp();
+
+ ApplicationId application = tester.makeApplicationId();
+ ClusterSpec spec = ClusterSpec.request(ClusterSpec.Type.content, ClusterSpec.Id.from("content1")).vespaVersion("7.1.2").build();
+
+ tester.deploy(application, spec, Capacity.from(new ClusterResources(6, 1, defaultResources)));
+
+ // Pick out a random application node and make it's parent larger, this will make it the spare host
+ NodeList nodes = tester.nodeRepository().list();
+ Node randomNode = nodes.owner(application).shuffle(new Random()).first().get();
+ tester.nodeRepository().write(nodes.parentOf(randomNode).get().with(new Flavor(new NodeResources(2, 10, 20, 8))), () -> {});
+
+ // Re-deploy application with 1 node less, the retired node should be on the spare host
+ tester.deploy(application, spec, Capacity.from(new ClusterResources(5, 1, defaultResources)));
+
+ assertTrue(tester.nodeRepository().getNode(randomNode.hostname()).get().allocation().get().membership().retired());
+ }
+
+ @Test
public void application_deployment_retires_nodes_that_want_to_retire() {
ProvisioningTester tester = new ProvisioningTester.Builder().zone(new Zone(Environment.prod, RegionName.from("us-east"))).build();