summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJon Bratseth <bratseth@gmail.com>2022-07-18 13:27:17 +0200
committerJon Bratseth <bratseth@gmail.com>2022-07-18 13:27:17 +0200
commit4f0dc2004a5ad95d471be054af7dfacb56dd8fb3 (patch)
treeddd36a51e890c2fd81163acd45a51ecbceb8672f
parentbef65c951ee5d1ad986e6e6ec8ab2e16726fc34b (diff)
Use fixture
-rw-r--r--node-repository/src/test/java/com/yahoo/vespa/hosted/provision/autoscale/AutoscalingTest.java68
-rw-r--r--node-repository/src/test/java/com/yahoo/vespa/hosted/provision/autoscale/AutoscalingTester.java8
-rw-r--r--node-repository/src/test/java/com/yahoo/vespa/hosted/provision/autoscale/Fixture.java18
3 files changed, 47 insertions, 47 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 b135d913fde..68dafa6f034 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
@@ -478,48 +478,46 @@ public class AutoscalingTest {
@Test
public void test_autoscaling_considers_growth_rate() {
- NodeResources minResources = new NodeResources( 1, 100, 100, 1);
- NodeResources midResources = new NodeResources( 5, 100, 100, 1);
- NodeResources maxResources = new NodeResources(10, 100, 100, 1);
- ClusterResources min = new ClusterResources(5, 1, minResources);
- ClusterResources max = new ClusterResources(5, 1, maxResources);
- var capacity = Capacity.from(min, max);
- AutoscalingTester tester = new AutoscalingTester(maxResources.withVcpu(maxResources.vcpu() * 2));
+ var min = new ClusterResources(5, 1, new NodeResources( 1, 100, 100, 1));
+ var now = new ClusterResources(5, 1, new NodeResources( 5, 100, 100, 1));
+ var max = new ClusterResources(5, 1, new NodeResources(10, 100, 100, 1));
+ var fixture = AutoscalingTester.fixture()
+ .initialResources(Optional.of(now))
+ .capacity(Capacity.from(min, max))
+ .build();
- ApplicationId application1 = AutoscalingTester.applicationId("application1");
- ClusterSpec cluster1 = AutoscalingTester.clusterSpec(ClusterSpec.Type.container, "cluster1");
- tester.deploy(application1, cluster1, 5, 1, midResources);
- Duration timeAdded = tester.addQueryRateMeasurements(application1, cluster1.id(), 100, t -> t == 0 ? 20.0 : 10.0);
- tester.clock().advance(timeAdded.negated());
- tester.addCpuMeasurements(0.25f, 1f, 200, application1);
+ fixture.tester().clock().advance(Duration.ofDays(2));
+ Duration timeAdded = fixture.addLoadMeasurements(100, t -> t == 0 ? 20.0 : 10.0, t -> 0.0);
+ fixture.tester.clock().advance(timeAdded.negated());
+ fixture.addCpuMeasurements(0.25, 200);
// (no query rate data)
- tester.assertResources("Scale up since we assume we need 2x cpu for growth when no data scaling time data",
- 5, 1, 6.3, 100, 100,
- tester.autoscale(application1, cluster1, capacity));
+ fixture.tester().assertResources("Scale up since we assume we need 2x cpu for growth when no data scaling time data",
+ 5, 1, 6.4, 100, 100,
+ fixture.autoscale());
- tester.setScalingDuration(application1, cluster1.id(), Duration.ofMinutes(5));
- timeAdded = tester.addQueryRateMeasurements(application1, cluster1.id(),
- 100,
- t -> 10.0 + (t < 50 ? t : 100 - t));
- tester.clock().advance(timeAdded.negated());
- tester.addCpuMeasurements(0.25f, 1f, 200, application1);
- tester.assertResources("Scale down since observed growth is slower than scaling time",
- 5, 1, 3.4, 100, 100,
- tester.autoscale(application1, cluster1, capacity));
+ fixture.setScalingDuration(Duration.ofMinutes(5));
+
+ fixture.tester().clock().advance(Duration.ofDays(2));
+ timeAdded = fixture.addLoadMeasurements(100, t -> 10.0 + (t < 50 ? t : 100 - t), t -> 0.0);
+ fixture.tester.clock().advance(timeAdded.negated());
+ fixture.addCpuMeasurements(0.25, 200);
+ fixture.tester().assertResources("Scale down since observed growth is slower than scaling time",
+ 5, 1, 5.6, 100, 100,
+ fixture.autoscale());
- tester.clearQueryRateMeasurements(application1, cluster1.id());
+ fixture.setScalingDuration(Duration.ofMinutes(60));
- tester.setScalingDuration(application1, cluster1.id(), Duration.ofMinutes(60));
- timeAdded = tester.addQueryRateMeasurements(application1, cluster1.id(),
- 100,
- t -> 10.0 + (t < 50 ? t * t * t : 125000 - (t - 49) * (t - 49) * (t - 49)));
- tester.clock().advance(timeAdded.negated());
- tester.addCpuMeasurements(0.25f, 1f, 200, application1);
- tester.assertResources("Scale up since observed growth is faster than scaling time",
- 5, 1, 10.0, 100, 100,
- tester.autoscale(application1, cluster1, capacity));
+ fixture.tester().clock().advance(Duration.ofDays(2));
+ timeAdded = fixture.addLoadMeasurements(100,
+ t -> 10.0 + (t < 50 ? t * t * t : 125000 - (t - 49) * (t - 49) * (t - 49)),
+ t -> 0.0);
+ fixture.tester.clock().advance(timeAdded.negated());
+ fixture.addCpuMeasurements(0.25, 200);
+ fixture.tester().assertResources("Scale up since observed growth is faster than scaling time",
+ 5, 1, 6.6, 100, 100,
+ fixture.autoscale());
}
@Test
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 2a052c308b6..371d5dbee59 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
@@ -299,11 +299,12 @@ class AutoscalingTester {
}
/** Creates the given number of measurements, spaced 5 minutes between, using the given function */
- public void addLoadMeasurements(ApplicationId application,
+ public Duration addLoadMeasurements(ApplicationId application,
ClusterSpec.Id cluster,
int measurements,
IntFunction<Double> queryRate,
IntFunction<Double> writeRate) {
+ Instant initialTime = clock().instant();
for (int i = 0; i < measurements; i++) {
nodeMetricsDb().addClusterMetrics(application,
Map.of(cluster, new ClusterMetricSnapshot(clock().instant(),
@@ -311,6 +312,7 @@ class AutoscalingTester {
writeRate.apply(i))));
clock().advance(Duration.ofMinutes(5));
}
+ return Duration.between(initialTime, clock().instant());
}
/** Creates the given number of measurements, spaced 5 minutes between, using the given function */
@@ -337,10 +339,6 @@ class AutoscalingTester {
return Duration.between(initialTime, clock().instant());
}
- public void clearQueryRateMeasurements(ApplicationId application, ClusterSpec.Id cluster) {
- ((MemoryMetricsDb)nodeMetricsDb()).clearClusterMetrics(application, cluster);
- }
-
public Autoscaler.Advice autoscale(ApplicationId applicationId, ClusterSpec cluster, Capacity capacity) {
capacity = capacityPolicies.applyOn(capacity, applicationId, capacityPolicies.decideExclusivity(capacity, cluster.isExclusive()));
Application application = nodeRepository().applications().get(applicationId).orElse(Application.empty(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 fe291eb6c6b..602b6189898 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
@@ -46,7 +46,7 @@ public class Fixture {
/** Autoscale within the given capacity. */
public Autoscaler.Advice autoscale(Capacity capacity) {
- return tester.autoscale(application, cluster, capacity);
+ return tester().autoscale(application, cluster, capacity);
}
/** Redeploy with the deployed capacity of this. */
@@ -56,24 +56,28 @@ public class Fixture {
/** Redeploy with the given capacity. */
public void deploy(Capacity capacity) {
- tester.deploy(application, cluster, capacity);
+ tester().deploy(application, cluster, capacity);
}
/** Returns the nodes allocated to the fixture application cluster */
public NodeList nodes() {
- return tester.nodeRepository().nodes().list().owner(application).cluster(cluster.id());
+ return tester().nodeRepository().nodes().list().owner(application).cluster(cluster.id());
}
public void deactivateRetired(Capacity capacity) {
- tester.deactivateRetired(application, cluster, capacity);
+ tester().deactivateRetired(application, cluster, capacity);
+ }
+
+ public void setScalingDuration(Duration duration) {
+ tester().setScalingDuration(application, cluster.id(), duration);
}
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 Duration addLoadMeasurements(int measurements, IntFunction<Double> queryRate, IntFunction<Double> writeRate) {
+ return tester().addLoadMeasurements(application, cluster.id(), measurements, queryRate, writeRate);
}
public void applyCpuLoad(double cpuLoad, int measurements) {
@@ -105,7 +109,7 @@ public class Fixture {
}
public void storeReadShare(double currentReadShare, double maxReadShare) {
- tester.storeReadShare(currentReadShare, maxReadShare, application);
+ tester().storeReadShare(currentReadShare, maxReadShare, application);
}
public static class Builder {