From adfad6e225af1392db417ef4fa6ef8c5f97f2b62 Mon Sep 17 00:00:00 2001 From: Jon Bratseth Date: Mon, 16 Nov 2020 22:53:53 +0100 Subject: Filter out snapshots taken frlm nodes out of service --- .../hosted/provision/autoscale/MetricSnapshot.java | 5 +- .../provision/autoscale/MetricsResponse.java | 12 ++- .../autoscale/MetricsV2MetricsFetcher.java | 2 +- .../hosted/provision/autoscale/QuestMetricsDb.java | 3 +- .../maintenance/NodeMetricsDbMaintainer.java | 19 +++- .../provision/autoscale/AutoscalingTester.java | 9 +- .../provision/autoscale/MetricsFetcherDbTest.java | 60 ----------- .../autoscale/MetricsV2MetricsFetcherTest.java | 4 +- .../provision/autoscale/NodeMetricsDbTest.java | 60 +++++++++++ .../provision/autoscale/QuestMetricsDbTest.java | 6 +- .../maintenance/AutoscalingMaintainerTester.java | 6 +- .../DynamicProvisioningMaintainerTest.java | 2 +- .../maintenance/LoadBalancerExpirerTest.java | 6 +- .../maintenance/NodeMetricsDbMaintainerTest.java | 120 +++++++++++++++++++++ .../ScalingSuggestionsMaintainerTest.java | 7 +- .../provisioning/AclProvisioningTest.java | 12 +-- ...ckerProvisioningCompleteHostCalculatorTest.java | 2 +- .../provisioning/DockerProvisioningTest.java | 28 ++--- .../provisioning/DynamicDockerAllocationTest.java | 20 ++-- .../provisioning/DynamicDockerProvisionTest.java | 30 +++--- .../provisioning/InPlaceResizeProvisionTest.java | 6 +- .../provisioning/MultigroupProvisioningTest.java | 18 ++-- .../provisioning/NodeTypeProvisioningTest.java | 2 +- .../provision/provisioning/ProvisioningTest.java | 90 ++++++++-------- .../provision/provisioning/ProvisioningTester.java | 6 +- .../provisioning/VirtualNodeProvisioningTest.java | 6 +- 26 files changed, 345 insertions(+), 196 deletions(-) delete mode 100644 node-repository/src/test/java/com/yahoo/vespa/hosted/provision/autoscale/MetricsFetcherDbTest.java create mode 100644 node-repository/src/test/java/com/yahoo/vespa/hosted/provision/autoscale/NodeMetricsDbTest.java create mode 100644 node-repository/src/test/java/com/yahoo/vespa/hosted/provision/maintenance/NodeMetricsDbMaintainerTest.java diff --git a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/autoscale/MetricSnapshot.java b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/autoscale/MetricSnapshot.java index 7861cf4698d..7266fa67e90 100644 --- a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/autoscale/MetricSnapshot.java +++ b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/autoscale/MetricSnapshot.java @@ -17,13 +17,15 @@ public class MetricSnapshot { private final double memory; private final double disk; private final long generation; + private final boolean inRotation; - public MetricSnapshot(Instant at, double cpu, double memory, double disk, long generation) { + public MetricSnapshot(Instant at, double cpu, double memory, double disk, long generation, boolean inRotation) { this.at = at; this.cpu = cpu; this.memory = memory; this.disk = disk; this.generation = generation; + this.inRotation = inRotation; } public Instant at() { return at; } @@ -31,6 +33,7 @@ public class MetricSnapshot { public double memory() { return memory; } public double disk() { return disk; } public long generation() { return generation; } + public boolean inRotation() { return inRotation; } @Override public String toString() { return "metrics at " + at + ":" + diff --git a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/autoscale/MetricsResponse.java b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/autoscale/MetricsResponse.java index 1b24788c2a9..8b9e116f844 100644 --- a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/autoscale/MetricsResponse.java +++ b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/autoscale/MetricsResponse.java @@ -48,7 +48,8 @@ public class MetricsResponse { Metric.cpu.from(values), Metric.memory.from(values), Metric.disk.from(values), - (long)Metric.generation.from(values)))); + (long)Metric.generation.from(values), + Metric.inRotation.from(values) > 0))); } private void consumeServiceMetrics(String hostname, Inspector node) { @@ -85,6 +86,11 @@ public class MetricsResponse { generation { // application config generation active on the node public String metricResponseName() { return "application_generation"; } double convertValue(double metricValue) { return (float)metricValue; } // Really a long + }, + inRotation { + public String metricResponseName() { return "in_rotation"; } + double convertValue(double metricValue) { return (float)metricValue; } // Really a boolean + double defaultValue() { return 1.0; } }; /** The name of this metric as emitted from its source */ @@ -93,8 +99,10 @@ public class MetricsResponse { /** Convert from the emitted value of this metric to the value we want to use here */ abstract double convertValue(double metricValue); + double defaultValue() { return 0.0; } + public double from(Map values) { - return convertValue(values.getOrDefault(metricResponseName(), 0.0)); + return convertValue(values.getOrDefault(metricResponseName(), defaultValue())); } } diff --git a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/autoscale/MetricsV2MetricsFetcher.java b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/autoscale/MetricsV2MetricsFetcher.java index 4597fc04e17..33bdc746678 100644 --- a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/autoscale/MetricsV2MetricsFetcher.java +++ b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/autoscale/MetricsV2MetricsFetcher.java @@ -45,7 +45,7 @@ public class MetricsV2MetricsFetcher extends AbstractComponent implements Metric this(nodeRepository, orchestrator, new ApacheHttpClient()); } - MetricsV2MetricsFetcher(NodeRepository nodeRepository, Orchestrator orchestrator, HttpClient httpClient) { + public MetricsV2MetricsFetcher(NodeRepository nodeRepository, Orchestrator orchestrator, HttpClient httpClient) { this.nodeRepository = nodeRepository; this.orchestrator = orchestrator; this.httpClient = httpClient; diff --git a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/autoscale/QuestMetricsDb.java b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/autoscale/QuestMetricsDb.java index 163ee74e8f1..bf013810b2f 100644 --- a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/autoscale/QuestMetricsDb.java +++ b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/autoscale/QuestMetricsDb.java @@ -199,7 +199,8 @@ public class QuestMetricsDb implements MetricsDb { record.getFloat(2), record.getFloat(3), record.getFloat(4), - record.getLong(5))); + record.getLong(5), + true)); } } } diff --git a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/maintenance/NodeMetricsDbMaintainer.java b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/maintenance/NodeMetricsDbMaintainer.java index 5770564d23a..e1f23f2e280 100644 --- a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/maintenance/NodeMetricsDbMaintainer.java +++ b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/maintenance/NodeMetricsDbMaintainer.java @@ -1,15 +1,19 @@ // Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. package com.yahoo.vespa.hosted.provision.maintenance; +import com.yahoo.collections.Pair; import com.yahoo.config.provision.ApplicationId; import com.yahoo.jdisc.Metric; import com.yahoo.vespa.hosted.provision.NodeRepository; +import com.yahoo.vespa.hosted.provision.autoscale.MetricSnapshot; import com.yahoo.vespa.hosted.provision.autoscale.MetricsFetcher; import com.yahoo.vespa.hosted.provision.autoscale.MetricsDb; import com.yahoo.yolean.Exceptions; import java.time.Duration; +import java.util.Collection; import java.util.logging.Level; +import java.util.stream.Collectors; /** * Maintainer which keeps the node metric db up to date by periodically fetching metrics from all @@ -21,16 +25,16 @@ public class NodeMetricsDbMaintainer extends NodeRepositoryMaintainer { private static final int maxWarningsPerInvocation = 2; - private final MetricsFetcher nodeMetrics; + private final MetricsFetcher metricsFetcher; private final MetricsDb metricsDb; public NodeMetricsDbMaintainer(NodeRepository nodeRepository, - MetricsFetcher nodeMetrics, + MetricsFetcher metricsFetcher, MetricsDb metricsDb, Duration interval, Metric metric) { super(nodeRepository, interval, metric); - this.nodeMetrics = nodeMetrics; + this.metricsFetcher = metricsFetcher; this.metricsDb = metricsDb; } @@ -39,7 +43,7 @@ public class NodeMetricsDbMaintainer extends NodeRepositoryMaintainer { int warnings = 0; for (ApplicationId application : activeNodesByApplication().keySet()) { try { - metricsDb.add(nodeMetrics.fetchMetrics(application)); + metricsDb.add(filter(metricsFetcher.fetchMetrics(application))); } catch (Exception e) { // TODO: Don't warn if this only happens occasionally @@ -55,4 +59,11 @@ public class NodeMetricsDbMaintainer extends NodeRepositoryMaintainer { return warnings == 0; } + /** Filter out uninformative snapshots before storing */ + private Collection> filter(Collection> snapshots) { + return snapshots.stream() + .filter(snapshot -> snapshot.getSecond().inRotation()) + .collect(Collectors.toList()); + } + } 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 77fcde96c3c..4d8b6d13a86 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 @@ -136,7 +136,8 @@ class AutoscalingTester { cpu, memory, disk, - 0)))); + 0, + true)))); } } } @@ -165,7 +166,8 @@ class AutoscalingTester { cpu, memory, disk, - 0)))); + 0, + true)))); } } } @@ -179,7 +181,8 @@ class AutoscalingTester { cpu, memory, disk, - generation)))); + generation, + true)))); } } } diff --git a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/autoscale/MetricsFetcherDbTest.java b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/autoscale/MetricsFetcherDbTest.java deleted file mode 100644 index bc5303e14b8..00000000000 --- a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/autoscale/MetricsFetcherDbTest.java +++ /dev/null @@ -1,60 +0,0 @@ -// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -package com.yahoo.vespa.hosted.provision.autoscale; - -import com.yahoo.collections.Pair; -import com.yahoo.config.provision.ApplicationId; -import com.yahoo.config.provision.Capacity; -import com.yahoo.config.provision.ClusterResources; -import com.yahoo.config.provision.ClusterSpec; -import com.yahoo.config.provision.NodeResources; -import com.yahoo.test.ManualClock; -import com.yahoo.vespa.hosted.provision.provisioning.ProvisioningTester; -import org.junit.Test; - -import java.time.Duration; -import java.util.ArrayList; -import java.util.Collection; -import java.util.List; -import java.util.Set; - -import static org.junit.Assert.assertEquals; - -/** - * @author bratseth - */ -public class MetricsFetcherDbTest { - - @Test - public void testNodeMetricsDb() { - ProvisioningTester tester = new ProvisioningTester.Builder().build(); - tester.makeReadyHosts(10, new NodeResources(10, 100, 1000, 10)) - .activateTenantHosts(); - ApplicationId app1 = ProvisioningTester.makeApplicationId("app1"); - var hosts = - tester.activate(app1, - ClusterSpec.request(ClusterSpec.Type.container, ClusterSpec.Id.from("test")).vespaVersion("7.0").build(), - Capacity.from(new ClusterResources(2, 1, new NodeResources(1, 4, 10, 1)))); - String node0 = hosts.iterator().next().hostname(); - - ManualClock clock = tester.clock(); - MetricsDb db = MetricsDb.createTestInstance(tester.nodeRepository()); - Collection> values = new ArrayList<>(); - for (int i = 0; i < 40; i++) { - values.add(new Pair<>(node0, new MetricSnapshot(clock.instant(), 0.9f, 0.6f, 0.6f, 0))); - clock.advance(Duration.ofMinutes(120)); - } - db.add(values); - - // Avoid off-by-one bug when the below windows starts exactly on one of the above getEpochSecond() timestamps. - clock.advance(Duration.ofMinutes(1)); - - assertEquals(35, measurementCount(db.getNodeTimeseries(clock.instant().minus(Duration.ofHours(72)), Set.of(node0)))); - db.gc(); - assertEquals( 5, measurementCount(db.getNodeTimeseries(clock.instant().minus(Duration.ofHours(72)), Set.of(node0)))); - } - - private int measurementCount(List measurements) { - return measurements.stream().mapToInt(m -> m.size()).sum(); - } - -} diff --git a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/autoscale/MetricsV2MetricsFetcherTest.java b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/autoscale/MetricsV2MetricsFetcherTest.java index dfa78b1fd13..dd991f15087 100644 --- a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/autoscale/MetricsV2MetricsFetcherTest.java +++ b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/autoscale/MetricsV2MetricsFetcherTest.java @@ -34,8 +34,8 @@ public class MetricsV2MetricsFetcherTest { tester.makeReadyNodes(4, resources); // Creates (in order) host-1.yahoo.com, host-2.yahoo.com, host-3.yahoo.com, host-4.yahoo.com tester.activateTenantHosts(); - ApplicationId application1 = ProvisioningTester.makeApplicationId(); - ApplicationId application2 = ProvisioningTester.makeApplicationId(); + ApplicationId application1 = ProvisioningTester.applicationId(); + ApplicationId application2 = ProvisioningTester.applicationId(); tester.deploy(application1, Capacity.from(new ClusterResources(2, 1, resources))); // host-1.yahoo.com, host-2.yahoo.com tester.deploy(application2, Capacity.from(new ClusterResources(2, 1, resources))); // host-4.yahoo.com, host-3.yahoo.com diff --git a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/autoscale/NodeMetricsDbTest.java b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/autoscale/NodeMetricsDbTest.java new file mode 100644 index 00000000000..dba19d675dd --- /dev/null +++ b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/autoscale/NodeMetricsDbTest.java @@ -0,0 +1,60 @@ +// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. +package com.yahoo.vespa.hosted.provision.autoscale; + +import com.yahoo.collections.Pair; +import com.yahoo.config.provision.ApplicationId; +import com.yahoo.config.provision.Capacity; +import com.yahoo.config.provision.ClusterResources; +import com.yahoo.config.provision.ClusterSpec; +import com.yahoo.config.provision.NodeResources; +import com.yahoo.test.ManualClock; +import com.yahoo.vespa.hosted.provision.provisioning.ProvisioningTester; +import org.junit.Test; + +import java.time.Duration; +import java.util.ArrayList; +import java.util.Collection; +import java.util.List; +import java.util.Set; + +import static org.junit.Assert.assertEquals; + +/** + * @author bratseth + */ +public class NodeMetricsDbTest { + + @Test + public void testNodeMetricsDb() { + ProvisioningTester tester = new ProvisioningTester.Builder().build(); + tester.makeReadyHosts(10, new NodeResources(10, 100, 1000, 10)) + .activateTenantHosts(); + ApplicationId app1 = ProvisioningTester.applicationId("app1"); + var hosts = + tester.activate(app1, + ClusterSpec.request(ClusterSpec.Type.container, ClusterSpec.Id.from("test")).vespaVersion("7.0").build(), + Capacity.from(new ClusterResources(2, 1, new NodeResources(1, 4, 10, 1)))); + String node0 = hosts.iterator().next().hostname(); + + ManualClock clock = tester.clock(); + MetricsDb db = MetricsDb.createTestInstance(tester.nodeRepository()); + Collection> values = new ArrayList<>(); + for (int i = 0; i < 40; i++) { + values.add(new Pair<>(node0, new MetricSnapshot(clock.instant(), 0.9f, 0.6f, 0.6f, 0, true))); + clock.advance(Duration.ofMinutes(120)); + } + db.add(values); + + // Avoid off-by-one bug when the below windows starts exactly on one of the above getEpochSecond() timestamps. + clock.advance(Duration.ofMinutes(1)); + + assertEquals(35, measurementCount(db.getNodeTimeseries(clock.instant().minus(Duration.ofHours(72)), Set.of(node0)))); + db.gc(); + assertEquals( 5, measurementCount(db.getNodeTimeseries(clock.instant().minus(Duration.ofHours(72)), Set.of(node0)))); + } + + private int measurementCount(List measurements) { + return measurements.stream().mapToInt(m -> m.size()).sum(); + } + +} diff --git a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/autoscale/QuestMetricsDbTest.java b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/autoscale/QuestMetricsDbTest.java index 6d52fb29160..b97d5136485 100644 --- a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/autoscale/QuestMetricsDbTest.java +++ b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/autoscale/QuestMetricsDbTest.java @@ -120,7 +120,8 @@ public class QuestMetricsDbTest { i * 0.1, i * 0.2, i * 0.4, - i % 100))); + i % 100, + true))); clock.advance(sampleRate); } return timeseries; @@ -134,7 +135,8 @@ public class QuestMetricsDbTest { i * 0.1, i * 0.2, i * 0.4, - i % 100))); + i % 100, + true))); } return timeseries; } diff --git a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/maintenance/AutoscalingMaintainerTester.java b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/maintenance/AutoscalingMaintainerTester.java index 6e8b75a9af5..fadcd40ad0a 100644 --- a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/maintenance/AutoscalingMaintainerTester.java +++ b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/maintenance/AutoscalingMaintainerTester.java @@ -14,7 +14,6 @@ import com.yahoo.config.provisioning.FlavorsConfig; import com.yahoo.test.ManualClock; import com.yahoo.vespa.hosted.provision.Node; import com.yahoo.vespa.hosted.provision.NodeRepository; -import com.yahoo.vespa.hosted.provision.autoscale.MemoryMetricsDb; import com.yahoo.vespa.hosted.provision.autoscale.MetricSnapshot; import com.yahoo.vespa.hosted.provision.autoscale.MetricsDb; import com.yahoo.vespa.hosted.provision.provisioning.FlavorConfigBuilder; @@ -62,7 +61,7 @@ public class AutoscalingMaintainerTester { public AutoscalingMaintainer maintainer() { return maintainer; } public MetricsDb nodeMetricsDb() { return metricsDb; } - public static ApplicationId makeApplicationId(String name) { return ProvisioningTester.makeApplicationId(name); } + public static ApplicationId makeApplicationId(String name) { return ProvisioningTester.applicationId(name); } public static ClusterSpec containerClusterSpec() { return ProvisioningTester.containerClusterSpec(); } public List deploy(ApplicationId application, ClusterSpec cluster, Capacity capacity) { @@ -77,7 +76,8 @@ public class AutoscalingMaintainerTester { cpu, mem, disk, - generation)))); + generation, + true)))); } } diff --git a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/maintenance/DynamicProvisioningMaintainerTest.java b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/maintenance/DynamicProvisioningMaintainerTest.java index 444844a758f..c08e51bf0cc 100644 --- a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/maintenance/DynamicProvisioningMaintainerTest.java +++ b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/maintenance/DynamicProvisioningMaintainerTest.java @@ -182,7 +182,7 @@ public class DynamicProvisioningMaintainerTest { tester.provisioningTester.activateTenantHosts(); // Allocating nodes to a host does not result in provisioning of additional capacity - ApplicationId application = ProvisioningTester.makeApplicationId(); + ApplicationId application = ProvisioningTester.applicationId(); tester.provisioningTester.deploy(application, Capacity.from(new ClusterResources(2, 1, new NodeResources(4, 8, 50, 0.1)))); assertEquals(2, tester.nodeRepository.list().owner(application).size()); diff --git a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/maintenance/LoadBalancerExpirerTest.java b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/maintenance/LoadBalancerExpirerTest.java index de0e5d4223a..8bcf1552204 100644 --- a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/maintenance/LoadBalancerExpirerTest.java +++ b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/maintenance/LoadBalancerExpirerTest.java @@ -44,8 +44,8 @@ public class LoadBalancerExpirerTest { // Deploy two applications with a total of three load balancers ClusterSpec.Id cluster1 = ClusterSpec.Id.from("qrs"); ClusterSpec.Id cluster2 = ClusterSpec.Id.from("qrs2"); - ApplicationId app1 = ProvisioningTester.makeApplicationId(); - ApplicationId app2 = ProvisioningTester.makeApplicationId(); + ApplicationId app1 = ProvisioningTester.applicationId(); + ApplicationId app2 = ProvisioningTester.applicationId(); LoadBalancerId lb1 = new LoadBalancerId(app1, cluster1); LoadBalancerId lb2 = new LoadBalancerId(app2, cluster1); LoadBalancerId lb3 = new LoadBalancerId(app2, cluster2); @@ -110,7 +110,7 @@ public class LoadBalancerExpirerTest { // Prepare application ClusterSpec.Id cluster = ClusterSpec.Id.from("qrs"); - ApplicationId app = ProvisioningTester.makeApplicationId(); + ApplicationId app = ProvisioningTester.applicationId(); LoadBalancerId lb = new LoadBalancerId(app, cluster); deployApplication(app, false, cluster); diff --git a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/maintenance/NodeMetricsDbMaintainerTest.java b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/maintenance/NodeMetricsDbMaintainerTest.java new file mode 100644 index 00000000000..2f27409ba5e --- /dev/null +++ b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/maintenance/NodeMetricsDbMaintainerTest.java @@ -0,0 +1,120 @@ +// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. +package com.yahoo.vespa.hosted.provision.maintenance; + +import com.yahoo.config.provision.Capacity; +import com.yahoo.config.provision.ClusterResources; +import com.yahoo.config.provision.NodeResources; +import com.yahoo.vespa.hosted.provision.autoscale.MetricSnapshot; +import com.yahoo.vespa.hosted.provision.autoscale.MetricsDb; +import com.yahoo.vespa.hosted.provision.autoscale.MetricsV2MetricsFetcher; +import com.yahoo.vespa.hosted.provision.autoscale.NodeTimeseries; +import com.yahoo.vespa.hosted.provision.provisioning.ProvisioningTester; +import com.yahoo.vespa.hosted.provision.testutils.OrchestratorMock; +import org.junit.Test; + +import java.time.Duration; +import java.time.Instant; +import java.util.List; +import java.util.Set; +import java.util.stream.Collectors; + +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertTrue; + +/** + * @author bratseth + */ +public class NodeMetricsDbMaintainerTest { + + @Test + public void testNodeMetricsDbMaintainer() { + NodeResources resources = new NodeResources(1, 10, 100, 1); + ProvisioningTester tester = new ProvisioningTester.Builder().build(); + tester.clock().setInstant(Instant.ofEpochMilli(1400)); + tester.makeReadyNodes(2, resources); + tester.activateTenantHosts(); + tester.deploy(ProvisioningTester.applicationId("test"), + Capacity.from(new ClusterResources(2, 1, resources))); + OrchestratorMock orchestrator = new OrchestratorMock(); + MockHttpClient httpClient = new MockHttpClient(); + MetricsV2MetricsFetcher fetcher = new MetricsV2MetricsFetcher(tester.nodeRepository(), orchestrator, httpClient); + MetricsDb db = MetricsDb.createTestInstance(tester.nodeRepository()); + NodeMetricsDbMaintainer maintainer = new NodeMetricsDbMaintainer(tester.nodeRepository(), + fetcher, + db, + Duration.ofHours(1), + new TestMetric()); + assertTrue(maintainer.maintain()); + List timeseriesList = db.getNodeTimeseries(Instant.ofEpochMilli(0), + Set.of("host-1.yahoo.com", "host-2.yahoo.com")); + assertEquals(2, timeseriesList.size()); + List allSnapshots = timeseriesList.stream() + .flatMap(timeseries -> timeseries.asList().stream()) + .collect(Collectors.toList()); + assertEquals("Snapshot from the node not in service is filtered out", + 1, allSnapshots.size()); + assertEquals(0.14, allSnapshots.get(0).cpu(), 0.000001); + } + + private static class MockHttpClient implements MetricsV2MetricsFetcher.HttpClient { + + final String cannedResponse = + "{\n" + + " \"nodes\": [\n" + + " {\n" + + " \"hostname\": \"host-1.yahoo.com\",\n" + + " \"role\": \"role0\",\n" + + " \"node\": {\n" + + " \"timestamp\": 1300,\n" + + " \"metrics\": [\n" + + " {\n" + + " \"values\": {\n" + + " \"cpu.util\": 14,\n" + // this value asserted on above + " \"mem_total.util\": 15,\n" + + " \"disk.util\": 20,\n" + + " \"application_generation\": 3,\n" + + " \"in_rotation\": 1\n" + + " },\n" + + " \"dimensions\": {\n" + + " \"state\": \"active\"\n" + + " }\n" + + " }\n" + + " ]\n" + + " }\n" + + " },\n" + + " {\n" + + " \"hostname\": \"host-2.yahoo.com\",\n" + + " \"role\": \"role0\",\n" + + " \"node\": {\n" + + " \"timestamp\": 1300,\n" + + " \"metrics\": [\n" + + " {\n" + + " \"values\": {\n" + + " \"cpu.util\": 1,\n" + + " \"mem_total.util\": 2,\n" + + " \"disk.util\": 3,\n" + + " \"application_generation\": 3,\n" + + " \"in_rotation\": 0\n" + + " },\n" + + " \"dimensions\": {\n" + + " \"state\": \"active\"\n" + + " }\n" + + " }\n" + + " ]\n" + + " }\n" + + " }\n" + + " ]\n" + + "}\n"; + + @Override + public String get(String url) { + return cannedResponse; + } + + @Override + public void close() { } + + } + + +} diff --git a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/maintenance/ScalingSuggestionsMaintainerTest.java b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/maintenance/ScalingSuggestionsMaintainerTest.java index 9c952cc605e..15966a4c44b 100644 --- a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/maintenance/ScalingSuggestionsMaintainerTest.java +++ b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/maintenance/ScalingSuggestionsMaintainerTest.java @@ -38,10 +38,10 @@ public class ScalingSuggestionsMaintainerTest { public void testScalingSuggestionsMaintainer() { ProvisioningTester tester = new ProvisioningTester.Builder().zone(new Zone(Environment.prod, RegionName.from("us-east3"))).flavorsConfig(flavorsConfig()).build(); - ApplicationId app1 = ProvisioningTester.makeApplicationId("app1"); + ApplicationId app1 = ProvisioningTester.applicationId("app1"); ClusterSpec cluster1 = ProvisioningTester.containerClusterSpec(); - ApplicationId app2 = ProvisioningTester.makeApplicationId("app2"); + ApplicationId app2 = ProvisioningTester.applicationId("app2"); ClusterSpec cluster2 = ProvisioningTester.contentClusterSpec(); MetricsDb metricsDb = MetricsDb.createTestInstance(tester.nodeRepository()); @@ -80,7 +80,8 @@ public class ScalingSuggestionsMaintainerTest { cpu, memory, disk, - generation)))); + generation, + true)))); } } diff --git a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/provisioning/AclProvisioningTest.java b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/provisioning/AclProvisioningTest.java index 61274d04fe0..fd54a44c3df 100644 --- a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/provisioning/AclProvisioningTest.java +++ b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/provisioning/AclProvisioningTest.java @@ -38,14 +38,14 @@ public class AclProvisioningTest { // Populate repo tester.makeReadyNodes(10, new NodeResources(1, 4, 10, 1)); List dockerHost = tester.makeReadyNodes(1, new NodeResources(1, 4, 10, 1), NodeType.host); - ApplicationId zoneApplication = ProvisioningTester.makeApplicationId(); + ApplicationId zoneApplication = ProvisioningTester.applicationId(); tester.deploy(zoneApplication, Capacity.fromRequiredNodeType(NodeType.host)); tester.makeReadyVirtualDockerNodes(1,new NodeResources(1, 4, 10, 1), dockerHost.get(0).hostname()); List proxyNodes = tester.makeReadyNodes(3, new NodeResources(1, 4, 10, 1), NodeType.proxy); // Allocate 2 nodes - ApplicationId application = ProvisioningTester.makeApplicationId(); + ApplicationId application = ProvisioningTester.applicationId(); List activeNodes = tester.deploy(application, Capacity.from(new ClusterResources(2, 1, new NodeResources(1, 4, 10, 1)), false, true)); assertEquals(2, activeNodes.size()); @@ -110,7 +110,7 @@ public class AclProvisioningTest { tester.makeReadyNodes(3, "default", NodeType.proxy); // Deploy zone application - ApplicationId zoneApplication = ProvisioningTester.makeApplicationId(); + ApplicationId zoneApplication = ProvisioningTester.applicationId(); tester.deploy(zoneApplication, Capacity.fromRequiredNodeType(NodeType.proxy)); // Get trusted nodes for first proxy node @@ -152,7 +152,7 @@ public class AclProvisioningTest { tester.makeReadyNodes(3, "default", NodeType.controller); // Allocate - ApplicationId controllerApplication = ProvisioningTester.makeApplicationId(); + ApplicationId controllerApplication = ProvisioningTester.applicationId(); List controllers = tester.deploy(controllerApplication, Capacity.fromRequiredNodeType(NodeType.controller)); // Controllers and hosts all trust each other @@ -172,7 +172,7 @@ public class AclProvisioningTest { } // Deploy application - var application = ProvisioningTester.makeApplicationId(); + var application = ProvisioningTester.applicationId(); List activeNodes = deploy(application, 2); assertEquals(2, activeNodes.size()); @@ -207,7 +207,7 @@ public class AclProvisioningTest { } private List deploy(int nodeCount) { - return deploy(ProvisioningTester.makeApplicationId(), nodeCount); + return deploy(ProvisioningTester.applicationId(), nodeCount); } private List deploy(ApplicationId application, int nodeCount) { diff --git a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/provisioning/DockerProvisioningCompleteHostCalculatorTest.java b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/provisioning/DockerProvisioningCompleteHostCalculatorTest.java index 2e5aa949953..e5fd00005a4 100644 --- a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/provisioning/DockerProvisioningCompleteHostCalculatorTest.java +++ b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/provisioning/DockerProvisioningCompleteHostCalculatorTest.java @@ -33,7 +33,7 @@ public class DockerProvisioningCompleteHostCalculatorTest { .build(); tester.makeReadyHosts(9, hostFlavor.resources()).activateTenantHosts(); - ApplicationId app1 = ProvisioningTester.makeApplicationId("app1"); + ApplicationId app1 = ProvisioningTester.applicationId("app1"); ClusterSpec cluster1 = ClusterSpec.request(ClusterSpec.Type.content, new ClusterSpec.Id("cluster1")).vespaVersion("7").build(); var initialResources = new NodeResources(2, 16, 50, 1); diff --git a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/provisioning/DockerProvisioningTest.java b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/provisioning/DockerProvisioningTest.java index 1dcc70b0add..e046bc0a512 100644 --- a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/provisioning/DockerProvisioningTest.java +++ b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/provisioning/DockerProvisioningTest.java @@ -46,7 +46,7 @@ public class DockerProvisioningTest { public void docker_application_deployment() { ProvisioningTester tester = new ProvisioningTester.Builder().zone(new Zone(Environment.prod, RegionName.from("us-east"))).build(); tester.makeReadyHosts(10, dockerResources).activateTenantHosts(); - ApplicationId application1 = ProvisioningTester.makeApplicationId("app1"); + ApplicationId application1 = ProvisioningTester.applicationId("app1"); Version wantedVespaVersion = Version.fromString("6.39"); int nodeCount = 7; @@ -75,12 +75,12 @@ public class DockerProvisioningTest { public void refuses_to_activate_on_non_active_host() { ProvisioningTester tester = new ProvisioningTester.Builder().zone(new Zone(Environment.prod, RegionName.from("us-east"))).build(); - ApplicationId zoneApplication = ProvisioningTester.makeApplicationId(); + ApplicationId zoneApplication = ProvisioningTester.applicationId(); List parents = tester.makeReadyNodes(10, new NodeResources(2, 4, 20, 2), NodeType.host, 1); for (Node parent : parents) tester.makeReadyVirtualDockerNodes(1, dockerResources, parent.hostname()); - ApplicationId application1 = ProvisioningTester.makeApplicationId(); + ApplicationId application1 = ProvisioningTester.applicationId(); Version wantedVespaVersion = Version.fromString("6.39"); int nodeCount = 7; try { @@ -152,12 +152,12 @@ public class DockerProvisioningTest { NodeResources nodeResources = new NodeResources(1, 4, 100, 1); ProvisioningTester tester = new ProvisioningTester.Builder().zone(new Zone(Environment.prod, RegionName.from("us-east"))).build(); tester.makeReadyHosts(4, hostResources).activateTenantHosts(); - ApplicationId application1 = ProvisioningTester.makeApplicationId("app1"); + ApplicationId application1 = ProvisioningTester.applicationId("app1"); prepareAndActivate(application1, 2, true, nodeResources, tester); assertEquals(Set.of("host-1.yahoo.com", "host-2.yahoo.com"), hostsOf(tester.getNodes(application1, Node.State.active))); - ApplicationId application2 = ProvisioningTester.makeApplicationId("app2"); + ApplicationId application2 = ProvisioningTester.applicationId("app2"); prepareAndActivate(application2, 2, false, nodeResources, tester); assertEquals("Application is assigned to separate hosts", Set.of("host-3.yahoo.com", "host-4.yahoo.com"), @@ -171,12 +171,12 @@ public class DockerProvisioningTest { NodeResources nodeResources = new NodeResources(1, 4, 100, 1); ProvisioningTester tester = new ProvisioningTester.Builder().zone(new Zone(Environment.prod, RegionName.from("us-east"))).build(); tester.makeReadyHosts(4, hostResources).activateTenantHosts(); - ApplicationId application1 = ProvisioningTester.makeApplicationId("app1"); + ApplicationId application1 = ProvisioningTester.applicationId("app1"); prepareAndActivate(application1, 2, false, nodeResources, tester); assertEquals(Set.of("host-1.yahoo.com", "host-2.yahoo.com"), hostsOf(tester.getNodes(application1, Node.State.active))); - ApplicationId application2 = ProvisioningTester.makeApplicationId("app2"); + ApplicationId application2 = ProvisioningTester.applicationId("app2"); prepareAndActivate(application2, 2, true, nodeResources, tester); assertEquals("Application is assigned to separate hosts", Set.of("host-3.yahoo.com", "host-4.yahoo.com"), @@ -201,7 +201,7 @@ public class DockerProvisioningTest { tester.makeReadyVirtualDockerNode(i, dockerResources, "host4"); */ - ApplicationId application1 = ProvisioningTester.makeApplicationId(); + ApplicationId application1 = ProvisioningTester.applicationId(); prepareAndActivate(application1, 2, false, nodeResources, tester); for (Node node : tester.getNodes(application1, Node.State.active)) assertFalse(node.allocation().get().membership().cluster().isExclusive()); @@ -255,7 +255,7 @@ public class DockerProvisioningTest { try { ProvisioningTester tester = new ProvisioningTester.Builder() .zone(new Zone(Environment.prod, RegionName.from("us-east-1"))).build(); - ApplicationId application1 = ProvisioningTester.makeApplicationId("app1"); + ApplicationId application1 = ProvisioningTester.applicationId("app1"); tester.makeReadyVirtualDockerNodes(1, dockerResources, "dockerHost1"); tester.makeReadyVirtualDockerNodes(1, dockerResources, "dockerHost2"); @@ -282,7 +282,7 @@ public class DockerProvisioningTest { .build(); tester.makeReadyHosts(2, hostFlavor.resources()).activateTenantHosts(); - ApplicationId app1 = ProvisioningTester.makeApplicationId("app1"); + ApplicationId app1 = ProvisioningTester.applicationId("app1"); ClusterSpec cluster1 = ClusterSpec.request(ClusterSpec.Type.content, new ClusterSpec.Id("cluster1")).vespaVersion("7").build(); var resources = new NodeResources(1, 8, 10, 1); @@ -302,7 +302,7 @@ public class DockerProvisioningTest { .build(); tester.makeReadyHosts(9, hostFlavor.resources()).activateTenantHosts(); - ApplicationId app1 = ProvisioningTester.makeApplicationId("app1"); + ApplicationId app1 = ProvisioningTester.applicationId("app1"); ClusterSpec cluster1 = ClusterSpec.request(ClusterSpec.Type.content, new ClusterSpec.Id("cluster1")).vespaVersion("7").build(); var initialResources = new NodeResources(2, 16, 50, 1); @@ -337,7 +337,7 @@ public class DockerProvisioningTest { .build(); tester.makeReadyHosts(2, hostFlavor.resources()).activateTenantHosts(); - ApplicationId app1 = ProvisioningTester.makeApplicationId("app1"); + ApplicationId app1 = ProvisioningTester.applicationId("app1"); ClusterSpec cluster1 = ClusterSpec.request(ClusterSpec.Type.content, new ClusterSpec.Id("cluster1")).vespaVersion("7").build(); // 5 Gb requested memory becomes 5-3=2 Gb real memory, which is an illegally small amount @@ -359,7 +359,7 @@ public class DockerProvisioningTest { .build(); tester.makeReadyHosts(5, r).activateTenantHosts(); - ApplicationId app1 = ProvisioningTester.makeApplicationId("app1"); + ApplicationId app1 = ProvisioningTester.applicationId("app1"); ClusterSpec cluster1 = ClusterSpec.request(ClusterSpec.Type.container, new ClusterSpec.Id("cluster1")).vespaVersion("7").build(); tester.activate(app1, cluster1, Capacity.from(new ClusterResources(5, 1, r))); @@ -392,7 +392,7 @@ public class DockerProvisioningTest { .build(); tester.makeReadyHosts(4, r).activateTenantHosts(); - ApplicationId app1 = ProvisioningTester.makeApplicationId("app1"); + ApplicationId app1 = ProvisioningTester.applicationId("app1"); ClusterSpec cluster1 = ClusterSpec.request(clusterType, new ClusterSpec.Id("cluster1")).vespaVersion("7").build(); tester.activate(app1, cluster1, Capacity.from(new ClusterResources(4, 1, r))); diff --git a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/provisioning/DynamicDockerAllocationTest.java b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/provisioning/DynamicDockerAllocationTest.java index 8edc836a090..3c6e39702e4 100644 --- a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/provisioning/DynamicDockerAllocationTest.java +++ b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/provisioning/DynamicDockerAllocationTest.java @@ -229,7 +229,7 @@ public class DynamicDockerAllocationTest { tester.activateTenantHosts(); //Deploy an application having 6 nodes (3 nodes in 2 groups). We only have 5 docker hosts available - ApplicationId application1 = ProvisioningTester.makeApplicationId(); + ApplicationId application1 = ProvisioningTester.applicationId(); tester.prepare(application1, clusterSpec("myContent.t1.a1"), 6, 2, new NodeResources(1, 4, 100, 1)); fail("Two groups have been allocated to the same parent host"); @@ -245,7 +245,7 @@ public class DynamicDockerAllocationTest { ProvisioningTester tester = new ProvisioningTester.Builder().zone(new Zone(Environment.prod, RegionName.from("us-east"))).flavorsConfig(flavorsConfig()).build(); // Setup test - ApplicationId application1 = ProvisioningTester.makeApplicationId(); + ApplicationId application1 = ProvisioningTester.applicationId(); tester.makeReadyNodes(5, "host-small", NodeType.host, 32); tester.activateTenantHosts(); NodeResources flavor = new NodeResources(1, 4, 100, 1); @@ -277,7 +277,7 @@ public class DynamicDockerAllocationTest { ProvisioningTester tester = new ProvisioningTester.Builder().zone(new Zone(Environment.perf, RegionName.from("us-east"))).flavorsConfig(flavorsConfig()).build(); tester.makeReadyNodes(3, "host-small", NodeType.host, 32); tester.activateTenantHosts(); - ApplicationId application1 = ProvisioningTester.makeApplicationId(); + ApplicationId application1 = ProvisioningTester.applicationId(); List hosts = tester.prepare(application1, clusterSpec("myContent.t1.a1"), 3, 1, new NodeResources(1, 4, 100, 1)); tester.activate(application1, ImmutableSet.copyOf(hosts)); @@ -290,7 +290,7 @@ public class DynamicDockerAllocationTest { ProvisioningTester tester = new ProvisioningTester.Builder().zone(new Zone(SystemName.cd, Environment.test, RegionName.from("us-east"))).flavorsConfig(flavorsConfig()).build(); tester.makeReadyNodes(4, new Flavor(new NodeResources(1, 8, 120, 1, NodeResources.DiskSpeed.slow)), NodeType.host, 10, true); tester.activateTenantHosts(); - ApplicationId application1 = ProvisioningTester.makeApplicationId(); + ApplicationId application1 = ProvisioningTester.applicationId(); List hosts = tester.prepare(application1, clusterSpec("myContent.t1.a1"), 3, 1, new NodeResources(1, 4, 100, 1)); tester.activate(application1, ImmutableSet.copyOf(hosts)); } @@ -301,7 +301,7 @@ public class DynamicDockerAllocationTest { tester.makeProvisionedNodes(3, "host-small", NodeType.host, 32).forEach(node -> tester.nodeRepository().fail(node.hostname(), Agent.system, getClass().getSimpleName())); - ApplicationId application = ProvisioningTester.makeApplicationId(); + ApplicationId application = ProvisioningTester.applicationId(); tester.prepare(application, clusterSpec("myContent.t2.a2"), 2, 1, new NodeResources(1, 40, 100, 1)); } @@ -311,7 +311,7 @@ public class DynamicDockerAllocationTest { tester.makeReadyNodes(2, "host-large", NodeType.host, 10, true); tester.activateTenantHosts(); - ApplicationId application = ProvisioningTester.makeApplicationId(); + ApplicationId application = ProvisioningTester.applicationId(); List hosts = tester.prepare(application, clusterSpec("myContent.t1.a1"), 2, 1, new NodeResources(1, 4, 100, 1)); tester.activate(application, hosts); @@ -342,7 +342,7 @@ public class DynamicDockerAllocationTest { tester.makeReadyNodes(2, new Flavor(new NodeResources(1, 8, 120, 1, NodeResources.DiskSpeed.slow)), NodeType.host, 10, true); tester.activateTenantHosts(); - ApplicationId application = ProvisioningTester.makeApplicationId(); + ApplicationId application = ProvisioningTester.applicationId(); ClusterSpec cluster = ClusterSpec.request(ClusterSpec.Type.container, ClusterSpec.Id.from("test")).vespaVersion("1").build(); NodeResources resources = new NodeResources(1, 4, 100, 1, NodeResources.DiskSpeed.any); @@ -359,7 +359,7 @@ public class DynamicDockerAllocationTest { tester.makeReadyNodes(2, new Flavor(new NodeResources(1, 8, 120, 1, NodeResources.DiskSpeed.slow)), NodeType.host, 10, true); tester.activateTenantHosts(); - ApplicationId application = ProvisioningTester.makeApplicationId(); + ApplicationId application = ProvisioningTester.applicationId(); ClusterSpec cluster = ClusterSpec.request(ClusterSpec.Type.container, ClusterSpec.Id.from("test")).vespaVersion("1").build(); NodeResources resources = new NodeResources(1, 4, 100, 1, requestDiskSpeed); @@ -381,7 +381,7 @@ public class DynamicDockerAllocationTest { tester.makeReadyNodes(2, new Flavor(new NodeResources(1, 8, 120, 1, NodeResources.DiskSpeed.slow)), NodeType.host, 10, true); tester.activateTenantHosts(); - ApplicationId application = ProvisioningTester.makeApplicationId(); + ApplicationId application = ProvisioningTester.applicationId(); ClusterSpec cluster = ClusterSpec.request(ClusterSpec.Type.container, ClusterSpec.Id.from("test")).vespaVersion("1").build(); NodeResources resources = new NodeResources(1, 4, 100, 1, NodeResources.DiskSpeed.fast); @@ -399,7 +399,7 @@ public class DynamicDockerAllocationTest { tester.makeReadyNodes(2, new Flavor(new NodeResources(5, 20, 1400, 3)), NodeType.host, 10, true); tester.activateTenantHosts(); - ApplicationId application = ProvisioningTester.makeApplicationId(); + ApplicationId application = ProvisioningTester.applicationId(); ClusterSpec cluster = ClusterSpec.request(ClusterSpec.Type.container, ClusterSpec.Id.from("test")).vespaVersion("1").build(); List hosts1 = tester.prepare(application, cluster, Capacity.from(new ClusterResources(2, 1, NodeResources.fromLegacyName("d-2-8-500")), false, true)); diff --git a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/provisioning/DynamicDockerProvisionTest.java b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/provisioning/DynamicDockerProvisionTest.java index 40d0f52dc37..4917a59879f 100644 --- a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/provisioning/DynamicDockerProvisionTest.java +++ b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/provisioning/DynamicDockerProvisionTest.java @@ -67,7 +67,7 @@ public class DynamicDockerProvisionTest { public void dynamically_provision_with_empty_node_repo() { assertEquals(0, tester.nodeRepository().list().size()); - ApplicationId application1 = ProvisioningTester.makeApplicationId(); + ApplicationId application1 = ProvisioningTester.applicationId(); NodeResources resources = new NodeResources(1, 4, 10, 1); mockHostProvisioner(hostProvisioner, "large", 3, null); // Provision shared hosts @@ -83,7 +83,7 @@ public class DynamicDockerProvisionTest { .map(Node::hostname).sorted().collect(Collectors.toList())); // Deploy new application - ApplicationId application2 = ProvisioningTester.makeApplicationId(); + ApplicationId application2 = ProvisioningTester.applicationId(); prepareAndActivate(application2, clusterSpec("mycluster"), 4, 1, resources); // Total of 12 nodes should now be in node-repo, 4 active hosts and 8 active nodes @@ -95,7 +95,7 @@ public class DynamicDockerProvisionTest { .map(Node::hostname).sorted().collect(Collectors.toList())); // Deploy new exclusive application - ApplicationId application3 = ProvisioningTester.makeApplicationId(); + ApplicationId application3 = ProvisioningTester.applicationId(); mockHostProvisioner(hostProvisioner, "large", 3, application3); prepareAndActivate(application3, clusterSpec("mycluster", true), 4, 1, resources); verify(hostProvisioner).provisionHosts(List.of(104, 105, 106, 107), resources, application3, @@ -114,11 +114,11 @@ public class DynamicDockerProvisionTest { NodeResources initialResources = new NodeResources(2, 8, 10, 1); NodeResources smallResources = new NodeResources(1, 4, 10, 1); - ApplicationId application1 = ProvisioningTester.makeApplicationId(); + ApplicationId application1 = ProvisioningTester.applicationId(); mockHostProvisioner(hostProvisioner, "large", 3, null); // Provision shared hosts prepareAndActivate(application1, clusterSpec("mycluster"), 4, 1, initialResources); - ApplicationId application2 = ProvisioningTester.makeApplicationId(); + ApplicationId application2 = ProvisioningTester.applicationId(); mockHostProvisioner(hostProvisioner, "large", 3, application2); // Provision exclusive hosts prepareAndActivate(application2, clusterSpec("mycluster", true), 4, 1, initialResources); @@ -144,24 +144,24 @@ public class DynamicDockerProvisionTest { NodeResources resources = new NodeResources(1, 4, 10, 4); - ApplicationId application1 = ProvisioningTester.makeApplicationId(); + ApplicationId application1 = ProvisioningTester.applicationId(); prepareAndActivate(application1, clusterSpec("mycluster"), 4, 1, resources); - ApplicationId application2 = ProvisioningTester.makeApplicationId(); + ApplicationId application2 = ProvisioningTester.applicationId(); prepareAndActivate(application2, clusterSpec("mycluster"), 3, 1, resources); - ApplicationId application3 = ProvisioningTester.makeApplicationId(); + ApplicationId application3 = ProvisioningTester.applicationId(); prepareAndActivate(application3, clusterSpec("mycluster"), 3, 1, resources); assertEquals(4, tester.nodeRepository().getNodes(NodeType.tenant).stream().map(Node::parentHostname).distinct().count()); - ApplicationId application4 = ProvisioningTester.makeApplicationId(); + ApplicationId application4 = ProvisioningTester.applicationId(); prepareAndActivate(application4, clusterSpec("mycluster"), 3, 1, resources); assertEquals(5, tester.nodeRepository().getNodes(NodeType.tenant).stream().map(Node::parentHostname).distinct().count()); } @Test public void retires_on_exclusivity_violation() { - ApplicationId application1 = ProvisioningTester.makeApplicationId(); + ApplicationId application1 = ProvisioningTester.applicationId(); NodeResources resources = new NodeResources(1, 4, 10, 1); mockHostProvisioner(hostProvisioner, "large", 3, null); // Provision shared hosts @@ -184,7 +184,7 @@ public class DynamicDockerProvisionTest { @Test public void node_indices_are_unique_even_when_a_node_is_left_in_reserved_state() { NodeResources resources = new NodeResources(10, 10, 10, 10); - ApplicationId app = ProvisioningTester.makeApplicationId(); + ApplicationId app = ProvisioningTester.applicationId(); Function retireNode = node -> tester.patchNode(node, (n) -> n.withWantToRetire(true, Agent.system, Instant.now())); Function getNodeInGroup = group -> tester.nodeRepository().getNodes(app).stream() @@ -229,7 +229,7 @@ public class DynamicDockerProvisionTest { tester.activateTenantHosts(); - ApplicationId app1 = ProvisioningTester.makeApplicationId("app1"); + ApplicationId app1 = ProvisioningTester.applicationId("app1"); ClusterSpec cluster1 = ClusterSpec.request(ClusterSpec.Type.content, new ClusterSpec.Id("cluster1")).vespaVersion("7").build(); // Deploy using real memory amount (17) @@ -275,7 +275,7 @@ public class DynamicDockerProvisionTest { tester.activateTenantHosts(); - ApplicationId app1 = ProvisioningTester.makeApplicationId("app1"); + ApplicationId app1 = ProvisioningTester.applicationId("app1"); ClusterSpec cluster1 = ClusterSpec.request(ClusterSpec.Type.content, new ClusterSpec.Id("cluster1")).vespaVersion("7").build(); // Limits where each number is within flavor limits but but which don't contain any flavor leads to an error @@ -350,7 +350,7 @@ public class DynamicDockerProvisionTest { tester.activateTenantHosts(); - ApplicationId app1 = ProvisioningTester.makeApplicationId("app1"); + ApplicationId app1 = ProvisioningTester.applicationId("app1"); ClusterSpec cluster1 = ClusterSpec.request(ClusterSpec.Type.content, new ClusterSpec.Id("cluster1")).vespaVersion("7").build(); tester.activate(app1, cluster1, Capacity.from(resources(4, 2, 2, 10, 200, fast, local), @@ -385,7 +385,7 @@ public class DynamicDockerProvisionTest { tester.activateTenantHosts(); - ApplicationId app1 = ProvisioningTester.makeApplicationId("app1"); + ApplicationId app1 = ProvisioningTester.applicationId("app1"); ClusterSpec cluster1 = ClusterSpec.request(ClusterSpec.Type.content, new ClusterSpec.Id("cluster1")).vespaVersion("7").build(); tester.activate(app1, cluster1, Capacity.from(resources(4, 2, 2, 10, 200, fast, StorageType.any), diff --git a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/provisioning/InPlaceResizeProvisionTest.java b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/provisioning/InPlaceResizeProvisionTest.java index 67a364ea504..230195a92bd 100644 --- a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/provisioning/InPlaceResizeProvisionTest.java +++ b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/provisioning/InPlaceResizeProvisionTest.java @@ -61,8 +61,8 @@ public class InPlaceResizeProvisionTest { private final ProvisioningTester tester = new ProvisioningTester.Builder() .flagSource(flagSource) .zone(new Zone(Environment.prod, RegionName.from("us-east"))).build(); - private final ApplicationId infraApp = ProvisioningTester.makeApplicationId(); - private final ApplicationId app = ProvisioningTester.makeApplicationId(); + private final ApplicationId infraApp = ProvisioningTester.applicationId(); + private final ApplicationId app = ProvisioningTester.applicationId(); @Test public void single_group_same_cluster_size_resource_increase() { @@ -129,7 +129,7 @@ public class InPlaceResizeProvisionTest { addParentHosts(4, new NodeResources(8, 16, 320, 8, fast, local)); // Allocate 2 nodes for one app that leaves exactly enough capacity for mediumResources left on the host - new PrepareHelper(tester, ProvisioningTester.makeApplicationId()).prepare(container1, 2, 1, mediumResources).activate(); + new PrepareHelper(tester, ProvisioningTester.applicationId()).prepare(container1, 2, 1, mediumResources).activate(); // Allocate 4 nodes for another app. After this, 2 hosts should be completely full new PrepareHelper(tester, app).prepare(container1, 4, 1, mediumResources).activate(); diff --git a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/provisioning/MultigroupProvisioningTest.java b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/provisioning/MultigroupProvisioningTest.java index 9e2b453bf78..ccc4a155d56 100644 --- a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/provisioning/MultigroupProvisioningTest.java +++ b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/provisioning/MultigroupProvisioningTest.java @@ -42,7 +42,7 @@ public class MultigroupProvisioningTest { public void test_provisioning_of_multiple_groups() { ProvisioningTester tester = new ProvisioningTester.Builder().zone(new Zone(Environment.prod, RegionName.from("us-east"))).build(); - ApplicationId application1 = ProvisioningTester.makeApplicationId("app1"); + ApplicationId application1 = ProvisioningTester.applicationId("app1"); tester.makeReadyNodes(31, small); @@ -75,7 +75,7 @@ public class MultigroupProvisioningTest { public void test_provisioning_of_groups_with_asymmetry() { ProvisioningTester tester = new ProvisioningTester.Builder().zone(new Zone(Environment.prod, RegionName.from("us-east"))).build(); - ApplicationId application1 = ProvisioningTester.makeApplicationId(); + ApplicationId application1 = ProvisioningTester.applicationId(); tester.makeReadyNodes(21, large); @@ -88,7 +88,7 @@ public class MultigroupProvisioningTest { public void test_provisioning_of_multiple_groups_after_flavor_migration() { ProvisioningTester tester = new ProvisioningTester.Builder().zone(new Zone(Environment.prod, RegionName.from("us-east"))).build(); - ApplicationId application1 = ProvisioningTester.makeApplicationId("app1"); + ApplicationId application1 = ProvisioningTester.applicationId("app1"); tester.makeReadyNodes(10, small); tester.makeReadyNodes(16, large); @@ -102,7 +102,7 @@ public class MultigroupProvisioningTest { public void test_one_node_and_group_to_two() { ProvisioningTester tester = new ProvisioningTester.Builder().zone(new Zone(Environment.perf, RegionName.from("us-east"))).build(); - ApplicationId application1 = ProvisioningTester.makeApplicationId(); + ApplicationId application1 = ProvisioningTester.applicationId(); tester.makeReadyNodes(10, small); @@ -114,7 +114,7 @@ public class MultigroupProvisioningTest { public void test_one_node_and_group_to_two_with_resource_change() { ProvisioningTester tester = new ProvisioningTester.Builder().zone(new Zone(Environment.perf, RegionName.from("us-east"))).build(); - ApplicationId application1 = ProvisioningTester.makeApplicationId(); + ApplicationId application1 = ProvisioningTester.applicationId(); tester.makeReadyNodes(10, small); tester.makeReadyNodes(10, large); @@ -136,7 +136,7 @@ public class MultigroupProvisioningTest { .build(); tester.makeReadyHosts(6, hostFlavor.resources()).activateTenantHosts(); - ApplicationId app1 = ProvisioningTester.makeApplicationId("app1"); + ApplicationId app1 = ProvisioningTester.applicationId("app1"); ClusterSpec cluster1 = ClusterSpec.request(ClusterSpec.Type.content, new ClusterSpec.Id("cluster1")).vespaVersion("7").build(); // Deploy with 1 group @@ -162,7 +162,7 @@ public class MultigroupProvisioningTest { .build(); tester.makeReadyHosts(6, hostFlavor.resources()).activateTenantHosts(); - ApplicationId app1 = ProvisioningTester.makeApplicationId("app1"); + ApplicationId app1 = ProvisioningTester.applicationId("app1"); ClusterSpec cluster1 = ClusterSpec.request(ClusterSpec.Type.content, new ClusterSpec.Id("cluster1")).vespaVersion("7").build(); // Deploy with 3 groups @@ -192,7 +192,7 @@ public class MultigroupProvisioningTest { .build(); tester.makeReadyHosts(12, hostFlavor.resources()).activateTenantHosts(); - ApplicationId app1 = ProvisioningTester.makeApplicationId("app1"); + ApplicationId app1 = ProvisioningTester.applicationId("app1"); ClusterSpec cluster1 = ClusterSpec.request(ClusterSpec.Type.content, new ClusterSpec.Id("cluster1")).vespaVersion("7").build(); // Deploy with 3 groups @@ -220,7 +220,7 @@ public class MultigroupProvisioningTest { public void test_provisioning_of_multiple_groups_after_flavor_migration_and_exiration() { ProvisioningTester tester = new ProvisioningTester.Builder().zone(new Zone(Environment.prod, RegionName.from("us-east"))).build(); - ApplicationId application1 = ProvisioningTester.makeApplicationId("app1"); + ApplicationId application1 = ProvisioningTester.applicationId("app1"); tester.makeReadyNodes(10, small); tester.makeReadyNodes(16, large); diff --git a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/provisioning/NodeTypeProvisioningTest.java b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/provisioning/NodeTypeProvisioningTest.java index 7b964b4c7f3..acf7bda3cbf 100644 --- a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/provisioning/NodeTypeProvisioningTest.java +++ b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/provisioning/NodeTypeProvisioningTest.java @@ -33,7 +33,7 @@ public class NodeTypeProvisioningTest { private final ProvisioningTester tester = new ProvisioningTester.Builder().build(); - private final ApplicationId application = ProvisioningTester.makeApplicationId(); // application using proxy nodes + private final ApplicationId application = ProvisioningTester.applicationId(); // application using proxy nodes private final Capacity capacity = Capacity.fromRequiredNodeType(NodeType.proxy); private final ClusterSpec clusterSpec = ClusterSpec.request(ClusterSpec.Type.container, ClusterSpec.Id.from("test")).vespaVersion("6.42").build(); diff --git a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/provisioning/ProvisioningTest.java b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/provisioning/ProvisioningTest.java index 020849e66d8..82b20bcae14 100644 --- a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/provisioning/ProvisioningTest.java +++ b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/provisioning/ProvisioningTest.java @@ -64,8 +64,8 @@ public class ProvisioningTest { public void application_deployment_constant_application_size() { ProvisioningTester tester = new ProvisioningTester.Builder().zone(new Zone(Environment.prod, RegionName.from("us-east"))).build(); - ApplicationId application1 = ProvisioningTester.makeApplicationId(); - ApplicationId application2 = ProvisioningTester.makeApplicationId(); + ApplicationId application1 = ProvisioningTester.applicationId(); + ApplicationId application2 = ProvisioningTester.applicationId(); tester.makeReadyHosts(21, defaultResources).activateTenantHosts(); @@ -144,10 +144,10 @@ public class ProvisioningTest { ProvisioningTester tester = new ProvisioningTester.Builder().zone(new Zone(Environment.dev, RegionName.from("us-east"))).build(); tester.makeReadyHosts(4, defaultResources); - tester.prepareAndActivateInfraApplication(ProvisioningTester.makeApplicationId(), NodeType.host); + tester.prepareAndActivateInfraApplication(ProvisioningTester.applicationId(), NodeType.host); // deploy - ApplicationId application1 = ProvisioningTester.makeApplicationId(); + ApplicationId application1 = ProvisioningTester.applicationId(); SystemState state1 = prepare(application1, 1, 1, 1, 1, defaultResources, tester); tester.activate(application1, state1.allHosts); @@ -169,10 +169,10 @@ public class ProvisioningTest { ProvisioningTester tester = new ProvisioningTester.Builder().zone(new Zone(Environment.dev, RegionName.from("us-east"))).build(); tester.makeReadyHosts(4, defaultResources); - tester.prepareAndActivateInfraApplication(ProvisioningTester.makeApplicationId(), NodeType.host); + tester.prepareAndActivateInfraApplication(ProvisioningTester.applicationId(), NodeType.host); // deploy - ApplicationId application1 = ProvisioningTester.makeApplicationId(); + ApplicationId application1 = ProvisioningTester.applicationId(); SystemState state1 = prepare(application1, tester, 1, 1, 1, 1, defaultResources, "1.2.3"); String dockerImageRepo = "docker.domain.tld/my/image"; prepare(application1, tester, 1, 1, 1 , 1 , false, defaultResources, "1.2.3", Optional.of(dockerImageRepo)); @@ -196,7 +196,7 @@ public class ProvisioningTest { public void application_deployment_variable_application_size() { ProvisioningTester tester = new ProvisioningTester.Builder().zone(new Zone(Environment.prod, RegionName.from("us-east"))).build(); - ApplicationId application1 = ProvisioningTester.makeApplicationId(); + ApplicationId application1 = ProvisioningTester.applicationId(); tester.makeReadyHosts(24, defaultResources); tester.activateTenantHosts(); @@ -265,7 +265,7 @@ public class ProvisioningTest { ProvisioningTester tester = new ProvisioningTester.Builder().zone(new Zone(Environment.prod, RegionName.from("us-east"))).build(); - ApplicationId application1 = ProvisioningTester.makeApplicationId(); + ApplicationId application1 = ProvisioningTester.applicationId(); tester.makeReadyHosts(12, small); tester.activateTenantHosts(); @@ -300,7 +300,7 @@ public class ProvisioningTest { ProvisioningTester tester = new ProvisioningTester.Builder().zone(new Zone(Environment.prod, RegionName.from("us-east"))).build(); - ApplicationId application1 = ProvisioningTester.makeApplicationId(); + ApplicationId application1 = ProvisioningTester.applicationId(); tester.makeReadyHosts(12, small); tester.makeReadyHosts(12, large); @@ -318,7 +318,7 @@ public class ProvisioningTest { public void application_deployment_above_then_at_capacity_limit() { ProvisioningTester tester = new ProvisioningTester.Builder().zone(new Zone(Environment.prod, RegionName.from("us-east"))).build(); - ApplicationId application1 = ProvisioningTester.makeApplicationId(); + ApplicationId application1 = ProvisioningTester.applicationId(); tester.makeReadyHosts(5, defaultResources).activateTenantHosts(); @@ -344,9 +344,9 @@ public class ProvisioningTest { ProvisioningTester tester = new ProvisioningTester.Builder().zone(new Zone(Environment.dev, RegionName.from("us-east"))).build(); tester.makeReadyHosts(4, defaultResources); - tester.prepareAndActivateInfraApplication(ProvisioningTester.makeApplicationId(), NodeType.host); + tester.prepareAndActivateInfraApplication(ProvisioningTester.applicationId(), NodeType.host); - ApplicationId application = ProvisioningTester.makeApplicationId(); + ApplicationId application = ProvisioningTester.applicationId(); SystemState state = prepare(application, 2, 2, 3, 3, defaultResources, tester); assertEquals(4, state.allHosts.size()); tester.activate(application, state.allHosts); @@ -357,8 +357,8 @@ public class ProvisioningTest { ProvisioningTester tester = new ProvisioningTester.Builder().zone(new Zone(Environment.prod, RegionName.from("us-east"))).build(); tester.makeReadyHosts(13, defaultResources).activateTenantHosts(); - tester.prepareAndActivateInfraApplication(ProvisioningTester.makeApplicationId(), NodeType.host); - ApplicationId application = ProvisioningTester.makeApplicationId(); + tester.prepareAndActivateInfraApplication(ProvisioningTester.applicationId(), NodeType.host); + ApplicationId application = ProvisioningTester.applicationId(); { // Deploy with disk-speed any and make sure that information is retained @@ -400,9 +400,9 @@ public class ProvisioningTest { ProvisioningTester tester = new ProvisioningTester.Builder().zone(new Zone(Environment.dev, RegionName.from("us-east"))).build(); tester.makeReadyHosts(4, defaultResources).activateTenantHosts(); - tester.prepareAndActivateInfraApplication(ProvisioningTester.makeApplicationId(), NodeType.host); + tester.prepareAndActivateInfraApplication(ProvisioningTester.applicationId(), NodeType.host); - ApplicationId application = ProvisioningTester.makeApplicationId(); + ApplicationId application = ProvisioningTester.applicationId(); SystemState state = prepare(application, tester, 2, 2, 3, 3, defaultResources, "6.91"); assertEquals(4, state.allHosts.size()); tester.activate(application, state.allHosts); @@ -413,9 +413,9 @@ public class ProvisioningTest { ProvisioningTester tester = new ProvisioningTester.Builder().zone(new Zone(Environment.dev, RegionName.from("us-east"))).build(); tester.makeReadyHosts(4, defaultResources).activateTenantHosts(); - tester.prepareAndActivateInfraApplication(ProvisioningTester.makeApplicationId(), NodeType.host); + tester.prepareAndActivateInfraApplication(ProvisioningTester.applicationId(), NodeType.host); - ApplicationId application = ProvisioningTester.makeApplicationId(); + ApplicationId application = ProvisioningTester.applicationId(); String dockerImageRepo = "docker.domain.tld/my/image"; SystemState state = prepare(application, tester, 2, 2, 3, 3, false, defaultResources, "6.91", Optional.of(dockerImageRepo)); assertEquals(4, state.allHosts.size()); @@ -426,7 +426,7 @@ public class ProvisioningTest { public void test_deployment_size() { ProvisioningTester tester = new ProvisioningTester.Builder().zone(new Zone(Environment.test, RegionName.from("us-east"))).build(); - ApplicationId application = ProvisioningTester.makeApplicationId(); + ApplicationId application = ProvisioningTester.applicationId(); tester.makeReadyHosts(4, defaultResources).activateTenantHosts(); SystemState state = prepare(application, 2, 2, 3, 3, defaultResources, tester); @@ -442,7 +442,7 @@ public class ProvisioningTest { .build(); tester.makeReadyHosts(4, hostFlavor.resources()).activateTenantHosts(); - ApplicationId app1 = ProvisioningTester.makeApplicationId("app1"); + ApplicationId app1 = ProvisioningTester.applicationId("app1"); ClusterSpec cluster1 = ClusterSpec.request(ClusterSpec.Type.content, new ClusterSpec.Id("cluster1")).vespaVersion("7").build(); tester.activate(app1, cluster1, Capacity.from(new ClusterResources(2, 1, NodeResources.unspecified()), @@ -460,7 +460,7 @@ public class ProvisioningTest { .build(); tester.makeReadyHosts(31, hostFlavor.resources()).activateTenantHosts(); - ApplicationId app1 = ProvisioningTester.makeApplicationId("app1"); + ApplicationId app1 = ProvisioningTester.applicationId("app1"); ClusterSpec cluster1 = ClusterSpec.request(ClusterSpec.Type.content, new ClusterSpec.Id("cluster1")).vespaVersion("7").build(); // Initial deployment @@ -517,7 +517,7 @@ public class ProvisioningTest { public void prod_deployment_requires_redundancy() { ProvisioningTester tester = new ProvisioningTester.Builder().zone(new Zone(Environment.prod, RegionName.from("us-east"))).build(); - ApplicationId application = ProvisioningTester.makeApplicationId(); + ApplicationId application = ProvisioningTester.applicationId(); tester.makeReadyHosts(10, defaultResources).activateTenantHosts(); prepare(application, 1, 2, 3, 3, defaultResources, tester); } @@ -526,7 +526,7 @@ public class ProvisioningTest { public void below_memory_resource_limit() { ProvisioningTester tester = new ProvisioningTester.Builder().zone(new Zone(Environment.prod, RegionName.from("us-east"))).build(); - ApplicationId application = ProvisioningTester.makeApplicationId(); + ApplicationId application = ProvisioningTester.applicationId(); tester.makeReadyHosts(10, defaultResources).activateTenantHosts(); try { prepare(application, 2, 2, 3, 3, @@ -541,7 +541,7 @@ public class ProvisioningTest { public void below_vcpu_resource_limit() { ProvisioningTester tester = new ProvisioningTester.Builder().zone(new Zone(Environment.prod, RegionName.from("us-east"))).build(); - ApplicationId application = ProvisioningTester.makeApplicationId(); + ApplicationId application = ProvisioningTester.applicationId(); tester.makeReadyHosts(10, defaultResources).activateTenantHosts(); try { prepare(application, 2, 2, 3, 3, @@ -558,9 +558,9 @@ public class ProvisioningTest { ProvisioningTester tester = new ProvisioningTester.Builder().zone(new Zone(Environment.dev, RegionName.from("us-east"))).build(); tester.makeReadyHosts(4, new NodeResources(2, 4, 10, 2)); - tester.prepareAndActivateInfraApplication(ProvisioningTester.makeApplicationId(), NodeType.host); + tester.prepareAndActivateInfraApplication(ProvisioningTester.applicationId(), NodeType.host); - ApplicationId application = ProvisioningTester.makeApplicationId(); + ApplicationId application = ProvisioningTester.applicationId(); SystemState state = prepare(application, 2, 2, 3, 3, new NodeResources(2, 4, 10, 2), tester); assertEquals(4, state.allHosts.size()); @@ -574,7 +574,7 @@ public class ProvisioningTest { ProvisioningTester tester = new ProvisioningTester.Builder().zone(new Zone(Environment.test, RegionName.from("us-east"))).build(); - ApplicationId application = ProvisioningTester.makeApplicationId(); + ApplicationId application = ProvisioningTester.applicationId(); tester.makeReadyHosts(4, large).activateTenantHosts(); SystemState state = prepare(application, 2, 2, 3, 3, large, tester); assertEquals(4, state.allHosts.size()); @@ -585,7 +585,7 @@ public class ProvisioningTest { public void staging_deployment_size() { ProvisioningTester tester = new ProvisioningTester.Builder().zone(new Zone(Environment.staging, RegionName.from("us-east"))).build(); - ApplicationId application = ProvisioningTester.makeApplicationId(); + ApplicationId application = ProvisioningTester.applicationId(); tester.makeReadyHosts(14, defaultResources).activateTenantHosts(); SystemState state = prepare(application, 1, 1, 1, 64, defaultResources, tester); // becomes 1, 1, 1, 1, 6 assertEquals(9, state.allHosts.size()); @@ -597,7 +597,7 @@ public class ProvisioningTest { ProvisioningTester tester = new ProvisioningTester.Builder().zone(new Zone(Environment.prod, RegionName.from("us-east"))).build(); tester.makeReadyHosts(10, defaultResources).activateTenantHosts(); - ApplicationId application = ProvisioningTester.makeApplicationId(); + ApplicationId application = ProvisioningTester.applicationId(); SystemState state = prepare(application, 2, 2, 3, 3, defaultResources, tester); // Simulate expiry @@ -617,7 +617,7 @@ public class ProvisioningTest { ProvisioningTester tester = new ProvisioningTester.Builder().zone(new Zone(Environment.prod, RegionName.from("us-east"))).build(); tester.makeReadyHosts(9, defaultResources).activateTenantHosts(); // need 2+2+3+3=10 - ApplicationId application = ProvisioningTester.makeApplicationId(); + ApplicationId application = ProvisioningTester.applicationId(); try { prepare(application, 2, 2, 3, 3, defaultResources, tester); fail("Expected exception"); @@ -634,7 +634,7 @@ public class ProvisioningTest { RegionName.from("us-east"))).build(); tester.makeReadyHosts(13, defaultResources).activateTenantHosts(); - ApplicationId application = ProvisioningTester.makeApplicationId(); + ApplicationId application = ProvisioningTester.applicationId(); try { prepare(application, 2, 2, 6, 3, defaultResources, tester); fail("Expected exception"); @@ -652,7 +652,7 @@ public class ProvisioningTest { RegionName.from("us-east"))).build(); tester.makeReadyHosts(13, defaultResources).activateTenantHosts(); - ApplicationId application = ProvisioningTester.makeApplicationId(); + ApplicationId application = ProvisioningTester.applicationId(); prepare(application, 2, 2, 6, 3, defaultResources, tester); } @@ -660,7 +660,7 @@ public class ProvisioningTest { public void out_of_capacity_but_cannot_fail() { ProvisioningTester tester = new ProvisioningTester.Builder().zone(new Zone(Environment.prod, RegionName.from("us-east"))).build(); tester.makeReadyHosts(4, defaultResources).activateTenantHosts(); - ApplicationId application = ProvisioningTester.makeApplicationId(); + ApplicationId application = ProvisioningTester.applicationId(); ClusterSpec cluster = ClusterSpec.request(ClusterSpec.Type.content, ClusterSpec.Id.from("music")).vespaVersion("4.5.6").build(); tester.prepare(application, cluster, Capacity.from(new ClusterResources(5, 1, NodeResources.unspecified()), false, false)); // No exception; Success @@ -670,7 +670,7 @@ public class ProvisioningTest { public void out_of_capacity_all_nodes_want_to_retire() { ProvisioningTester tester = new ProvisioningTester.Builder().zone(new Zone(Environment.prod, RegionName.from("us-east"))).build(); - ApplicationId application = ProvisioningTester.makeApplicationId(); + ApplicationId application = ProvisioningTester.applicationId(); // Flag all nodes for retirement List readyNodes = tester.makeReadyNodes(5, defaultResources); tester.patchNodes(readyNodes, (node) -> node.withWantToRetire(true, Agent.system, tester.clock().instant())); @@ -690,7 +690,7 @@ public class ProvisioningTest { ProvisioningTester tester = new ProvisioningTester.Builder().zone(new Zone(Environment.prod, RegionName.from("us-east"))).build(); - ApplicationId application = ProvisioningTester.makeApplicationId(); + ApplicationId application = ProvisioningTester.applicationId(); // Create 10 nodes tester.makeReadyHosts(10, defaultResources).activateTenantHosts(); @@ -723,7 +723,7 @@ public class ProvisioningTest { ProvisioningTester tester = new ProvisioningTester.Builder().zone(new Zone(Environment.prod, RegionName.from("us-east"))).build(); tester.makeReadyHosts(10, defaultResources).activateTenantHosts(); - ApplicationId application = ProvisioningTester.makeApplicationId(); + ApplicationId application = ProvisioningTester.applicationId(); Capacity capacityCanFail = Capacity.from(new ClusterResources(5, 1, defaultResources), false, true); ClusterSpec cluster = ClusterSpec.request(ClusterSpec.Type.content, ClusterSpec.Id.from("music")).vespaVersion("4.5.6").build(); @@ -745,7 +745,7 @@ public class ProvisioningTest { public void highest_node_indexes_are_retired_first() { ProvisioningTester tester = new ProvisioningTester.Builder().zone(new Zone(Environment.prod, RegionName.from("us-east"))).build(); - ApplicationId application1 = ProvisioningTester.makeApplicationId(); + ApplicationId application1 = ProvisioningTester.applicationId(); tester.makeReadyHosts(14, defaultResources).activateTenantHosts(); @@ -776,7 +776,7 @@ public class ProvisioningTest { .spareCount(1).build(); tester.makeReadyHosts(7, defaultResources).activateTenantHosts(); - ApplicationId application = ProvisioningTester.makeApplicationId(); + ApplicationId application = ProvisioningTester.applicationId(); ClusterSpec spec = ClusterSpec.request(ClusterSpec.Type.content, ClusterSpec.Id.from("content1")).vespaVersion("7.1.2").build(); tester.deploy(application, spec, Capacity.from(new ClusterResources(6, 1, defaultResources))); @@ -796,7 +796,7 @@ public class ProvisioningTest { public void application_deployment_retires_nodes_that_want_to_retire() { ProvisioningTester tester = new ProvisioningTester.Builder().zone(new Zone(Environment.prod, RegionName.from("us-east"))).build(); - ApplicationId application = ProvisioningTester.makeApplicationId(); + ApplicationId application = ProvisioningTester.applicationId(); tester.makeReadyHosts(10, defaultResources).activateTenantHosts(); // Deploy application @@ -824,7 +824,7 @@ public class ProvisioningTest { public void application_deployment_extends_existing_reservations_on_deploy() { ProvisioningTester tester = new ProvisioningTester.Builder().zone(new Zone(Environment.prod, RegionName.from("us-east"))).build(); - ApplicationId application = ProvisioningTester.makeApplicationId(); + ApplicationId application = ProvisioningTester.applicationId(); tester.makeReadyHosts(2, defaultResources).activateTenantHosts(); // Deploy fails with out of capacity @@ -864,7 +864,7 @@ public class ProvisioningTest { @Test public void required_capacity_respects_prod_redundancy_requirement() { ProvisioningTester tester = new ProvisioningTester.Builder().zone(new Zone(Environment.prod, RegionName.from("us-east"))).build(); - ApplicationId application = ProvisioningTester.makeApplicationId(); + ApplicationId application = ProvisioningTester.applicationId(); try { prepare(application, tester, 1, 0, 1, 0, true, defaultResources, "6.42", Optional.empty()); fail("Expected exception"); @@ -876,9 +876,9 @@ public class ProvisioningTest { ProvisioningTester tester = new ProvisioningTester.Builder().zone(new Zone(SystemName.dev, Environment.dev, RegionName.from("no-central"))).build(); tester.makeReadyNodes(4, defaultResources, NodeType.devhost, 1); - tester.prepareAndActivateInfraApplication(ProvisioningTester.makeApplicationId(), NodeType.devhost); + tester.prepareAndActivateInfraApplication(ProvisioningTester.applicationId(), NodeType.devhost); - ApplicationId application = ProvisioningTester.makeApplicationId(); + ApplicationId application = ProvisioningTester.applicationId(); SystemState state = prepare(application, 2, 2, 3, 3, defaultResources, tester); assertEquals(4, state.allHosts.size()); tester.activate(application, state.allHosts); @@ -918,7 +918,7 @@ public class ProvisioningTest { @Test public void cluster_spec_update_for_already_reserved_nodes() { ProvisioningTester tester = new ProvisioningTester.Builder().zone(new Zone(Environment.dev, RegionName.from("us-east"))).build(); - ApplicationId application = ProvisioningTester.makeApplicationId(); + ApplicationId application = ProvisioningTester.applicationId(); String version1 = "6.42"; String version2 = "6.43"; tester.makeReadyNodes(2, defaultResources); @@ -935,7 +935,7 @@ public class ProvisioningTest { @Test public void change_to_and_from_combined_cluster_does_not_change_node_allocation() { var tester = new ProvisioningTester.Builder().zone(new Zone(Environment.prod, RegionName.from("us-east"))).build(); - var application = ProvisioningTester.makeApplicationId(); + var application = ProvisioningTester.applicationId(); tester.makeReadyHosts(4, defaultResources).activateTenantHosts(); 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 0a24eb82c50..d39ea3786f1 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 @@ -342,14 +342,14 @@ public class ProvisioningTester { return removed; } - public static ApplicationId makeApplicationId() { + public static ApplicationId applicationId() { return ApplicationId.from( TenantName.from(UUID.randomUUID().toString()), ApplicationName.from(UUID.randomUUID().toString()), InstanceName.from(UUID.randomUUID().toString())); } - public static ApplicationId makeApplicationId(String applicationName) { + public static ApplicationId applicationId(String applicationName) { return ApplicationId.from("tenant", applicationName, "default"); } @@ -527,7 +527,7 @@ public class ProvisioningTester { } public void activateTenantHosts() { - ApplicationId applicationId = makeApplicationId(); + ApplicationId applicationId = applicationId(); List list = prepare(applicationId, ClusterSpec.request(ClusterSpec.Type.container, ClusterSpec.Id.from("node-admin")).vespaVersion("6.42").build(), Capacity.fromRequiredNodeType(NodeType.host)); diff --git a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/provisioning/VirtualNodeProvisioningTest.java b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/provisioning/VirtualNodeProvisioningTest.java index d1446cd8bc1..b80e267efc6 100644 --- a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/provisioning/VirtualNodeProvisioningTest.java +++ b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/provisioning/VirtualNodeProvisioningTest.java @@ -39,7 +39,7 @@ public class VirtualNodeProvisioningTest { private static final ClusterSpec containerClusterSpec = ClusterSpec.request(ClusterSpec.Type.container, ClusterSpec.Id.from("myContainer")).vespaVersion("6.42").build(); private ProvisioningTester tester = new ProvisioningTester.Builder().build(); - private ApplicationId applicationId = ProvisioningTester.makeApplicationId("test"); + private ApplicationId applicationId = ProvisioningTester.applicationId("test"); @Test public void distinct_parent_host_for_each_node_in_a_cluster() { @@ -81,7 +81,7 @@ public class VirtualNodeProvisioningTest { NodeResources flavor = new NodeResources(1, 4, 10, 1); tester = new ProvisioningTester.Builder().zone(new Zone(Environment.dev, RegionName.from("us-east"))).build(); tester.makeReadyNodes(4, flavor, NodeType.host, 1); - tester.prepareAndActivateInfraApplication(ProvisioningTester.makeApplicationId(), NodeType.host); + tester.prepareAndActivateInfraApplication(ProvisioningTester.applicationId(), NodeType.host); List containerHosts = prepare(containerClusterSpec, containerNodeCount, groups, flavor); List contentHosts = prepare(contentClusterSpec, contentNodeCount, groups, flavor); @@ -95,7 +95,7 @@ public class VirtualNodeProvisioningTest { { tester = new ProvisioningTester.Builder().zone(new Zone(SystemName.cd, Environment.prod, RegionName.from("us-east"))).build(); tester.makeReadyNodes(4, resources, NodeType.host, 1); - tester.prepareAndActivateInfraApplication(ProvisioningTester.makeApplicationId(), NodeType.host); + tester.prepareAndActivateInfraApplication(ProvisioningTester.applicationId(), NodeType.host); List containerHosts = prepare(containerClusterSpec, containerNodeCount, groups); List contentHosts = prepare(contentClusterSpec, contentNodeCount, groups); -- cgit v1.2.3