diff options
author | Valerij Fredriksen <valerijf@verizonmedia.com> | 2020-08-10 15:26:45 +0200 |
---|---|---|
committer | Valerij Fredriksen <valerijf@verizonmedia.com> | 2020-08-10 15:26:45 +0200 |
commit | e50e9a1382bce77029ad4e40ddace4a271ffcbd4 (patch) | |
tree | 01a4065c53404eb89a4334cf81ad8b5021f46dde /node-repository/src/test/java/com | |
parent | 5573411c823144ecab2c60c0d21e828a47a7e479 (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.java | 25 |
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(); |