diff options
author | Eirik Nygaard <eirik.nygaard@yahooinc.com> | 2022-11-22 12:39:33 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-11-22 12:39:33 +0100 |
commit | e24e240f01de0c291eb62ab03718fbda6abdb1b2 (patch) | |
tree | 07a3a0f73ef3d7f878ac3f371ac83b23989c2d54 /node-repository/src/test/java/com/yahoo | |
parent | 11690f693f82c0ca5b6bb4df49ebf9d5958560cf (diff) | |
parent | 6af8feb54aabce61e264328bf572d02a63443f6c (diff) |
Merge pull request #24959 from vespa-engine/bratseth/revert-exclusive-cleanupv8.89.6
Bratseth/revert exclusive cleanup MERGEOK
Diffstat (limited to 'node-repository/src/test/java/com/yahoo')
3 files changed, 44 insertions, 6 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 21389a8745c..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() { @@ -273,7 +291,7 @@ public class AutoscalingTest { .build(); NodeResources defaultResources = - new CapacityPolicies(fixture.tester().nodeRepository()).defaultNodeResources(fixture.clusterSpec, fixture.applicationId); + new CapacityPolicies(fixture.tester().nodeRepository()).defaultNodeResources(fixture.clusterSpec, fixture.applicationId, false); fixture.tester().assertResources("Min number of nodes and default resources", 2, 1, defaultResources, 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 00797cd6305..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(); @@ -142,7 +151,7 @@ class AutoscalingTester { } public Autoscaler.Advice autoscale(ApplicationId applicationId, ClusterSpec cluster, Capacity capacity) { - capacity = capacityPolicies.applyOn(capacity, applicationId, capacityPolicies.decideExclusivity(capacity, cluster).isExclusive()); + capacity = capacityPolicies.applyOn(capacity, applicationId, capacityPolicies.decideExclusivity(capacity, cluster.isExclusive())); Application application = nodeRepository().applications().get(applicationId).orElse(Application.empty(applicationId)) .withCluster(cluster.id(), false, capacity); try (Mutex lock = nodeRepository().applications().lock(applicationId)) { 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; |