diff options
author | Jon Bratseth <bratseth@gmail.com> | 2023-07-16 14:14:56 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-07-16 14:14:56 +0200 |
commit | fd0289618b75222667bd8e85a726e789f2356624 (patch) | |
tree | 1f0dd8372a83dea7dc92fbdd925a9d6909e40114 /node-repository/src/test/java/com/yahoo | |
parent | 5773360d5ef61f128d4c7f6dacf71668cebbd3a4 (diff) | |
parent | 4388580fd96a6f0426559c35f3e126280ee2c204 (diff) |
Merge pull request #27775 from vespa-engine/mpolden/throttle-provisioning
Throttle host provisioning
Diffstat (limited to 'node-repository/src/test/java/com/yahoo')
3 files changed, 31 insertions, 4 deletions
diff --git a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/provisioning/InfraDeployerImplTest.java b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/provisioning/InfraDeployerImplTest.java index 7763459dd92..79644206918 100644 --- a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/provisioning/InfraDeployerImplTest.java +++ b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/provisioning/InfraDeployerImplTest.java @@ -10,6 +10,7 @@ import com.yahoo.config.provision.HostSpec; import com.yahoo.config.provision.NodeType; import com.yahoo.config.provision.Provisioner; import com.yahoo.config.provision.Zone; +import com.yahoo.jdisc.test.MockMetric; import com.yahoo.vespa.hosted.provision.Node; import com.yahoo.vespa.hosted.provision.NodeList; import com.yahoo.vespa.hosted.provision.NodeRepository; @@ -60,7 +61,7 @@ public class InfraDeployerImplTest { private final NodeRepositoryTester tester = new NodeRepositoryTester(); private final NodeRepository nodeRepository = tester.nodeRepository(); - private final Provisioner provisioner = spy(new NodeRepositoryProvisioner(nodeRepository, Zone.defaultZone(), new EmptyProvisionServiceProvider())); + private final Provisioner provisioner = spy(new NodeRepositoryProvisioner(nodeRepository, Zone.defaultZone(), new EmptyProvisionServiceProvider(), new MockMetric())); private final InfrastructureVersions infrastructureVersions = nodeRepository.infrastructureVersions(); private final DuperModelInfraApi duperModelInfraApi = mock(DuperModelInfraApi.class); private final InfraDeployerImpl infraDeployer; diff --git a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/provisioning/ProvisioningTester.java b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/provisioning/ProvisioningTester.java index a3a90d58c2c..bca48b19ccf 100644 --- a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/provisioning/ProvisioningTester.java +++ b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/provisioning/ProvisioningTester.java @@ -22,12 +22,12 @@ 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.ProvisionLock; -import com.yahoo.config.provision.ProvisionLogger; import com.yahoo.config.provision.RegionName; import com.yahoo.config.provision.SystemName; import com.yahoo.config.provision.TenantName; import com.yahoo.config.provision.Zone; import com.yahoo.config.provisioning.FlavorsConfig; +import com.yahoo.jdisc.test.MockMetric; import com.yahoo.test.ManualClock; import com.yahoo.transaction.NestedTransaction; import com.yahoo.vespa.applicationmodel.InfrastructureApplication; @@ -73,7 +73,6 @@ import java.util.UUID; import java.util.function.Function; import java.util.function.Predicate; import java.util.function.UnaryOperator; -import java.util.logging.Level; import java.util.stream.Collectors; import static com.yahoo.config.provision.NodeResources.StorageType.local; @@ -131,7 +130,7 @@ public class ProvisioningTester { true, spareCount, 1000); - this.provisioner = new NodeRepositoryProvisioner(nodeRepository, zone, provisionServiceProvider); + this.provisioner = new NodeRepositoryProvisioner(nodeRepository, zone, provisionServiceProvider, new MockMetric()); this.capacityPolicies = new CapacityPolicies(nodeRepository); this.provisionLogger = new InMemoryProvisionLogger(); this.loadBalancerService = loadBalancerService; diff --git a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/provisioning/ProvisioningThrottlerTest.java b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/provisioning/ProvisioningThrottlerTest.java new file mode 100644 index 00000000000..66c17e1d37e --- /dev/null +++ b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/provisioning/ProvisioningThrottlerTest.java @@ -0,0 +1,27 @@ +package com.yahoo.vespa.hosted.provision.provisioning; + +import com.yahoo.vespa.hosted.provision.node.Agent; +import org.junit.jupiter.api.Test; + +import static org.junit.jupiter.api.Assertions.assertFalse; +import static com.yahoo.vespa.hosted.provision.provisioning.ProvisioningThrottler.throttle; +import static org.junit.jupiter.api.Assertions.assertTrue; + +/** + * @author mpolden + */ +class ProvisioningThrottlerTest { + + @Test + void throttling() { + Agent agent = Agent.system; + assertFalse(throttle(99, 99, agent)); + assertTrue(throttle(100, 99, agent)); + assertFalse(throttle(40, 100, agent)); + assertTrue(throttle(41, 100, agent)); + assertTrue(throttle(100, 100, agent)); + assertFalse(throttle(200, 2100, agent)); + assertTrue(throttle(201, 2100, agent)); + } + +} |