diff options
author | Håkon Hallingstad <hakon@verizonmedia.com> | 2021-03-10 14:02:46 +0100 |
---|---|---|
committer | Håkon Hallingstad <hakon@verizonmedia.com> | 2021-03-10 14:02:46 +0100 |
commit | 6c82a87b777550c85d16ab8afbd5b9d3c09836ad (patch) | |
tree | 4c51c7563d9d7c192d71db51d52cf1c9d46e8b63 /node-admin/src | |
parent | d8cf69f02c0492470c302fc9bceea304e33cb226 (diff) |
Make it possible to mock RealNodeRepository
Diffstat (limited to 'node-admin/src')
5 files changed, 25 insertions, 17 deletions
diff --git a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/configserver/RealConfigServerClients.java b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/configserver/RealConfigServerClients.java index 917bd64690f..7d52b9d72b0 100644 --- a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/configserver/RealConfigServerClients.java +++ b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/configserver/RealConfigServerClients.java @@ -3,6 +3,7 @@ package com.yahoo.vespa.hosted.node.admin.configserver; import com.yahoo.vespa.flags.FlagRepository; import com.yahoo.vespa.hosted.node.admin.configserver.flags.RealFlagRepository; +import com.yahoo.vespa.hosted.node.admin.configserver.noderepository.NodeRepository; import com.yahoo.vespa.hosted.node.admin.configserver.noderepository.RealNodeRepository; import com.yahoo.vespa.hosted.node.admin.configserver.orchestrator.Orchestrator; import com.yahoo.vespa.hosted.node.admin.configserver.orchestrator.OrchestratorImpl; @@ -17,7 +18,7 @@ import com.yahoo.vespa.hosted.node.admin.configserver.state.StateImpl; */ public class RealConfigServerClients implements ConfigServerClients { private final ConfigServerApi configServerApi; - private final RealNodeRepository nodeRepository; + private final NodeRepository nodeRepository; private final Orchestrator orchestrator; private final State state; private final RealFlagRepository flagRepository; @@ -34,7 +35,7 @@ public class RealConfigServerClients implements ConfigServerClients { } @Override - public RealNodeRepository nodeRepository() { + public NodeRepository nodeRepository() { return nodeRepository; } diff --git a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/configserver/noderepository/NodeRepository.java b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/configserver/noderepository/NodeRepository.java index 1a7193b3096..4cce6ce08d6 100644 --- a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/configserver/noderepository/NodeRepository.java +++ b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/configserver/noderepository/NodeRepository.java @@ -10,6 +10,8 @@ import java.util.Optional; */ public interface NodeRepository { + void addNodes(List<AddNode> nodes); + List<NodeSpec> getNodes(String baseHostName); default NodeSpec getNode(String hostName) { diff --git a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/configserver/noderepository/RealNodeRepository.java b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/configserver/noderepository/RealNodeRepository.java index 8ddafea4260..5069f02c6b7 100644 --- a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/configserver/noderepository/RealNodeRepository.java +++ b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/configserver/noderepository/RealNodeRepository.java @@ -42,6 +42,7 @@ public class RealNodeRepository implements NodeRepository { this.configServerApi = configServerApi; } + @Override public void addNodes(List<AddNode> nodes) { List<NodeRepositoryNode> nodesToPost = nodes.stream() .map(RealNodeRepository::nodeRepositoryNodeFromAddNode) diff --git a/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/configserver/noderepository/RealNodeRepositoryTest.java b/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/configserver/noderepository/RealNodeRepositoryTest.java index 75e8590154b..fe06812c608 100644 --- a/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/configserver/noderepository/RealNodeRepositoryTest.java +++ b/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/configserver/noderepository/RealNodeRepositoryTest.java @@ -40,7 +40,7 @@ public class RealNodeRepositoryTest { private static final double delta = 0.00000001; private JDisc container; - private RealNodeRepository nodeRepository; + private NodeRepository nodeRepositoryApi; private int findRandomOpenPort() throws IOException { try (ServerSocket socket = new ServerSocket(0)) { @@ -79,10 +79,10 @@ public class RealNodeRepositoryTest { private void waitForJdiscContainerToServe(ConfigServerApi configServerApi) throws InterruptedException { Instant start = Instant.now(); - nodeRepository = new RealNodeRepository(configServerApi); + nodeRepositoryApi = new RealNodeRepository(configServerApi); while (Instant.now().minusSeconds(120).isBefore(start)) { try { - nodeRepository.getNodes("foobar"); + nodeRepositoryApi.getNodes("foobar"); return; } catch (Exception e) { Thread.sleep(100); @@ -102,7 +102,7 @@ public class RealNodeRepositoryTest { public void testGetContainersToRunApi() { String dockerHostHostname = "dockerhost1.yahoo.com"; - List<NodeSpec> containersToRun = nodeRepository.getNodes(dockerHostHostname); + List<NodeSpec> containersToRun = nodeRepositoryApi.getNodes(dockerHostHostname); assertThat(containersToRun.size(), is(1)); NodeSpec node = containersToRun.get(0); assertThat(node.hostname(), is("host4.yahoo.com")); @@ -118,7 +118,7 @@ public class RealNodeRepositoryTest { @Test public void testGetContainer() { String hostname = "host4.yahoo.com"; - Optional<NodeSpec> node = nodeRepository.getOptionalNode(hostname); + Optional<NodeSpec> node = nodeRepositoryApi.getOptionalNode(hostname); assertTrue(node.isPresent()); assertEquals(hostname, node.get().hostname()); } @@ -126,14 +126,14 @@ public class RealNodeRepositoryTest { @Test public void testGetContainerForNonExistingNode() { String hostname = "host-that-does-not-exist"; - Optional<NodeSpec> node = nodeRepository.getOptionalNode(hostname); + Optional<NodeSpec> node = nodeRepositoryApi.getOptionalNode(hostname); assertFalse(node.isPresent()); } @Test public void testUpdateNodeAttributes() { String hostname = "host4.yahoo.com"; - nodeRepository.updateNodeAttributes( + nodeRepositoryApi.updateNodeAttributes( hostname, new NodeAttributes() .withRestartGeneration(1) @@ -142,18 +142,18 @@ public class RealNodeRepositoryTest { @Test public void testMarkAsReady() { - nodeRepository.setNodeState("host5.yahoo.com", NodeState.dirty); - nodeRepository.setNodeState("host5.yahoo.com", NodeState.ready); + nodeRepositoryApi.setNodeState("host5.yahoo.com", NodeState.dirty); + nodeRepositoryApi.setNodeState("host5.yahoo.com", NodeState.ready); try { - nodeRepository.setNodeState("host4.yahoo.com", NodeState.ready); + nodeRepositoryApi.setNodeState("host4.yahoo.com", NodeState.ready); fail("Should not be allowed to be marked ready as it is not registered as provisioned, dirty, failed or parked"); } catch (RuntimeException ignored) { // expected } try { - nodeRepository.setNodeState("host101.yahoo.com", NodeState.ready); + nodeRepositoryApi.setNodeState("host101.yahoo.com", NodeState.ready); fail("Expected failure because host101 does not exist"); } catch (RuntimeException ignored) { // expected @@ -172,16 +172,16 @@ public class RealNodeRepositoryTest { NodeResources nodeResources = new NodeResources(1, 2, 3, 4, NodeResources.DiskSpeed.slow, NodeResources.StorageType.local); AddNode node = AddNode.forNode("host123-1.domain.tld", "host123.domain.tld", nodeResources, NodeType.config, Set.of("::2", "::3")); - assertFalse(nodeRepository.getOptionalNode("host123.domain.tld").isPresent()); - nodeRepository.addNodes(List.of(host, node)); + assertFalse(nodeRepositoryApi.getOptionalNode("host123.domain.tld").isPresent()); + nodeRepositoryApi.addNodes(List.of(host, node)); - NodeSpec hostSpec = nodeRepository.getOptionalNode("host123.domain.tld").orElseThrow(); + NodeSpec hostSpec = nodeRepositoryApi.getOptionalNode("host123.domain.tld").orElseThrow(); assertEquals("id1", hostSpec.id().orElseThrow()); assertEquals("default", hostSpec.flavor()); assertEquals(123, hostSpec.diskGb(), 0); assertEquals(NodeType.confighost, hostSpec.type()); - NodeSpec nodeSpec = nodeRepository.getOptionalNode("host123-1.domain.tld").orElseThrow(); + NodeSpec nodeSpec = nodeRepositoryApi.getOptionalNode("host123-1.domain.tld").orElseThrow(); assertEquals(nodeResources, nodeSpec.resources()); assertEquals(NodeType.config, nodeSpec.type()); } 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 aa7b0a8af1b..80069b38748 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 @@ -2,6 +2,7 @@ package com.yahoo.vespa.hosted.node.admin.integrationTests; import com.yahoo.vespa.hosted.node.admin.configserver.noderepository.Acl; +import com.yahoo.vespa.hosted.node.admin.configserver.noderepository.AddNode; import com.yahoo.vespa.hosted.node.admin.configserver.noderepository.NodeAttributes; import com.yahoo.vespa.hosted.node.admin.configserver.noderepository.NodeRepository; import com.yahoo.vespa.hosted.node.admin.configserver.noderepository.NodeSpec; @@ -24,6 +25,9 @@ public class NodeRepoMock implements NodeRepository { private final Map<String, NodeSpec> nodeRepositoryNodesByHostname = new HashMap<>(); @Override + public void addNodes(List<AddNode> nodes) { } + + @Override public List<NodeSpec> getNodes(String baseHostName) { synchronized (monitor) { return nodeRepositoryNodesByHostname.values().stream() |