diff options
Diffstat (limited to 'controller-server/src/test/java')
10 files changed, 86 insertions, 11 deletions
diff --git a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/integration/ConfigServerMock.java b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/integration/ConfigServerMock.java index 1025901dc15..d466681255a 100644 --- a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/integration/ConfigServerMock.java +++ b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/integration/ConfigServerMock.java @@ -85,6 +85,7 @@ public class ConfigServerMock extends AbstractComponent implements ConfigServer /** Assigns a reserved tenant node to the given deployment, with initial versions. */ public void provision(ZoneId zone, ApplicationId application) { nodeRepository().putByHostname(zone, new Node(hostFor(application, zone), + Optional.empty(), Node.State.reserved, NodeType.tenant, Optional.of(application), @@ -113,6 +114,7 @@ public class ConfigServerMock extends AbstractComponent implements ConfigServer HostName.from("node-" + i + "-" + application.id().application() .value() + "-" + zone.value()), + Optional.empty(), Node.State.active, application.nodeType(), Optional.of(application.id()), initialVersion, @@ -175,14 +177,14 @@ public class ConfigServerMock extends AbstractComponent implements ConfigServer for (Node node : nodeRepository().list(zone, application)) { Node newNode; if (osVersion) { - newNode = new Node(node.hostname(), node.state(), node.type(), node.owner(), node.currentVersion(), + newNode = new Node(node.hostname(), Optional.empty(), node.state(), node.type(), node.owner(), node.currentVersion(), node.wantedVersion(), version, version, node.serviceState(), node.restartGeneration(), node.wantedRestartGeneration(), node.rebootGeneration(), node.wantedRebootGeneration(), node.vcpu(), node.memoryGb(), node.diskGb(), node.bandwidthGbps(), node.fastDisk(), node.cost(), node.canonicalFlavor(), node.clusterId(), node.clusterType()); } else { - newNode = new Node(node.hostname(), node.state(), node.type(), node.owner(), version, + newNode = new Node(node.hostname(), Optional.empty(), node.state(), node.type(), node.owner(), version, version, node.currentOsVersion(), node.wantedOsVersion(), node.serviceState(), node.restartGeneration(), node.wantedRestartGeneration(), node.rebootGeneration(), node.wantedRebootGeneration(), node.vcpu(), node.memoryGb(), node.diskGb(), @@ -306,6 +308,7 @@ public class ConfigServerMock extends AbstractComponent implements ConfigServer List<Node> nodes = nodeRepository.list(deployment.zoneId(), deployment.applicationId()); for (Node node : nodes) { nodeRepository.putByHostname(deployment.zoneId(), new Node(node.hostname(), + Optional.empty(), Node.State.active, node.type(), node.owner(), diff --git a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/integration/NodeRepositoryMock.java b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/integration/NodeRepositoryMock.java index 7cec6a00f8e..d3b33581214 100644 --- a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/integration/NodeRepositoryMock.java +++ b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/integration/NodeRepositoryMock.java @@ -67,6 +67,7 @@ public class NodeRepositoryMock implements NodeRepository { public void addFixedNodes(ZoneId zone) { var nodeA = new Node(HostName.from("hostA"), + Optional.of(HostName.from("parentHostA")), Node.State.active, NodeType.tenant, Optional.of(ApplicationId.from("tenant1", "app1", "default")), @@ -89,6 +90,7 @@ public class NodeRepositoryMock implements NodeRepository { "clusterA", Node.ClusterType.container); var nodeB = new Node(HostName.from("hostB"), + Optional.of(HostName.from("parentHostB")), Node.State.active, NodeType.tenant, Optional.of(ApplicationId.from("tenant2", "app2", "default")), @@ -160,7 +162,7 @@ public class NodeRepositoryMock implements NodeRepository { nodeRepository.getOrDefault(zone, Collections.emptyMap()).values() .stream() .filter(node -> node.type() == type) - .map(node -> new Node(node.hostname(), node.state(), node.type(), node.owner(), + .map(node -> new Node(node.hostname(), node.parentHostname(), node.state(), node.type(), node.owner(), node.currentVersion(), version)) .forEach(node -> putByHostname(zone, node)); } @@ -191,7 +193,7 @@ public class NodeRepositoryMock implements NodeRepository { public void doUpgrade(DeploymentId deployment, Optional<HostName> hostName, Version version) { modifyNodes(deployment, hostName, node -> { assert node.wantedVersion().equals(version); - return new Node(node.hostname(), node.state(), node.type(), node.owner(), version, version); + return new Node(node.hostname(), node.parentHostname(), node.state(), node.type(), node.owner(), version, version); }); } @@ -205,6 +207,7 @@ public class NodeRepositoryMock implements NodeRepository { public void requestRestart(DeploymentId deployment, Optional<HostName> hostname) { modifyNodes(deployment, hostname, node -> new Node(node.hostname(), + node.parentHostname(), node.state(), node.type(), node.owner(), @@ -230,6 +233,7 @@ public class NodeRepositoryMock implements NodeRepository { public void doRestart(DeploymentId deployment, Optional<HostName> hostname) { modifyNodes(deployment, hostname, node -> new Node(node.hostname(), + node.parentHostname(), node.state(), node.type(), node.owner(), @@ -255,6 +259,7 @@ public class NodeRepositoryMock implements NodeRepository { public void requestReboot(DeploymentId deployment, Optional<HostName> hostname) { modifyNodes(deployment, hostname, node -> new Node(node.hostname(), + node.parentHostname(), node.state(), node.type(), node.owner(), @@ -280,6 +285,7 @@ public class NodeRepositoryMock implements NodeRepository { public void doReboot(DeploymentId deployment, Optional<HostName> hostname) { modifyNodes(deployment, hostname, node -> new Node(node.hostname(), + node.parentHostname(), node.state(), node.type(), node.owner(), diff --git a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/integration/ServiceRegistryMock.java b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/integration/ServiceRegistryMock.java index eced161cebc..bd82807342e 100644 --- a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/integration/ServiceRegistryMock.java +++ b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/integration/ServiceRegistryMock.java @@ -8,6 +8,8 @@ import com.yahoo.config.provision.SystemName; import com.yahoo.test.ManualClock; import com.yahoo.vespa.hosted.controller.api.integration.ServiceRegistry; import com.yahoo.vespa.hosted.controller.api.integration.aws.MockAwsEventFetcher; +import com.yahoo.vespa.hosted.controller.api.integration.aws.MockResourceTagger; +import com.yahoo.vespa.hosted.controller.api.integration.aws.ResourceTagger; import com.yahoo.vespa.hosted.controller.api.integration.certificates.ApplicationCertificateMock; import com.yahoo.vespa.hosted.controller.api.integration.configserver.ConfigServer; import com.yahoo.vespa.hosted.controller.api.integration.dns.MemoryNameService; @@ -57,6 +59,7 @@ public class ServiceRegistryMock extends AbstractComponent implements ServiceReg private final ApplicationStoreMock applicationStoreMock = new ApplicationStoreMock(); private final MockRunDataStore mockRunDataStore = new MockRunDataStore(); private final MockTenantCost mockTenantCost = new MockTenantCost(); + private final MockResourceTagger mockResourceTagger = new MockResourceTagger(); public ServiceRegistryMock(SystemName system) { this.zoneRegistryMock = new ZoneRegistryMock(system); @@ -180,6 +183,11 @@ public class ServiceRegistryMock extends AbstractComponent implements ServiceReg return zoneRegistryMock; } + @Override + public ResourceTagger resourceTagger() { + return mockResourceTagger; + } + public ConfigServerMock configServerMock() { return configServerMock; } diff --git a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/maintenance/ClusterInfoMaintainerTest.java b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/maintenance/ClusterInfoMaintainerTest.java index 9739a24af01..bab0bb0615e 100644 --- a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/maintenance/ClusterInfoMaintainerTest.java +++ b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/maintenance/ClusterInfoMaintainerTest.java @@ -54,6 +54,7 @@ public class ClusterInfoMaintainerTest { private void addNodes(ZoneId zone) { var nodeA = new Node(HostName.from("hostA"), + Optional.empty(), Node.State.active, NodeType.tenant, Optional.of(ApplicationId.from("tenant1", "app1", "default")), @@ -76,6 +77,7 @@ public class ClusterInfoMaintainerTest { "clusterA", Node.ClusterType.container); var nodeB = new Node(HostName.from("hostB"), + Optional.empty(), Node.State.active, NodeType.tenant, Optional.of(ApplicationId.from("tenant1", "app1", "default")), diff --git a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/maintenance/OsUpgraderTest.java b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/maintenance/OsUpgraderTest.java index 8a5dc7594f9..f39bff416dd 100644 --- a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/maintenance/OsUpgraderTest.java +++ b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/maintenance/OsUpgraderTest.java @@ -154,7 +154,7 @@ public class OsUpgraderTest { throw new IllegalArgumentException("No nodes allocated to " + application.id()); } Node node = nodes.get(0); - nodeRepository().putByHostname(zone, new Node(node.hostname(), Node.State.failed, node.type(), node.owner(), + nodeRepository().putByHostname(zone, new Node(node.hostname(), node.parentHostname(), Node.State.failed, node.type(), node.owner(), node.currentVersion(), node.wantedVersion())); } @@ -164,7 +164,7 @@ public class OsUpgraderTest { for (ZoneId zone : zones) { for (Node node : nodesRequiredToUpgrade(zone, application)) { nodeRepository().putByHostname(zone, new Node( - node.hostname(), node.state(), node.type(), node.owner(), node.currentVersion(), + node.hostname(), node.parentHostname(), node.state(), node.type(), node.owner(), node.currentVersion(), node.wantedVersion(), version, version, node.serviceState(), node.restartGeneration(), node.wantedRestartGeneration(), node.rebootGeneration(), node.wantedRebootGeneration(), node.vcpu(), node.memoryGb(), node.diskGb(), diff --git a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/maintenance/ResourceTagMaintainerTest.java b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/maintenance/ResourceTagMaintainerTest.java new file mode 100644 index 00000000000..e5e124d6647 --- /dev/null +++ b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/maintenance/ResourceTagMaintainerTest.java @@ -0,0 +1,53 @@ +package com.yahoo.vespa.hosted.controller.maintenance; + +import com.yahoo.config.provision.ApplicationId; +import com.yahoo.config.provision.HostName; +import com.yahoo.config.provision.zone.ZoneId; +import com.yahoo.vespa.hosted.controller.ControllerTester; +import com.yahoo.vespa.hosted.controller.api.integration.aws.MockResourceTagger; +import com.yahoo.vespa.hosted.controller.integration.ZoneApiMock; +import org.junit.Test; + +import java.time.Duration; +import java.util.Map; + +import static org.junit.Assert.*; + +/** + * @author olaa + */ +public class ResourceTagMaintainerTest { + + ControllerTester tester = new ControllerTester(); + + @Test + public void maintain() { + setUpZones(); + MockResourceTagger mockResourceTagger = new MockResourceTagger(); + ResourceTagMaintainer resourceTagMaintainer = new ResourceTagMaintainer(tester.controller(), + Duration.ofMinutes(5), + new JobControl(tester.curator()), + mockResourceTagger); + resourceTagMaintainer.maintain(); + assertEquals(2, mockResourceTagger.getValues().size()); + Map<HostName, ApplicationId> applicationForHost = mockResourceTagger.getValues().get(ZoneId.from("prod.region-2")); + assertEquals(ApplicationId.from("tenant1", "app1", "default"), applicationForHost.get(HostName.from("parentHostA"))); + assertEquals(ApplicationId.from("tenant2", "app2", "default"), applicationForHost.get(HostName.from("parentHostB"))); + + + } + + private void setUpZones() { + ZoneApiMock nonAwsZone = ZoneApiMock.newBuilder().withId("test.region-1").build(); + ZoneApiMock awsZone1 = ZoneApiMock.newBuilder().withId("prod.region-2").withCloud("aws").build(); + ZoneApiMock awsZone2 = ZoneApiMock.newBuilder().withId("test.region-3").withCloud("aws").build(); + tester.zoneRegistry().setZones( + nonAwsZone, + awsZone1, + awsZone2); + tester.configServer().nodeRepository().addFixedNodes(nonAwsZone.getId()); + tester.configServer().nodeRepository().addFixedNodes(awsZone1.getId()); + tester.configServer().nodeRepository().addFixedNodes(awsZone2.getId()); + } + +}
\ No newline at end of file diff --git a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/maintenance/SystemUpgraderTest.java b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/maintenance/SystemUpgraderTest.java index f3c18499f16..d83b0d2eafe 100644 --- a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/maintenance/SystemUpgraderTest.java +++ b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/maintenance/SystemUpgraderTest.java @@ -301,7 +301,7 @@ public class SystemUpgraderTest { for (Node node : listNodes(zone, application)) { nodeRepository().putByHostname( zone.getId(), - new Node(node.hostname(), node.state(), node.type(), node.owner(), node.wantedVersion(), node.wantedVersion())); + new Node(node.hostname(), node.parentHostname(), node.state(), node.type(), node.owner(), node.wantedVersion(), node.wantedVersion())); } assertCurrentVersion(application, version, zone); @@ -326,7 +326,7 @@ public class SystemUpgraderTest { Node node = nodes.get(0); nodeRepository().putByHostname( zone.getId(), - new Node(node.hostname(), Node.State.failed, node.type(), node.owner(), node.currentVersion(), node.wantedVersion())); + new Node(node.hostname(), node.parentHostname(), Node.State.failed, node.type(), node.owner(), node.currentVersion(), node.wantedVersion())); } private void assertSystemVersion(Version version) { diff --git a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/controller/responses/maintenance.json b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/controller/responses/maintenance.json index 28d2980181f..3371c5563c9 100644 --- a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/controller/responses/maintenance.json +++ b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/controller/responses/maintenance.json @@ -52,6 +52,9 @@ "name": "ResourceMeterMaintainer" }, { + "name": "ResourceTagMaintainer" + }, + { "name": "RotationStatusUpdater" }, { diff --git a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/os/OsApiTest.java b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/os/OsApiTest.java index 89f11eae5ae..3b5b3ba7f9d 100644 --- a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/os/OsApiTest.java +++ b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/os/OsApiTest.java @@ -145,7 +145,7 @@ public class OsApiTest extends ControllerContainerTest { for (Node node : nodeRepository().list(zone, application.id())) { var version = targetVersion.orElse(node.wantedOsVersion()); nodeRepository().putByHostname(zone, new Node( - node.hostname(), node.state(), node.type(), node.owner(), node.currentVersion(), + node.hostname(), node.parentHostname(), node.state(), node.type(), node.owner(), node.currentVersion(), node.wantedVersion(), version, version, node.serviceState(), node.restartGeneration(), node.wantedRestartGeneration(), node.rebootGeneration(), node.wantedRebootGeneration(), node.vcpu(), node.memoryGb(), node.diskGb(), diff --git a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/versions/VersionStatusTest.java b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/versions/VersionStatusTest.java index 06260da833f..5456c280d95 100644 --- a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/versions/VersionStatusTest.java +++ b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/versions/VersionStatusTest.java @@ -66,7 +66,7 @@ public class VersionStatusTest { // Upgrade some config servers for (ZoneApi zone : tester.zoneRegistry().zones().all().zones()) { for (Node node : tester.configServer().nodeRepository().list(zone.getId(), SystemApplication.configServer.id())) { - Node upgradedNode = new Node(node.hostname(), node.state(), node.type(), node.owner(), version1, node.wantedVersion()); + Node upgradedNode = new Node(node.hostname(), node.parentHostname(), node.state(), node.type(), node.owner(), version1, node.wantedVersion()); tester.configServer().nodeRepository().putByHostname(zone.getId(), upgradedNode); break; } @@ -110,7 +110,7 @@ public class VersionStatusTest { Version ancientVersion = Version.fromString("5.1"); for (ZoneApi zone : tester.controller().zoneRegistry().zones().all().zones()) { for (Node node : tester.configServer().nodeRepository().list(zone.getId(), SystemApplication.configServer.id())) { - Node downgradedNode = new Node(node.hostname(), node.state(), node.type(), node.owner(), ancientVersion, node.wantedVersion()); + Node downgradedNode = new Node(node.hostname(), node.parentHostname(), node.state(), node.type(), node.owner(), ancientVersion, node.wantedVersion()); tester.configServer().nodeRepository().putByHostname(zone.getId(), downgradedNode); break; } |