summaryrefslogtreecommitdiffstats
path: root/node-admin
diff options
context:
space:
mode:
authorValerij Fredriksen <valerijf@oath.com>2018-08-09 15:41:10 +0200
committerValerij Fredriksen <valerijf@oath.com>2018-08-09 15:41:10 +0200
commit65e8cce84c50607cef70e52cf542357ac6328158 (patch)
treeba2a7cefdb0ff9fb4e3892e6b95c008948f418d3 /node-admin
parent97bd16178e837815b0b05fc39761cfae0c1f9a61 (diff)
Fix NodeRepoMock to only return children
Diffstat (limited to 'node-admin')
-rw-r--r--node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/integrationTests/DockerFailTest.java2
-rw-r--r--node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/integrationTests/DockerTester.java16
-rw-r--r--node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/integrationTests/MultiDockerTest.java4
-rw-r--r--node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/integrationTests/NodeRepoMock.java12
-rw-r--r--node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/integrationTests/NodeStateTest.java8
-rw-r--r--node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/integrationTests/RebootTest.java2
-rw-r--r--node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/integrationTests/RestartTest.java4
7 files changed, 26 insertions, 22 deletions
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 a4de2e9ffe2..6b49ade8d5c 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
@@ -28,7 +28,7 @@ public class DockerFailTest {
.minMainMemoryAvailableGb(1)
.minDiskAvailableGb(1)
.build();
- dockerTester.addNodeRepositoryNode(nodeSpec);
+ dockerTester.addChildNodeRepositoryNode(nodeSpec);
// Wait for node admin to be notified with node repo state and the docker container has been started
while (dockerTester.nodeAdmin.getListOfHosts().size() == 0) {
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 1e80388d071..e8236bc826e 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
@@ -41,8 +41,9 @@ import static org.mockito.Mockito.when;
public class DockerTester implements AutoCloseable {
private static final Duration NODE_AGENT_SCAN_INTERVAL = Duration.ofMillis(100);
private static final Duration NODE_ADMIN_CONVERGE_STATE_INTERVAL = Duration.ofMillis(10);
- private static final Path pathToVespaHome = Paths.get("/opt/vespa");
- static final String NODE_PROGRAM = pathToVespaHome.resolve("bin/vespa-nodectl").toString();
+ private static final Path PATH_TO_VESPA_HOME = Paths.get("/opt/vespa");
+ static final String NODE_PROGRAM = PATH_TO_VESPA_HOME.resolve("bin/vespa-nodectl").toString();
+ static final String DOCKER_HOST_HOSTNAME = "host.domain.tld";
final CallOrderVerifier callOrderVerifier = new CallOrderVerifier();
final Docker dockerMock = new DockerMock(callOrderVerifier);
@@ -66,7 +67,7 @@ public class DockerTester implements AutoCloseable {
.region("us-east-1")
.environment("prod")
.system("main")
- .pathResolver(new PathResolver(pathToVespaHome, Paths.get("/tmp"), Paths.get("/tmp")))
+ .pathResolver(new PathResolver(PATH_TO_VESPA_HOME, Paths.get("/tmp"), Paths.get("/tmp")))
.cloud("mycloud")
.build();
Clock clock = Clock.systemUTC();
@@ -81,13 +82,16 @@ public class DockerTester implements AutoCloseable {
orchestratorMock, dockerOperations, storageMaintainer, aclMaintainer, environment, clock, NODE_AGENT_SCAN_INTERVAL, athenzCredentialsMaintainer);
nodeAdmin = new NodeAdminImpl(dockerOperations, nodeAgentFactory, storageMaintainer, aclMaintainer, mr, Clock.systemUTC());
nodeAdminStateUpdater = new NodeAdminStateUpdaterImpl(nodeRepositoryMock, orchestratorMock, storageMaintainer,
- nodeAdmin, "basehostname", clock, NODE_ADMIN_CONVERGE_STATE_INTERVAL,
+ nodeAdmin, DOCKER_HOST_HOSTNAME, clock, NODE_ADMIN_CONVERGE_STATE_INTERVAL,
Optional.of(new ClassLocking()));
nodeAdminStateUpdater.start();
}
- void addNodeRepositoryNode(NodeSpec nodeSpec) {
- nodeRepositoryMock.updateNodeRepositoryNode(nodeSpec);
+ /** Adds a node to node-repository mock that is running on this host */
+ void addChildNodeRepositoryNode(NodeSpec nodeSpec) {
+ nodeRepositoryMock.updateNodeRepositoryNode(new NodeSpec.Builder(nodeSpec)
+ .parentHostname(DOCKER_HOST_HOSTNAME)
+ .build());
}
@Override
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 8987a7d6af3..db0b8d1ed6c 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
@@ -20,7 +20,7 @@ public class MultiDockerTest {
NodeSpec nodeSpec2 = addAndWaitForNode(
dockerTester, "host2.test.yahoo.com", new DockerImage("image2"));
- dockerTester.addNodeRepositoryNode(
+ dockerTester.addChildNodeRepositoryNode(
new NodeSpec.Builder(nodeSpec2)
.state(Node.State.dirty)
.minCpuCores(1)
@@ -77,7 +77,7 @@ public class MultiDockerTest {
.minDiskAvailableGb(1)
.build();
- tester.addNodeRepositoryNode(nodeSpec);
+ tester.addChildNodeRepositoryNode(nodeSpec);
// Wait for node admin to be notified with node repo state and the docker container has been started
while (tester.nodeAdmin.getListOfHosts().size() != tester.nodeRepositoryMock.getNumberOfContainerSpecs()) {
diff --git a/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/integrationTests/NodeRepoMock.java b/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/integrationTests/NodeRepoMock.java
index 68fa2bc7a1a..50aaaf1e123 100644
--- a/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/integrationTests/NodeRepoMock.java
+++ b/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/integrationTests/NodeRepoMock.java
@@ -8,11 +8,11 @@ import com.yahoo.vespa.hosted.node.admin.configserver.noderepository.NodeAttribu
import com.yahoo.vespa.hosted.node.admin.configserver.noderepository.Acl;
import com.yahoo.vespa.hosted.provision.Node;
-import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Optional;
+import java.util.stream.Collectors;
/**
* Mock with some simple logic
@@ -37,7 +37,9 @@ public class NodeRepoMock implements NodeRepository {
@Override
public List<NodeSpec> getNodes(String baseHostName) {
synchronized (monitor) {
- return new ArrayList<>(nodeRepositoryNodesByHostname.values());
+ return nodeRepositoryNodesByHostname.values().stream()
+ .filter(node -> baseHostName.equals(node.getParentHostname().orElse(null)))
+ .collect(Collectors.toList());
}
}
@@ -64,12 +66,10 @@ public class NodeRepoMock implements NodeRepository {
@Override
public void setNodeState(String hostName, Node.State nodeState) {
- Optional<NodeSpec> node = getOptionalNode(hostName);
-
synchronized (monitor) {
- node.ifPresent(nrn -> updateNodeRepositoryNode(new NodeSpec.Builder(nrn)
+ updateNodeRepositoryNode(new NodeSpec.Builder(getNode(hostName))
.state(nodeState)
- .build()));
+ .build());
callOrderVerifier.add("setNodeState " + hostName + " to " + nodeState);
}
}
diff --git a/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/integrationTests/NodeStateTest.java b/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/integrationTests/NodeStateTest.java
index 875978a8726..1936c619519 100644
--- a/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/integrationTests/NodeStateTest.java
+++ b/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/integrationTests/NodeStateTest.java
@@ -27,7 +27,7 @@ public class NodeStateTest {
.build();
private void setup(DockerTester tester) throws InterruptedException {
- tester.addNodeRepositoryNode(initialNodeSpec);
+ tester.addChildNodeRepositoryNode(initialNodeSpec);
// Wait for node admin to be notified with node repo state and the docker container has been started
while (tester.nodeAdmin.getListOfHosts().size() == 0) {
@@ -45,7 +45,7 @@ public class NodeStateTest {
try (DockerTester dockerTester = new DockerTester()) {
setup(dockerTester);
// Change node state to dirty
- dockerTester.addNodeRepositoryNode(new NodeSpec.Builder(initialNodeSpec)
+ dockerTester.addChildNodeRepositoryNode(new NodeSpec.Builder(initialNodeSpec)
.state(Node.State.dirty)
.minCpuCores(1)
.minMainMemoryAvailableGb(1)
@@ -74,7 +74,7 @@ public class NodeStateTest {
DockerImage newDockerImage = new DockerImage("newDockerImage");
// Change node state to inactive and change the wanted docker image
- dockerTester.addNodeRepositoryNode(new NodeSpec.Builder(initialNodeSpec)
+ dockerTester.addChildNodeRepositoryNode(new NodeSpec.Builder(initialNodeSpec)
.wantedDockerImage(newDockerImage)
.state(Node.State.inactive)
.minCpuCores(1)
@@ -89,7 +89,7 @@ public class NodeStateTest {
// Change node state to active
- dockerTester.addNodeRepositoryNode(new NodeSpec.Builder(initialNodeSpec)
+ dockerTester.addChildNodeRepositoryNode(new NodeSpec.Builder(initialNodeSpec)
.wantedDockerImage(newDockerImage)
.state(Node.State.active)
.minCpuCores(1)
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 a1af36f9c21..745582cfcd3 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
@@ -25,7 +25,7 @@ public class RebootTest {
public void test() throws InterruptedException {
try (DockerTester dockerTester = new DockerTester()) {
- dockerTester.addNodeRepositoryNode(createNodeRepositoryNode());
+ dockerTester.addChildNodeRepositoryNode(createNodeRepositoryNode());
// Wait for node admin to be notified with node repo state and the docker container has been started
while (dockerTester.nodeAdmin.getListOfHosts().size() == 0) {
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 fb841f63f0c..115950d020a 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
@@ -20,7 +20,7 @@ public class RestartTest {
long wantedRestartGeneration = 1;
long currentRestartGeneration = wantedRestartGeneration;
- dockerTester.addNodeRepositoryNode(createNodeRepositoryNode(wantedRestartGeneration, currentRestartGeneration));
+ dockerTester.addChildNodeRepositoryNode(createNodeRepositoryNode(wantedRestartGeneration, currentRestartGeneration));
// Wait for node admin to be notified with node repo state and the docker container has been started
while (dockerTester.nodeAdmin.getListOfHosts().size() == 0) {
@@ -34,7 +34,7 @@ public class RestartTest {
wantedRestartGeneration = 2;
currentRestartGeneration = 1;
- dockerTester.addNodeRepositoryNode(createNodeRepositoryNode(wantedRestartGeneration, currentRestartGeneration));
+ dockerTester.addChildNodeRepositoryNode(createNodeRepositoryNode(wantedRestartGeneration, currentRestartGeneration));
dockerTester.callOrderVerifier.assertInOrder(
"Suspend for host1.test.yahoo.com",