summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJon Bratseth <bratseth@gmail.com>2022-07-17 20:21:06 +0200
committerJon Bratseth <bratseth@gmail.com>2022-07-17 20:21:06 +0200
commita98be9842d56af0667b9eabcbcce5d5e9d390378 (patch)
treed9c40b0a5aa897857b73fd5818333b52e6d4428b
parent525841eb27695bdf859ab8817b380eb9cf972479 (diff)
Use fixture
-rw-r--r--node-repository/src/test/java/com/yahoo/vespa/hosted/provision/autoscale/AutoscalingTest.java27
-rw-r--r--node-repository/src/test/java/com/yahoo/vespa/hosted/provision/autoscale/AutoscalingTester.java6
-rw-r--r--node-repository/src/test/java/com/yahoo/vespa/hosted/provision/autoscale/Fixture.java9
3 files changed, 23 insertions, 19 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 1b7f297a3ed..e7d092ec37d 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
@@ -307,25 +307,18 @@ public class AutoscalingTest {
@Test
public void test_autoscaling_groupsize_by_cpu_read_dominated() {
- NodeResources resources = new NodeResources(3, 100, 100, 1);
ClusterResources min = new ClusterResources( 3, 1, new NodeResources(1, 1, 1, 1));
ClusterResources max = new ClusterResources(21, 7, new NodeResources(100, 1000, 1000, 1));
- var capacity = Capacity.from(min, max);
- AutoscalingTester tester = new AutoscalingTester(resources.withVcpu(resources.vcpu() * 2));
-
- ApplicationId application1 = AutoscalingTester.applicationId("application1");
- ClusterSpec cluster1 = AutoscalingTester.clusterSpec(ClusterSpec.Type.container, "cluster1");
-
- // deploy
- tester.deploy(application1, cluster1, 6, 2, resources);
- tester.addCpuMeasurements(0.25f, 1f, 120, application1);
- tester.clock().advance(Duration.ofMinutes(-10 * 5));
- tester.addLoadMeasurements(application1, cluster1.id(), 10,
- t -> t == 0 ? 20.0 : 10.0,
- t -> 1.0);
- tester.assertResources("Scaling up since resource usage is too high, changing to 1 group is cheaper",
- 8, 1, 2.6, 83.3, 52.6,
- tester.autoscale(application1, cluster1, capacity));
+ var fixture = AutoscalingTester.fixture()
+ .capacity(Capacity.from(min, max))
+ .build();
+ fixture.tester().clock().advance(Duration.ofDays(2));
+ Duration timePassed = fixture.addCpuMeasurements(0.25, 120);
+ fixture.tester().clock().advance(timePassed.negated());
+ fixture.addLoadMeasurements(10, t -> t == 0 ? 20.0 : 10.0, t -> 1.0);
+ fixture.tester().assertResources("Scaling up since resource usage is too high, changing to 1 group is cheaper",
+ 9, 1, 1.8, 5.0, 50.0,
+ fixture.autoscale());
}
/** Same as above but mostly write traffic, which favors smaller groups */
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 e08444c6edb..748b8656358 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
@@ -163,10 +163,11 @@ class AutoscalingTester {
* @param count the number of measurements
* @param applicationId the application we're adding measurements for all nodes of
*/
- public void addCpuMeasurements(float value, float otherResourcesLoad,
- int count, ApplicationId applicationId) {
+ public Duration addCpuMeasurements(float value, float otherResourcesLoad,
+ int count, ApplicationId applicationId) {
NodeList nodes = nodeRepository().nodes().list(Node.State.active).owner(applicationId);
float oneExtraNodeFactor = (float)(nodes.size() - 1.0) / (nodes.size());
+ Instant initialTime = clock().instant();
for (int i = 0; i < count; i++) {
clock().advance(Duration.ofSeconds(150));
for (Node node : nodes) {
@@ -182,6 +183,7 @@ class AutoscalingTester {
0.0))));
}
}
+ return Duration.between(initialTime, clock().instant());
}
/**
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 429e0ce7030..c99beed5170 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
@@ -10,6 +10,7 @@ import com.yahoo.vespa.hosted.provision.NodeList;
import java.time.Duration;
import java.util.Optional;
+import java.util.function.IntFunction;
/**
* Fixture for autoscaling tests.
@@ -63,6 +64,14 @@ public class Fixture {
tester.deactivateRetired(application, cluster, capacity);
}
+ public Duration addCpuMeasurements(double cpuLoad, int measurements) {
+ return tester().addCpuMeasurements((float)cpuLoad, 1.0f, measurements, application);
+ }
+
+ public void addLoadMeasurements(int measurements, IntFunction<Double> queryRate, IntFunction<Double> writeRate) {
+ tester().addLoadMeasurements(application, cluster.id(), measurements, queryRate, writeRate);
+ }
+
public void applyCpuLoad(double cpuLoad, int measurements) {
Duration samplingInterval = Duration.ofSeconds(150L); // in addCpuMeasurements
tester().addCpuMeasurements((float)cpuLoad, 1.0f, measurements, application);