diff options
author | Jon Bratseth <bratseth@gmail.com> | 2022-11-22 12:21:35 +0100 |
---|---|---|
committer | Jon Bratseth <bratseth@gmail.com> | 2022-11-22 12:21:35 +0100 |
commit | 6af8feb54aabce61e264328bf572d02a63443f6c (patch) | |
tree | 07a3a0f73ef3d7f878ac3f371ac83b23989c2d54 /node-repository | |
parent | 4a974c3b9908c2a5e1c59b006d429e01d9837d05 (diff) |
Test with shared hosts flag
Diffstat (limited to 'node-repository')
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; |