diff options
author | Valerij Fredriksen <valerijf@oath.com> | 2018-08-09 15:41:10 +0200 |
---|---|---|
committer | Valerij Fredriksen <valerijf@oath.com> | 2018-08-09 15:41:10 +0200 |
commit | 65e8cce84c50607cef70e52cf542357ac6328158 (patch) | |
tree | ba2a7cefdb0ff9fb4e3892e6b95c008948f418d3 /node-admin | |
parent | 97bd16178e837815b0b05fc39761cfae0c1f9a61 (diff) |
Fix NodeRepoMock to only return children
Diffstat (limited to 'node-admin')
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", |