From a31a20d27a02c7fb80307f6e53b5c98784d893c5 Mon Sep 17 00:00:00 2001 From: Valerij Fredriksen Date: Sat, 23 Nov 2019 17:13:15 +0100 Subject: Create builder for Node --- .../controller/integration/ConfigServerMock.java | 64 ++++---- .../controller/integration/NodeRepositoryMock.java | 179 +++++---------------- .../maintenance/ClusterInfoMaintainerTest.java | 77 ++++----- .../controller/maintenance/OsUpgraderTest.java | 11 +- .../controller/maintenance/SystemUpgraderTest.java | 4 +- .../hosted/controller/restapi/os/OsApiTest.java | 8 +- .../controller/versions/VersionStatusTest.java | 4 +- 7 files changed, 103 insertions(+), 244 deletions(-) (limited to 'controller-server') 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 d466681255a..3ec85f7c8c8 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 @@ -84,13 +84,19 @@ 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), - initialVersion, - initialVersion)); + nodeRepository().putByHostname(zone, new Node.Builder().hostname(hostFor(application, zone)) + .state(Node.State.reserved) + .type(NodeType.tenant) + .owner(application) + .currentVersion(initialVersion) + .wantedVersion(initialVersion) + .vcpu(2).memoryGb(8).diskGb(50).bandwidthGbps(1) + .fastDisk(true) + .serviceState(Node.ServiceState.unorchestrated) + .canonicalFlavor("d-2-8-50") + .clusterId("cluster") + .clusterType(Node.ClusterType.container) + .build()); } public HostName hostFor(ApplicationId application, ZoneId zone) { @@ -110,16 +116,15 @@ public class ConfigServerMock extends AbstractComponent implements ConfigServer for (ZoneId zone : zones) { for (SystemApplication application : applications) { List nodes = IntStream.rangeClosed(1, 3) - .mapToObj(i -> new Node( - HostName.from("node-" + i + "-" + application.id().application() - .value() - + "-" + zone.value()), - Optional.empty(), - Node.State.active, application.nodeType(), - Optional.of(application.id()), - initialVersion, - initialVersion - )) + .mapToObj(i -> new Node.Builder() + .hostname(HostName.from("node-" + i + "-" + application.id().application() + .value() + "-" + zone.value())) + .state(Node.State.active) + .type(application.nodeType()) + .owner(application.id()) + .currentVersion(initialVersion).wantedVersion(initialVersion) + .currentOsVersion(Version.emptyVersion).wantedOsVersion(Version.emptyVersion) + .build()) .collect(Collectors.toList()); nodeRepository().putByHostname(zone, nodes); convergeServices(application.id(), zone); @@ -177,19 +182,9 @@ public class ConfigServerMock extends AbstractComponent implements ConfigServer for (Node node : nodeRepository().list(zone, application)) { Node newNode; if (osVersion) { - 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()); + newNode = new Node.Builder(node).currentOsVersion(version).wantedOsVersion(version).build(); } else { - 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(), - node.bandwidthGbps(), node.fastDisk(), node.cost(), node.canonicalFlavor(), - node.clusterId(), node.clusterType()); + newNode = new Node.Builder(node).currentVersion(version).wantedVersion(version).build(); } nodeRepository().putByHostname(zone, newNode); if (++n == nodeCount) break; @@ -307,13 +302,10 @@ public class ConfigServerMock extends AbstractComponent implements ConfigServer application.activate(); List 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(), - node.currentVersion(), - application.version().get())); + nodeRepository.putByHostname(deployment.zoneId(), new Node.Builder(node) + .state(Node.State.active) + .wantedVersion(application.version().get()) + .build()); } serviceStatus.put(deployment, new ServiceConvergence(deployment.applicationId(), deployment.zoneId(), 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 d3b33581214..c444c3966de 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 @@ -66,52 +66,38 @@ 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")), - Version.fromString("7.42"), - Version.fromString("7.42"), - Version.fromString("7.6"), - Version.fromString("7.6"), - Node.ServiceState.expectedUp, - 0, - 0, - 0, - 0, - 24, - 24, - 500, - 1000, - false, - 10, - "C-2B/24/500", - "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")), - Version.fromString("7.42"), - Version.fromString("7.42"), - Version.fromString("7.6"), - Version.fromString("7.6"), - Node.ServiceState.expectedUp, - 0, - 0, - 0, - 0, - 40, - 24, - 500, - 1000, - false, - 20, - "C-2C/24/500", - "clusterB", - Node.ClusterType.container); + var nodeA = new Node.Builder() + .hostname(HostName.from("hostA")) + .parentHostname(HostName.from("parentHostA")) + .state(Node.State.active) + .type(NodeType.tenant) + .owner(ApplicationId.from("tenant1", "app1", "default")) + .currentVersion(Version.fromString("7.42")) + .wantedVersion(Version.fromString("7.42")) + .currentOsVersion(Version.fromString("7.6")) + .wantedOsVersion(Version.fromString("7.6")) + .serviceState(Node.ServiceState.expectedUp) + .vcpu(24).memoryGb(24).diskGb(500) + .cost(10) + .clusterId("clusterA") + .clusterType(Node.ClusterType.container) + .build(); + var nodeB = new Node.Builder() + .hostname(HostName.from("hostB")) + .parentHostname(HostName.from("parentHostB")) + .state(Node.State.active) + .type(NodeType.tenant) + .owner(ApplicationId.from("tenant2", "app2", "default")) + .currentVersion(Version.fromString("7.42")) + .wantedVersion(Version.fromString("7.42")) + .currentOsVersion(Version.fromString("7.6")) + .wantedOsVersion(Version.fromString("7.6")) + .serviceState(Node.ServiceState.expectedUp) + .vcpu(40).memoryGb(24).diskGb(500) + .cost(20) + .clusterId("clusterB") + .clusterType(Node.ClusterType.container) + .build(); addNodes(zone, List.of(nodeA, nodeB)); } @@ -162,8 +148,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.parentHostname(), node.state(), node.type(), node.owner(), - node.currentVersion(), version)) + .map(node -> new Node.Builder(node).wantedVersion(version).build()) .forEach(node -> putByHostname(zone, node)); } @@ -193,7 +178,7 @@ public class NodeRepositoryMock implements NodeRepository { public void doUpgrade(DeploymentId deployment, Optional hostName, Version version) { modifyNodes(deployment, hostName, node -> { assert node.wantedVersion().equals(version); - return new Node(node.hostname(), node.parentHostname(), node.state(), node.type(), node.owner(), version, version); + return new Node.Builder(node).currentVersion(version).build(); }); } @@ -206,107 +191,19 @@ public class NodeRepositoryMock implements NodeRepository { } public void requestRestart(DeploymentId deployment, Optional hostname) { - modifyNodes(deployment, hostname, node -> new Node(node.hostname(), - node.parentHostname(), - node.state(), - node.type(), - node.owner(), - node.currentVersion(), - node.wantedVersion(), - node.currentOsVersion(), - node.wantedOsVersion(), - node.serviceState(), - node.restartGeneration(), - node.wantedRestartGeneration() + 1, - node.rebootGeneration(), - node.wantedRebootGeneration(), - node.vcpu(), - node.memoryGb(), - node.diskGb(), - node.bandwidthGbps(), - node.fastDisk(), - node.cost(), - node.canonicalFlavor(), - node.clusterId(), - node.clusterType())); + modifyNodes(deployment, hostname, node -> new Node.Builder(node).wantedRestartGeneration(node.wantedRestartGeneration() + 1).build()); } public void doRestart(DeploymentId deployment, Optional hostname) { - modifyNodes(deployment, hostname, node -> new Node(node.hostname(), - node.parentHostname(), - node.state(), - node.type(), - node.owner(), - node.currentVersion(), - node.wantedVersion(), - node.currentOsVersion(), - node.wantedOsVersion(), - node.serviceState(), - node.restartGeneration() + 1, - node.wantedRestartGeneration(), - node.rebootGeneration(), - node.wantedRebootGeneration(), - node.vcpu(), - node.memoryGb(), - node.diskGb(), - node.bandwidthGbps(), - node.fastDisk(), - node.cost(), - node.canonicalFlavor(), - node.clusterId(), - node.clusterType())); + modifyNodes(deployment, hostname, node -> new Node.Builder(node).restartGeneration(node.restartGeneration() + 1).build()); } public void requestReboot(DeploymentId deployment, Optional hostname) { - modifyNodes(deployment, hostname, node -> new Node(node.hostname(), - node.parentHostname(), - node.state(), - node.type(), - node.owner(), - node.currentVersion(), - node.wantedVersion(), - node.currentOsVersion(), - node.wantedOsVersion(), - node.serviceState(), - node.restartGeneration(), - node.wantedRestartGeneration(), - node.rebootGeneration(), - node.wantedRebootGeneration() + 1, - node.vcpu(), - node.memoryGb(), - node.diskGb(), - node.bandwidthGbps(), - node.fastDisk(), - node.cost(), - node.canonicalFlavor(), - node.clusterId(), - node.clusterType())); + modifyNodes(deployment, hostname, node -> new Node.Builder(node).wantedRebootGeneration(node.wantedRebootGeneration() + 1).build()); } public void doReboot(DeploymentId deployment, Optional hostname) { - modifyNodes(deployment, hostname, node -> new Node(node.hostname(), - node.parentHostname(), - node.state(), - node.type(), - node.owner(), - node.currentVersion(), - node.wantedVersion(), - node.currentOsVersion(), - node.wantedOsVersion(), - node.serviceState(), - node.restartGeneration(), - node.wantedRestartGeneration(), - node.rebootGeneration() + 1, - node.wantedRebootGeneration(), - node.vcpu(), - node.memoryGb(), - node.diskGb(), - node.bandwidthGbps(), - node.fastDisk(), - node.cost(), - node.canonicalFlavor(), - node.clusterId(), - node.clusterType())); + modifyNodes(deployment, hostname, node -> new Node.Builder(node).rebootGeneration(node.rebootGeneration() + 1).build()); } } 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 bab0bb0615e..c78be975f7e 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 @@ -16,7 +16,6 @@ import org.junit.Test; import java.time.Duration; import java.util.List; -import java.util.Optional; import static org.junit.Assert.assertEquals; @@ -53,52 +52,36 @@ 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")), - Version.fromString("7.42"), - Version.fromString("7.42"), - Version.fromString("7.6"), - Version.fromString("7.6"), - Node.ServiceState.expectedUp, - 0, - 0, - 0, - 0, - 24, - 24, - 500, - 1000, - false, - 10, - "C-2B/24/500", - "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")), - Version.fromString("7.42"), - Version.fromString("7.42"), - Version.fromString("7.6"), - Version.fromString("7.6"), - Node.ServiceState.expectedUp, - 0, - 0, - 0, - 0, - 40, - 24, - 500, - 1000, - false, - 20, - "C-2C/24/500", - "clusterB", - Node.ClusterType.container); + var nodeA = new Node.Builder() + .hostname(HostName.from("hostA")) + .parentHostname(HostName.from("parentHostA")) + .state(Node.State.active) + .type(NodeType.tenant) + .owner(ApplicationId.from("tenant1", "app1", "default")) + .currentVersion(Version.fromString("7.42")) + .wantedVersion(Version.fromString("7.42")) + .currentOsVersion(Version.fromString("7.6")) + .wantedOsVersion(Version.fromString("7.6")) + .serviceState(Node.ServiceState.expectedUp) + .cost(10) + .clusterId("clusterA") + .clusterType(Node.ClusterType.container) + .build(); + var nodeB = new Node.Builder() + .hostname(HostName.from("hostB")) + .parentHostname(HostName.from("parentHostB")) + .state(Node.State.active) + .type(NodeType.tenant) + .owner(ApplicationId.from("tenant1", "app1", "default")) + .currentVersion(Version.fromString("7.42")) + .wantedVersion(Version.fromString("7.42")) + .currentOsVersion(Version.fromString("7.6")) + .wantedOsVersion(Version.fromString("7.6")) + .serviceState(Node.ServiceState.expectedUp) + .cost(20) + .clusterId("clusterB") + .clusterType(Node.ClusterType.container) + .build(); tester.configServer().nodeRepository().addNodes(zone, List.of(nodeA, nodeB)); } 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 f39bff416dd..cf3d978ef62 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,8 +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.parentHostname(), Node.State.failed, node.type(), node.owner(), - node.currentVersion(), node.wantedVersion())); + nodeRepository().putByHostname(zone, new Node.Builder(node).state(Node.State.failed).build()); } /** Simulate OS upgrade of nodes allocated to application. In a real system this is done by the node itself */ @@ -163,13 +162,7 @@ public class OsUpgraderTest { assertWanted(version, application, zones); for (ZoneId zone : zones) { for (Node node : nodesRequiredToUpgrade(zone, application)) { - nodeRepository().putByHostname(zone, new Node( - 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(), - node.bandwidthGbps(), node.fastDisk(), node.cost(), node.canonicalFlavor(), - node.clusterId(), node.clusterType())); + nodeRepository().putByHostname(zone, new Node.Builder(node).wantedOsVersion(version).currentOsVersion(version).build()); } assertCurrent(version, application, zone); } 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 d83b0d2eafe..08dbd7e48db 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.parentHostname(), node.state(), node.type(), node.owner(), node.wantedVersion(), node.wantedVersion())); + new Node.Builder(node).currentVersion(node.wantedVersion()).build()); } 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.parentHostname(), Node.State.failed, node.type(), node.owner(), node.currentVersion(), node.wantedVersion())); + new Node.Builder(node).state(Node.State.failed).build()); } private void assertSystemVersion(Version version) { 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 3b5b3ba7f9d..7370cf12d5a 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 @@ -144,13 +144,7 @@ public class OsApiTest extends ControllerContainerTest { var targetVersion = nodeRepository().targetVersionsOf(zone).osVersion(application.nodeType()); for (Node node : nodeRepository().list(zone, application.id())) { var version = targetVersion.orElse(node.wantedOsVersion()); - nodeRepository().putByHostname(zone, new Node( - 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(), - node.bandwidthGbps(), node.fastDisk(), node.cost(), node.canonicalFlavor(), - node.clusterId(), node.clusterType())); + nodeRepository().putByHostname(zone, new Node.Builder(node).currentOsVersion(version).wantedOsVersion(version).build()); } } } 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 5456c280d95..ae81b83ccf0 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.parentHostname(), node.state(), node.type(), node.owner(), version1, node.wantedVersion()); + Node upgradedNode = new Node.Builder(node).currentVersion(version1).build(); 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.parentHostname(), node.state(), node.type(), node.owner(), ancientVersion, node.wantedVersion()); + Node downgradedNode = new Node.Builder(node).currentVersion(ancientVersion).build(); tester.configServer().nodeRepository().putByHostname(zone.getId(), downgradedNode); break; } -- cgit v1.2.3