summaryrefslogtreecommitdiffstats
path: root/node-admin
diff options
context:
space:
mode:
authorValerij Fredriksen <valerijf@verizonmedia.com>2020-03-19 17:28:01 +0100
committerValerij Fredriksen <valerijf@verizonmedia.com>2020-03-19 17:28:01 +0100
commit0d56f61422181fd9ad78cf92b53e5211cf30cd3e (patch)
tree914e26be00383ab3c6d914c177d003b91d6173eb /node-admin
parent64e1cd28103bad58c3c6f83f19504e1de5457ecc (diff)
Simplify NodeSpec creation for testing
Diffstat (limited to 'node-admin')
-rw-r--r--node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/configserver/noderepository/NodeSpec.java30
-rw-r--r--node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/nodeagent/NodeAgentContextImpl.java10
-rw-r--r--node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/integrationTests/DockerFailTest.java14
-rw-r--r--node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/integrationTests/DockerTester.java10
-rw-r--r--node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/integrationTests/MultiDockerTest.java23
-rw-r--r--node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/integrationTests/RebootTest.java18
-rw-r--r--node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/integrationTests/RestartTest.java12
-rw-r--r--node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/nodeadmin/NodeAdminStateUpdaterTest.java23
-rw-r--r--node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/nodeagent/NodeAgentImplTest.java93
9 files changed, 72 insertions, 161 deletions
diff --git a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/configserver/noderepository/NodeSpec.java b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/configserver/noderepository/NodeSpec.java
index 0e8caf728f1..09496b88aeb 100644
--- a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/configserver/noderepository/NodeSpec.java
+++ b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/configserver/noderepository/NodeSpec.java
@@ -9,6 +9,7 @@ import com.yahoo.config.provision.NodeResources;
import com.yahoo.config.provision.NodeType;
import java.time.Instant;
+import java.util.EnumSet;
import java.util.Objects;
import java.util.Optional;
import java.util.Set;
@@ -682,5 +683,34 @@ public class NodeSpec {
reports, parentHostname);
}
+
+ public static Builder testSpec(String hostname) {
+ return testSpec(hostname, NodeState.active);
+ }
+
+ /**
+ * Creates a NodeSpec.Builder that has the given hostname, in a given state, and some
+ * reasonable values for the remaining required NodeSpec fields.
+ */
+ public static Builder testSpec(String hostname, NodeState state) {
+ Builder builder = new Builder()
+ .hostname(hostname)
+ .state(state)
+ .type(NodeType.tenant)
+ .flavor("d-2-8-50")
+ .resources(new NodeResources(2, 8, 50, 10));
+
+ // Set the required allocated fields
+ if (EnumSet.of(NodeState.active, NodeState.inactive, NodeState.reserved).contains(state)) {
+ builder .owner(ApplicationId.defaultId())
+ .membership(new NodeMembership("container", "my-id", "group", 0, false))
+ .wantedVespaVersion(Version.fromString("7.1.1"))
+ .wantedDockerImage(DockerImage.fromString("docker.domain.tld/repo/image:7.1.1"))
+ .currentRestartGeneration(0)
+ .wantedRestartGeneration(0);
+ }
+
+ return builder;
+ }
}
}
diff --git a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/nodeagent/NodeAgentContextImpl.java b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/nodeagent/NodeAgentContextImpl.java
index 02e01264a57..4585d72d6de 100644
--- a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/nodeagent/NodeAgentContextImpl.java
+++ b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/nodeagent/NodeAgentContextImpl.java
@@ -2,7 +2,6 @@
package com.yahoo.vespa.hosted.node.admin.nodeagent;
import com.yahoo.config.provision.CloudName;
-import com.yahoo.config.provision.NodeType;
import com.yahoo.config.provision.SystemName;
import com.yahoo.config.provision.zone.ZoneApi;
import com.yahoo.config.provision.zone.ZoneId;
@@ -11,7 +10,6 @@ import com.yahoo.vespa.athenz.api.AthenzService;
import com.yahoo.vespa.hosted.dockerapi.ContainerName;
import com.yahoo.vespa.hosted.node.admin.configserver.noderepository.Acl;
import com.yahoo.vespa.hosted.node.admin.configserver.noderepository.NodeSpec;
-import com.yahoo.vespa.hosted.node.admin.configserver.noderepository.NodeState;
import com.yahoo.vespa.hosted.node.admin.docker.DockerNetworking;
import java.nio.file.FileSystem;
@@ -187,7 +185,7 @@ public class NodeAgentContextImpl implements NodeAgentContext {
/** For testing only! */
public static class Builder {
- private NodeSpec.Builder nodeSpecBuilder = new NodeSpec.Builder();
+ private NodeSpec.Builder nodeSpecBuilder;
private Acl acl;
private AthenzIdentity identity;
private DockerNetworking dockerNetworking;
@@ -209,11 +207,7 @@ public class NodeAgentContextImpl implements NodeAgentContext {
* if you want to control the entire NodeSpec.
*/
public Builder(String hostname) {
- this.nodeSpecBuilder
- .hostname(hostname)
- .state(NodeState.active)
- .type(NodeType.tenant)
- .flavor("d-2-8-50");
+ this.nodeSpecBuilder = NodeSpec.Builder.testSpec(hostname);
}
public Builder nodeSpecBuilder(Function<NodeSpec.Builder, NodeSpec.Builder> nodeSpecBuilderModifier) {
diff --git a/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/integrationTests/DockerFailTest.java b/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/integrationTests/DockerFailTest.java
index 7776bf1f224..0ed52cae5b8 100644
--- a/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/integrationTests/DockerFailTest.java
+++ b/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/integrationTests/DockerFailTest.java
@@ -2,10 +2,8 @@
package com.yahoo.vespa.hosted.node.admin.integrationTests;
import com.yahoo.config.provision.DockerImage;
-import com.yahoo.config.provision.NodeType;
import com.yahoo.vespa.hosted.dockerapi.ContainerName;
import com.yahoo.vespa.hosted.node.admin.configserver.noderepository.NodeSpec;
-import com.yahoo.vespa.hosted.node.admin.configserver.noderepository.NodeState;
import org.junit.Test;
import static org.mockito.ArgumentMatchers.any;
@@ -24,18 +22,10 @@ public class DockerFailTest {
final DockerImage dockerImage = DockerImage.fromString("dockerImage");
final ContainerName containerName = new ContainerName("host1");
final String hostname = "host1.test.yahoo.com";
- tester.addChildNodeRepositoryNode(new NodeSpec.Builder()
- .hostname(hostname)
+ tester.addChildNodeRepositoryNode(NodeSpec.Builder
+ .testSpec(hostname)
.wantedDockerImage(dockerImage)
.currentDockerImage(dockerImage)
- .state(NodeState.active)
- .type(NodeType.tenant)
- .flavor("docker")
- .wantedRestartGeneration(1L)
- .currentRestartGeneration(1L)
- .vcpu(1)
- .memoryGb(1)
- .diskGb(1)
.build());
tester.inOrder(tester.docker).createContainerCommand(eq(dockerImage), eq(containerName));
diff --git a/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/integrationTests/DockerTester.java b/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/integrationTests/DockerTester.java
index ea41ab21b9d..9b509829ba2 100644
--- a/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/integrationTests/DockerTester.java
+++ b/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/integrationTests/DockerTester.java
@@ -7,7 +7,6 @@ import com.yahoo.vespa.flags.InMemoryFlagSource;
import com.yahoo.vespa.hosted.dockerapi.Docker;
import com.yahoo.vespa.hosted.dockerapi.metrics.Metrics;
import com.yahoo.vespa.hosted.node.admin.configserver.noderepository.NodeSpec;
-import com.yahoo.vespa.hosted.node.admin.configserver.noderepository.NodeState;
import com.yahoo.vespa.hosted.node.admin.configserver.orchestrator.Orchestrator;
import com.yahoo.vespa.hosted.node.admin.docker.DockerOperations;
import com.yahoo.vespa.hosted.node.admin.docker.DockerOperationsImpl;
@@ -76,14 +75,7 @@ public class DockerTester implements AutoCloseable {
TerminalImpl terminal = new TerminalImpl(command -> new TestChildProcess2(0, ""));
- NodeSpec hostSpec = new NodeSpec.Builder()
- .hostname(HOST_HOSTNAME.value())
- .state(NodeState.active)
- .type(NodeType.host)
- .flavor("default")
- .wantedRestartGeneration(1L)
- .currentRestartGeneration(1L)
- .build();
+ NodeSpec hostSpec = NodeSpec.Builder.testSpec(HOST_HOSTNAME.value()).type(NodeType.host).build();
nodeRepository.updateNodeRepositoryNode(hostSpec);
Clock clock = Clock.systemUTC();
diff --git a/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/integrationTests/MultiDockerTest.java b/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/integrationTests/MultiDockerTest.java
index a09c6a9e907..e5156e68810 100644
--- a/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/integrationTests/MultiDockerTest.java
+++ b/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/integrationTests/MultiDockerTest.java
@@ -2,7 +2,6 @@
package com.yahoo.vespa.hosted.node.admin.integrationTests;
import com.yahoo.config.provision.DockerImage;
-import com.yahoo.config.provision.NodeType;
import com.yahoo.vespa.hosted.dockerapi.ContainerName;
import com.yahoo.vespa.hosted.node.admin.configserver.noderepository.NodeAttributes;
import com.yahoo.vespa.hosted.node.admin.configserver.noderepository.NodeSpec;
@@ -25,13 +24,7 @@ public class MultiDockerTest {
NodeSpec nodeSpec2 = addAndWaitForNode(
tester, "host2.test.yahoo.com", DockerImage.fromString("image2"));
- tester.addChildNodeRepositoryNode(
- new NodeSpec.Builder(nodeSpec2)
- .state(NodeState.dirty)
- .vcpu(1)
- .memoryGb(1)
- .diskGb(1)
- .build());
+ tester.addChildNodeRepositoryNode(NodeSpec.Builder.testSpec(nodeSpec2.hostname(), NodeState.dirty).build());
tester.inOrder(tester.docker).deleteContainer(eq(new ContainerName("host2")));
tester.inOrder(tester.storageMaintainer).archiveNodeStorage(
@@ -43,19 +36,7 @@ public class MultiDockerTest {
}
private NodeSpec addAndWaitForNode(DockerTester tester, String hostName, DockerImage dockerImage) {
- NodeSpec nodeSpec = new NodeSpec.Builder()
- .hostname(hostName)
- .wantedDockerImage(dockerImage)
- .state(NodeState.active)
- .type(NodeType.tenant)
- .flavor("docker")
- .wantedRestartGeneration(1L)
- .currentRestartGeneration(1L)
- .vcpu(2)
- .memoryGb(4)
- .diskGb(1)
- .build();
-
+ NodeSpec nodeSpec = NodeSpec.Builder.testSpec(hostName).wantedDockerImage(dockerImage).build();
tester.addChildNodeRepositoryNode(nodeSpec);
ContainerName containerName = ContainerName.fromHostname(hostName);
diff --git a/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/integrationTests/RebootTest.java b/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/integrationTests/RebootTest.java
index d1778982043..30f23de15bf 100644
--- a/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/integrationTests/RebootTest.java
+++ b/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/integrationTests/RebootTest.java
@@ -1,12 +1,9 @@
// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.node.admin.integrationTests;
-import com.yahoo.component.Version;
import com.yahoo.config.provision.DockerImage;
-import com.yahoo.config.provision.NodeType;
import com.yahoo.vespa.hosted.dockerapi.ContainerName;
import com.yahoo.vespa.hosted.node.admin.configserver.noderepository.NodeSpec;
-import com.yahoo.vespa.hosted.node.admin.configserver.noderepository.NodeState;
import com.yahoo.vespa.hosted.node.admin.nodeadmin.NodeAdminStateUpdater;
import org.junit.Test;
@@ -31,7 +28,7 @@ public class RebootTest {
@Test
public void test() {
try (DockerTester tester = new DockerTester()) {
- tester.addChildNodeRepositoryNode(createNodeRepositoryNode());
+ tester.addChildNodeRepositoryNode(NodeSpec.Builder.testSpec(hostname).wantedDockerImage(dockerImage).build());
tester.inOrder(tester.docker).createContainerCommand(eq(dockerImage), eq(new ContainerName("host1")));
@@ -46,17 +43,4 @@ public class RebootTest {
assertTrue(tester.nodeAdmin.setFrozen(true));
}
}
-
- private NodeSpec createNodeRepositoryNode() {
- return new NodeSpec.Builder()
- .hostname(hostname)
- .wantedDockerImage(dockerImage)
- .state(NodeState.active)
- .type(NodeType.tenant)
- .flavor("docker")
- .currentVespaVersion(Version.fromString("6.50.0"))
- .wantedRestartGeneration(1L)
- .currentRestartGeneration(1L)
- .build();
- }
}
diff --git a/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/integrationTests/RestartTest.java b/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/integrationTests/RestartTest.java
index bfc54cac045..dd727d102e0 100644
--- a/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/integrationTests/RestartTest.java
+++ b/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/integrationTests/RestartTest.java
@@ -2,11 +2,9 @@
package com.yahoo.vespa.hosted.node.admin.integrationTests;
import com.yahoo.config.provision.DockerImage;
-import com.yahoo.config.provision.NodeType;
import com.yahoo.vespa.hosted.dockerapi.ContainerName;
import com.yahoo.vespa.hosted.node.admin.configserver.noderepository.NodeAttributes;
import com.yahoo.vespa.hosted.node.admin.configserver.noderepository.NodeSpec;
-import com.yahoo.vespa.hosted.node.admin.configserver.noderepository.NodeState;
import org.junit.Test;
import static com.yahoo.vespa.hosted.node.admin.integrationTests.DockerTester.NODE_PROGRAM;
@@ -26,15 +24,7 @@ public class RestartTest {
String hostname = "host1.test.yahoo.com";
DockerImage dockerImage = DockerImage.fromString("dockerImage:1.2.3");
- tester.addChildNodeRepositoryNode(new NodeSpec.Builder()
- .hostname(hostname)
- .state(NodeState.active)
- .wantedDockerImage(dockerImage)
- .type(NodeType.tenant)
- .flavor("docker")
- .wantedRestartGeneration(1)
- .currentRestartGeneration(1)
- .build());
+ tester.addChildNodeRepositoryNode(NodeSpec.Builder.testSpec(hostname).wantedDockerImage(dockerImage).build());
tester.inOrder(tester.docker).createContainerCommand(eq(dockerImage), eq(new ContainerName("host1")));
tester.inOrder(tester.nodeRepository).updateNodeAttributes(
diff --git a/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/nodeadmin/NodeAdminStateUpdaterTest.java b/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/nodeadmin/NodeAdminStateUpdaterTest.java
index 9a25e4188f9..36530ff014c 100644
--- a/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/nodeadmin/NodeAdminStateUpdaterTest.java
+++ b/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/nodeadmin/NodeAdminStateUpdaterTest.java
@@ -2,7 +2,6 @@
package com.yahoo.vespa.hosted.node.admin.nodeadmin;
import com.yahoo.config.provision.HostName;
-import com.yahoo.config.provision.NodeType;
import com.yahoo.test.ManualClock;
import com.yahoo.vespa.hosted.node.admin.configserver.noderepository.Acl;
import com.yahoo.vespa.hosted.node.admin.configserver.noderepository.NodeRepository;
@@ -258,28 +257,12 @@ public class NodeAdminStateUpdaterTest {
private void mockNodeRepo(NodeState hostState, int numberOfNodes) {
List<NodeSpec> containersToRun = IntStream.range(1, numberOfNodes + 1)
- .mapToObj(i -> new NodeSpec.Builder()
- .hostname("host" + i + ".yahoo.com")
- .state(NodeState.active)
- .type(NodeType.tenant)
- .flavor("docker")
- .vcpu(1)
- .memoryGb(1)
- .diskGb(1)
- .build())
+ .mapToObj(i -> NodeSpec.Builder.testSpec("host" + i + ".yahoo.com").build())
.collect(Collectors.toList());
when(nodeRepository.getNodes(eq(hostHostname.value()))).thenReturn(containersToRun);
-
- when(nodeRepository.getNode(eq(hostHostname.value()))).thenReturn(new NodeSpec.Builder()
- .hostname(hostHostname.value())
- .state(hostState)
- .type(NodeType.tenant)
- .flavor("default")
- .vcpu(1)
- .memoryGb(1)
- .diskGb(1)
- .build());
+ when(nodeRepository.getNode(eq(hostHostname.value()))).thenReturn(
+ NodeSpec.Builder.testSpec(hostHostname.value(), hostState).build());
}
private void mockAcl(Acl acl, int... nodeIds) {
diff --git a/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/nodeagent/NodeAgentImplTest.java b/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/nodeagent/NodeAgentImplTest.java
index 06d15a3f577..b895300d7b1 100644
--- a/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/nodeagent/NodeAgentImplTest.java
+++ b/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/nodeagent/NodeAgentImplTest.java
@@ -52,13 +52,7 @@ import static org.mockito.Mockito.when;
public class NodeAgentImplTest {
private static final NodeResources resources = new NodeResources(2, 16, 250, 1, NodeResources.DiskSpeed.fast, NodeResources.StorageType.local);
private static final Version vespaVersion = Version.fromString("1.2.3");
-
- private final String hostName = "host1.test.yahoo.com";
- private final NodeSpec.Builder nodeBuilder = new NodeSpec.Builder()
- .hostname(hostName)
- .type(NodeType.tenant)
- .flavor("docker")
- .resources(resources);
+ private static final String hostName = "host1.test.yahoo.com";
private final NodeAgentContextSupplier contextSupplier = mock(NodeAgentContextSupplier.class);
private final DockerImage dockerImage = DockerImage.fromString("dockerImage");
@@ -75,11 +69,9 @@ public class NodeAgentImplTest {
@Test
public void upToDateContainerIsUntouched() {
- final NodeSpec node = nodeBuilder
- .state(NodeState.active)
+ final NodeSpec node = nodeBuilder(NodeState.active)
.wantedDockerImage(dockerImage).currentDockerImage(dockerImage)
.wantedVespaVersion(vespaVersion).currentVespaVersion(vespaVersion)
- .wantedRestartGeneration(1).currentRestartGeneration(1)
.allowedToBeDown(false)
.build();
@@ -104,11 +96,9 @@ public class NodeAgentImplTest {
@Test
public void verifyRemoveOldFilesIfDiskFull() {
- final NodeSpec node = nodeBuilder
- .state(NodeState.active)
+ final NodeSpec node = nodeBuilder(NodeState.active)
.wantedDockerImage(dockerImage).currentDockerImage(dockerImage)
.wantedVespaVersion(vespaVersion).currentVespaVersion(vespaVersion)
- .wantedRestartGeneration(1).currentRestartGeneration(1)
.build();
NodeAgentContext context = createContext(node);
@@ -124,11 +114,9 @@ public class NodeAgentImplTest {
@Test
public void startsAfterStoppingServices() {
final InOrder inOrder = inOrder(dockerOperations);
- final NodeSpec node = nodeBuilder
- .state(NodeState.active)
+ final NodeSpec node = nodeBuilder(NodeState.active)
.wantedDockerImage(dockerImage).currentDockerImage(dockerImage)
.wantedVespaVersion(vespaVersion).currentVespaVersion(vespaVersion)
- .wantedRestartGeneration(1).currentRestartGeneration(1)
.build();
NodeAgentContext context = createContext(node);
@@ -160,11 +148,9 @@ public class NodeAgentImplTest {
@Test
public void absentContainerCausesStart() {
- final NodeSpec node = nodeBuilder
- .state(NodeState.active)
+ final NodeSpec node = nodeBuilder(NodeState.active)
.wantedDockerImage(dockerImage)
.wantedVespaVersion(vespaVersion)
- .wantedRestartGeneration(1).currentRestartGeneration(1)
.build();
NodeAgentContext context = createContext(node);
@@ -195,11 +181,9 @@ public class NodeAgentImplTest {
@Test
public void containerIsNotStoppedIfNewImageMustBePulled() {
final DockerImage newDockerImage = DockerImage.fromString("new-image");
- final NodeSpec node = nodeBuilder
- .state(NodeState.active)
+ final NodeSpec node = nodeBuilder(NodeState.active)
.wantedDockerImage(newDockerImage).currentDockerImage(dockerImage)
.wantedVespaVersion(vespaVersion).currentVespaVersion(vespaVersion)
- .wantedRestartGeneration(1).currentRestartGeneration(1)
.build();
NodeAgentContext context = createContext(node);
@@ -221,11 +205,9 @@ public class NodeAgentImplTest {
@Test
public void containerIsUpdatedIfCpuChanged() {
- NodeSpec.Builder specBuilder = nodeBuilder
- .state(NodeState.active)
+ NodeSpec.Builder specBuilder = nodeBuilder(NodeState.active)
.wantedDockerImage(dockerImage).currentDockerImage(dockerImage)
.wantedVespaVersion(vespaVersion).currentVespaVersion(vespaVersion)
- .wantedRestartGeneration(1).currentRestartGeneration(1)
.allowedToBeDown(false);
NodeAgentContext firstContext = createContext(specBuilder.build());
@@ -271,8 +253,7 @@ public class NodeAgentImplTest {
@Test
public void containerIsRecreatedIfMemoryChanged() {
- NodeSpec.Builder specBuilder = nodeBuilder
- .state(NodeState.active)
+ NodeSpec.Builder specBuilder = nodeBuilder(NodeState.active)
.wantedDockerImage(dockerImage).currentDockerImage(dockerImage)
.wantedVespaVersion(vespaVersion).currentVespaVersion(vespaVersion)
.wantedRestartGeneration(2).currentRestartGeneration(1);
@@ -304,8 +285,7 @@ public class NodeAgentImplTest {
@Test
public void noRestartIfOrchestratorSuspendFails() {
- final NodeSpec node = nodeBuilder
- .state(NodeState.active)
+ final NodeSpec node = nodeBuilder(NodeState.active)
.wantedDockerImage(dockerImage).currentDockerImage(dockerImage)
.wantedVespaVersion(vespaVersion).currentVespaVersion(vespaVersion)
.wantedRestartGeneration(2).currentRestartGeneration(1)
@@ -332,11 +312,9 @@ public class NodeAgentImplTest {
@Test
public void recreatesContainerIfRebootWanted() {
final long wantedRebootGeneration = 2;
- final NodeSpec node = nodeBuilder
- .state(NodeState.active)
+ final NodeSpec node = nodeBuilder(NodeState.active)
.wantedDockerImage(dockerImage).currentDockerImage(dockerImage)
.wantedVespaVersion(vespaVersion).currentVespaVersion(vespaVersion)
- .wantedRestartGeneration(1).currentRestartGeneration(1)
.wantedRebootGeneration(wantedRebootGeneration).currentRebootGeneration(1)
.build();
@@ -373,8 +351,7 @@ public class NodeAgentImplTest {
@Test
public void failedNodeRunningContainerShouldStillBeRunning() {
- final NodeSpec node = nodeBuilder
- .state(NodeState.failed)
+ final NodeSpec node = nodeBuilder(NodeState.failed)
.wantedDockerImage(dockerImage).currentDockerImage(dockerImage)
.wantedVespaVersion(vespaVersion).currentVespaVersion(vespaVersion)
.build();
@@ -393,9 +370,7 @@ public class NodeAgentImplTest {
@Test
public void readyNodeLeadsToNoAction() {
- final NodeSpec node = nodeBuilder
- .state(NodeState.ready)
- .build();
+ final NodeSpec node = nodeBuilder(NodeState.ready).build();
NodeAgentContext context = createContext(node);
NodeAgentImpl nodeAgent = makeNodeAgent(null,false);
@@ -417,8 +392,7 @@ public class NodeAgentImplTest {
@Test
public void inactiveNodeRunningContainerShouldStillBeRunning() {
- final NodeSpec node = nodeBuilder
- .state(NodeState.inactive)
+ final NodeSpec node = nodeBuilder(NodeState.inactive)
.wantedDockerImage(dockerImage).currentDockerImage(dockerImage)
.wantedVespaVersion(vespaVersion).currentVespaVersion(vespaVersion)
.build();
@@ -439,8 +413,7 @@ public class NodeAgentImplTest {
@Test
public void reservedNodeDoesNotUpdateNodeRepoWithVersion() {
- final NodeSpec node = nodeBuilder
- .state(NodeState.reserved)
+ final NodeSpec node = nodeBuilder(NodeState.reserved)
.wantedDockerImage(dockerImage)
.wantedVespaVersion(vespaVersion)
.build();
@@ -456,14 +429,12 @@ public class NodeAgentImplTest {
}
private void nodeRunningContainerIsTakenDownAndCleanedAndRecycled(NodeState nodeState, Optional<Long> wantedRestartGeneration) {
- wantedRestartGeneration.ifPresent(restartGeneration -> nodeBuilder
+ NodeSpec.Builder builder = nodeBuilder(nodeState)
+ .wantedDockerImage(dockerImage).currentDockerImage(dockerImage);
+ wantedRestartGeneration.ifPresent(restartGeneration -> builder
.wantedRestartGeneration(restartGeneration).currentRestartGeneration(restartGeneration));
- final NodeSpec node = nodeBuilder
- .state(nodeState)
- .wantedDockerImage(dockerImage).currentDockerImage(dockerImage)
- .build();
-
+ NodeSpec node = builder.build();
NodeAgentContext context = createContext(node);
NodeAgentImpl nodeAgent = makeNodeAgent(dockerImage, true);
@@ -501,9 +472,8 @@ public class NodeAgentImplTest {
@Test
public void provisionedNodeIsMarkedAsDirty() {
- final NodeSpec node = nodeBuilder
+ final NodeSpec node = nodeBuilder(NodeState.provisioned)
.wantedDockerImage(dockerImage)
- .state(NodeState.provisioned)
.build();
NodeAgentContext context = createContext(node);
@@ -516,8 +486,7 @@ public class NodeAgentImplTest {
@Test
public void testRestartDeadContainerAfterNodeAdminRestart() {
- final NodeSpec node = nodeBuilder
- .state(NodeState.active)
+ final NodeSpec node = nodeBuilder(NodeState.active)
.currentDockerImage(dockerImage).wantedDockerImage(dockerImage)
.currentVespaVersion(vespaVersion)
.build();
@@ -537,8 +506,7 @@ public class NodeAgentImplTest {
@Test
public void resumeProgramRunsUntilSuccess() {
- final NodeSpec node = nodeBuilder
- .state(NodeState.active)
+ final NodeSpec node = nodeBuilder(NodeState.active)
.wantedDockerImage(dockerImage).currentDockerImage(dockerImage)
.currentVespaVersion(vespaVersion)
.wantedRestartGeneration(1).currentRestartGeneration(1)
@@ -575,8 +543,7 @@ public class NodeAgentImplTest {
@Test
public void start_container_subtask_failure_leads_to_container_restart() {
- final NodeSpec node = nodeBuilder
- .state(NodeState.active)
+ final NodeSpec node = nodeBuilder(NodeState.active)
.wantedDockerImage(dockerImage)
.wantedVespaVersion(vespaVersion)
.wantedRestartGeneration(1).currentRestartGeneration(1)
@@ -612,8 +579,7 @@ public class NodeAgentImplTest {
@Test
public void testRunningConfigServer() {
- final NodeSpec node = nodeBuilder
- .state(NodeState.active)
+ final NodeSpec node = nodeBuilder(NodeState.active)
.type(NodeType.config)
.wantedDockerImage(dockerImage)
.wantedVespaVersion(vespaVersion)
@@ -656,11 +622,9 @@ public class NodeAgentImplTest {
@Test
public void initial_cpu_cap_test() {
- NodeSpec.Builder specBuilder = nodeBuilder
- .state(NodeState.active)
+ NodeSpec.Builder specBuilder = nodeBuilder(NodeState.active)
.wantedDockerImage(dockerImage).currentDockerImage(dockerImage)
- .wantedVespaVersion(vespaVersion).currentVespaVersion(vespaVersion)
- .wantedRestartGeneration(1).currentRestartGeneration(1);
+ .wantedVespaVersion(vespaVersion).currentVespaVersion(vespaVersion);
NodeAgentContext context = createContext(specBuilder.build());
NodeAgentImpl nodeAgent = makeNodeAgent(null, false, Duration.ofSeconds(30));
@@ -712,8 +676,7 @@ public class NodeAgentImplTest {
@Test
public void resumes_normally_if_container_is_already_capped_on_start() {
- NodeSpec.Builder specBuilder = nodeBuilder
- .state(NodeState.active)
+ NodeSpec.Builder specBuilder = nodeBuilder(NodeState.active)
.wantedDockerImage(dockerImage).currentDockerImage(dockerImage)
.wantedVespaVersion(vespaVersion).currentVespaVersion(vespaVersion)
.wantedRestartGeneration(1).currentRestartGeneration(1);
@@ -814,4 +777,8 @@ public class NodeAgentImplTest {
private NodeAgentContext createContext(NodeSpec nodeSpec) {
return new NodeAgentContextImpl.Builder(nodeSpec).build();
}
+
+ private NodeSpec.Builder nodeBuilder(NodeState state) {
+ return NodeSpec.Builder.testSpec(hostName, state).resources(resources);
+ }
}