aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJon Bratseth <bratseth@gmail.com>2022-11-22 12:21:35 +0100
committerJon Bratseth <bratseth@gmail.com>2022-11-22 12:21:35 +0100
commit6af8feb54aabce61e264328bf572d02a63443f6c (patch)
tree07a3a0f73ef3d7f878ac3f371ac83b23989c2d54
parent4a974c3b9908c2a5e1c59b006d429e01d9837d05 (diff)
Test with shared hosts flag
-rw-r--r--node-repository/src/test/java/com/yahoo/vespa/hosted/provision/autoscale/AutoscalingTest.java18
-rw-r--r--node-repository/src/test/java/com/yahoo/vespa/hosted/provision/autoscale/AutoscalingTester.java15
-rw-r--r--node-repository/src/test/java/com/yahoo/vespa/hosted/provision/autoscale/Fixture.java13
3 files changed, 42 insertions, 4 deletions
diff --git a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/autoscale/AutoscalingTest.java b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/autoscale/AutoscalingTest.java
index fa5502ebef9..4bc947cf095 100644
--- a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/autoscale/AutoscalingTest.java
+++ b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/autoscale/AutoscalingTest.java
@@ -78,6 +78,24 @@ public class AutoscalingTest {
fixture.autoscale());
}
+ @Test
+ public void initial_deployment_with_host_sharing_flag() {
+ var min = new ClusterResources(7, 1, new NodeResources(2.0, 10.0, 384.0, 0.1));
+ var max = new ClusterResources(7, 1, new NodeResources(2.4, 32.0, 768.0, 0.1));
+ var fixture = AutoscalingTester.fixture()
+ .awsProdSetup(false)
+ .capacity(Capacity.from(min, max))
+ .initialResources(Optional.empty())
+ .hostSharingFlag()
+ .build();
+ // TODO: Not actually at min since flags are inconsistently handled
+ fixture.tester().assertResources("Initial resources at min, since flag turns on host sharing",
+ 7, 1, 2.0, 16.0, 384.0,
+ fixture.currentResources().advertisedResources());
+ }
+
+
+
/** When scaling up, disregard underutilized dimensions (memory here) */
@Test
public void test_only_autoscaling_up_quickly() {
diff --git a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/autoscale/AutoscalingTester.java b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/autoscale/AutoscalingTester.java
index 3134d378c1c..7969864c063 100644
--- a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/autoscale/AutoscalingTester.java
+++ b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/autoscale/AutoscalingTester.java
@@ -13,6 +13,7 @@ import com.yahoo.config.provision.NodeType;
import com.yahoo.config.provision.Zone;
import com.yahoo.test.ManualClock;
import com.yahoo.transaction.Mutex;
+import com.yahoo.vespa.flags.InMemoryFlagSource;
import com.yahoo.vespa.hosted.provision.Node;
import com.yahoo.vespa.hosted.provision.NodeRepository;
import com.yahoo.vespa.hosted.provision.Nodelike;
@@ -43,16 +44,24 @@ class AutoscalingTester {
private final HostResourcesCalculator hostResourcesCalculator;
private final CapacityPolicies capacityPolicies;
- public AutoscalingTester(Zone zone, HostResourcesCalculator resourcesCalculator, List<Flavor> hostFlavors, int hostCount) {
- this(zone, hostFlavors, resourcesCalculator);
+ public AutoscalingTester(Zone zone,
+ HostResourcesCalculator resourcesCalculator,
+ List<Flavor> hostFlavors,
+ InMemoryFlagSource flagSource,
+ int hostCount) {
+ this(zone, hostFlavors, resourcesCalculator, flagSource);
for (Flavor flavor : hostFlavors)
provisioningTester.makeReadyNodes(hostCount, flavor.name(), NodeType.host, 8);
provisioningTester.activateTenantHosts();
}
- private AutoscalingTester(Zone zone, List<Flavor> flavors, HostResourcesCalculator resourcesCalculator) {
+ private AutoscalingTester(Zone zone,
+ List<Flavor> flavors,
+ HostResourcesCalculator resourcesCalculator,
+ InMemoryFlagSource flagSource) {
provisioningTester = new ProvisioningTester.Builder().zone(zone)
.flavors(flavors)
+ .flagSource(flagSource)
.resourcesCalculator(resourcesCalculator)
.hostProvisioner(zone.cloud().dynamicProvisioning() ? new MockHostProvisioner(flavors, zone.cloud()) : null)
.build();
diff --git a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/autoscale/Fixture.java b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/autoscale/Fixture.java
index 4828db4dfc8..0c146f525a2 100644
--- a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/autoscale/Fixture.java
+++ b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/autoscale/Fixture.java
@@ -13,6 +13,10 @@ import com.yahoo.config.provision.NodeResources;
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.NodeList;
import com.yahoo.vespa.hosted.provision.applications.Application;
@@ -46,7 +50,7 @@ public class Fixture {
applicationId = builder.application;
clusterSpec = builder.cluster;
capacity = builder.capacity;
- tester = new AutoscalingTester(builder.zone, builder.resourceCalculator, builder.hostFlavors, hostCount);
+ tester = new AutoscalingTester(builder.zone, builder.resourceCalculator, builder.hostFlavors, builder.flagSource, hostCount);
var deployCapacity = initialResources.isPresent() ? Capacity.from(initialResources.get()) : capacity;
tester.deploy(builder.application, builder.cluster, deployCapacity);
this.loader = new Loader(this);
@@ -142,6 +146,7 @@ public class Fixture {
new ClusterResources(20, 1,
new NodeResources(100, 1000, 1000, 1, NodeResources.DiskSpeed.any)));
HostResourcesCalculator resourceCalculator = new AutoscalingTester.MockHostResourcesCalculator(zone);
+ final InMemoryFlagSource flagSource = new InMemoryFlagSource();
int hostCount = 0;
public Fixture.Builder zone(Zone zone) {
@@ -230,6 +235,12 @@ public class Fixture {
return this;
}
+ public Fixture.Builder hostSharingFlag() {
+ var resources = new HostResources(8.0, 32.0, 100.0, 10.0, "fast", "local", null, 6, "x86_64");
+ flagSource.withJacksonFlag(PermanentFlags.SHARED_HOST.id(), new SharedHost(List.of(resources), null), SharedHost.class);
+ return this;
+ }
+
public Fixture.Builder hostCount(int hostCount) {
this.hostCount = hostCount;
return this;