aboutsummaryrefslogtreecommitdiffstats
path: root/node-repository/src/test
diff options
context:
space:
mode:
authorHenning Baldersheim <balder@yahoo-inc.com>2023-06-28 14:52:20 +0200
committerGitHub <noreply@github.com>2023-06-28 14:52:20 +0200
commit609924b8259e689ee9bf39efb96f7ab7a011dd5e (patch)
treef11fd569ba3bd7cac37e8750218bb89ac30a478f /node-repository/src/test
parent8f7522f367e3d3d1bd23dfc7746b13d35bd6a839 (diff)
parenta1224a029ef537499787094f558930e97f49d2a8 (diff)
Merge pull request #27567 from vespa-engine/freva/fix-exclusive
Correctly check for exclusivity violation in dynamically provisioned zones MERGEOK
Diffstat (limited to 'node-repository/src/test')
-rw-r--r--node-repository/src/test/java/com/yahoo/vespa/hosted/provision/provisioning/DynamicProvisioningTest.java32
1 files changed, 30 insertions, 2 deletions
diff --git a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/provisioning/DynamicProvisioningTest.java b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/provisioning/DynamicProvisioningTest.java
index ced29b28d41..7dbed807480 100644
--- a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/provisioning/DynamicProvisioningTest.java
+++ b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/provisioning/DynamicProvisioningTest.java
@@ -3,8 +3,10 @@ package com.yahoo.vespa.hosted.provision.provisioning;
import com.yahoo.config.provision.ApplicationId;
import com.yahoo.config.provision.Capacity;
+import com.yahoo.config.provision.Cloud;
import com.yahoo.config.provision.ClusterResources;
import com.yahoo.config.provision.ClusterSpec;
+import com.yahoo.config.provision.Environment;
import com.yahoo.config.provision.Flavor;
import com.yahoo.config.provision.HostSpec;
import com.yahoo.config.provision.NodeFlavors;
@@ -13,8 +15,13 @@ import com.yahoo.config.provision.NodeResources.Architecture;
import com.yahoo.config.provision.NodeResources.DiskSpeed;
import com.yahoo.config.provision.NodeResources.StorageType;
import com.yahoo.config.provision.NodeType;
+import com.yahoo.config.provision.RegionName;
+import com.yahoo.config.provision.SystemName;
+import com.yahoo.config.provision.Zone;
import com.yahoo.vespa.flags.InMemoryFlagSource;
import com.yahoo.vespa.flags.PermanentFlags;
+import com.yahoo.vespa.flags.custom.HostResources;
+import com.yahoo.vespa.flags.custom.SharedHost;
import com.yahoo.vespa.hosted.provision.Node;
import com.yahoo.vespa.hosted.provision.Node.State;
import com.yahoo.vespa.hosted.provision.NodeList;
@@ -163,7 +170,7 @@ public class DynamicProvisioningTest {
@Test
public void avoids_allocating_to_empty_hosts() {
- var tester = tester(false);
+ var tester = tester(true);
tester.makeReadyHosts(6, new NodeResources(12, 12, 200, 12));
tester.activateTenantHosts();
@@ -185,6 +192,27 @@ public class DynamicProvisioningTest {
}
@Test
+ public void does_not_allocate_container_nodes_to_shared_hosts() {
+ assertHostSharing(Environment.prod, ClusterSpec.Type.container, false);
+ assertHostSharing(Environment.prod, ClusterSpec.Type.content, true);
+ assertHostSharing(Environment.staging, ClusterSpec.Type.container, true);
+ assertHostSharing(Environment.staging, ClusterSpec.Type.content, true);
+ }
+
+ private void assertHostSharing(Environment environment, ClusterSpec.Type clusterType, boolean expectShared) {
+ Zone zone = new Zone(Cloud.builder().dynamicProvisioning(true).allowHostSharing(false).build(), SystemName.Public, environment, RegionName.defaultName());
+ MockHostProvisioner hostProvisioner = new MockHostProvisioner(new NodeFlavors(ProvisioningTester.createConfig()).getFlavors(), nameResolver, 0);
+ ProvisioningTester tester = new ProvisioningTester.Builder().zone(zone).hostProvisioner(hostProvisioner).nameResolver(nameResolver).build();
+ tester.makeReadyHosts(2, new NodeResources(12, 12, 200, 12));
+ tester.flagSource().withJacksonFlag(PermanentFlags.SHARED_HOST.id(), new SharedHost(List.of(new HostResources(4.0, 16.0, 50.0, 0.3, "fast", "local", null, 10, "x86_64"))), SharedHost.class);
+
+ ApplicationId application = ProvisioningTester.applicationId();
+ ClusterSpec cluster = ClusterSpec.request(clusterType, ClusterSpec.Id.from("default")).vespaVersion("6.42").build();
+ tester.prepare(application, cluster, 2, 1, new NodeResources(2., 10., 20, 1));
+ assertEquals(expectShared ? 2 : 4, tester.nodeRepository().nodes().list().nodeType(NodeType.host).size());
+ }
+
+ @Test
public void retires_on_exclusivity_violation() {
var tester = tester(true);
ApplicationId application1 = ProvisioningTester.applicationId();
@@ -207,7 +235,7 @@ public class DynamicProvisioningTest {
@Test
public void node_indices_are_unique_even_when_a_node_is_left_in_reserved_state() {
- var tester = tester(false);
+ var tester = tester(true);
NodeResources resources = new NodeResources(10, 10, 10, 10);
ApplicationId app = ProvisioningTester.applicationId();