summaryrefslogtreecommitdiffstats
path: root/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/provisioning/DynamicDockerProvisionTest.java
diff options
context:
space:
mode:
Diffstat (limited to 'node-repository/src/test/java/com/yahoo/vespa/hosted/provision/provisioning/DynamicDockerProvisionTest.java')
-rw-r--r--node-repository/src/test/java/com/yahoo/vespa/hosted/provision/provisioning/DynamicDockerProvisionTest.java23
1 files changed, 23 insertions, 0 deletions
diff --git a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/provisioning/DynamicDockerProvisionTest.java b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/provisioning/DynamicDockerProvisionTest.java
index b871404aa9d..40d0f52dc37 100644
--- a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/provisioning/DynamicDockerProvisionTest.java
+++ b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/provisioning/DynamicDockerProvisionTest.java
@@ -96,6 +96,7 @@ public class DynamicDockerProvisionTest {
// Deploy new exclusive application
ApplicationId application3 = ProvisioningTester.makeApplicationId();
+ mockHostProvisioner(hostProvisioner, "large", 3, application3);
prepareAndActivate(application3, clusterSpec("mycluster", true), 4, 1, resources);
verify(hostProvisioner).provisionHosts(List.of(104, 105, 106, 107), resources, application3,
Version.emptyVersion, HostSharing.exclusive);
@@ -159,6 +160,28 @@ public class DynamicDockerProvisionTest {
}
@Test
+ public void retires_on_exclusivity_violation() {
+ ApplicationId application1 = ProvisioningTester.makeApplicationId();
+ NodeResources resources = new NodeResources(1, 4, 10, 1);
+
+ mockHostProvisioner(hostProvisioner, "large", 3, null); // Provision shared hosts
+ prepareAndActivate(application1, clusterSpec("mycluster"), 4, 1, resources);
+ Set<Node> initialNodes = tester.nodeRepository().list(application1).stream().collect(Collectors.toSet());
+ assertEquals(4, initialNodes.size());
+
+ // Redeploy same application with exclusive=true
+ mockHostProvisioner(hostProvisioner, "large", 3, application1);
+ prepareAndActivate(application1, clusterSpec("mycluster", true), 4, 1, resources);
+ assertEquals(8, tester.nodeRepository().list(application1).size());
+ assertEquals(initialNodes, tester.nodeRepository().list(application1).retired().stream().collect(Collectors.toSet()));
+
+ // Redeploy without exclusive again is no-op
+ prepareAndActivate(application1, clusterSpec("mycluster"), 4, 1, resources);
+ assertEquals(8, tester.nodeRepository().list(application1).size());
+ assertEquals(initialNodes, tester.nodeRepository().list(application1).retired().stream().collect(Collectors.toSet()));
+ }
+
+ @Test
public void node_indices_are_unique_even_when_a_node_is_left_in_reserved_state() {
NodeResources resources = new NodeResources(10, 10, 10, 10);
ApplicationId app = ProvisioningTester.makeApplicationId();