aboutsummaryrefslogtreecommitdiffstats
path: root/node-admin
diff options
context:
space:
mode:
authorHåkon Hallingstad <hakon@verizonmedia.com>2021-03-10 14:02:46 +0100
committerHåkon Hallingstad <hakon@verizonmedia.com>2021-03-10 14:02:46 +0100
commit6c82a87b777550c85d16ab8afbd5b9d3c09836ad (patch)
tree4c51c7563d9d7c192d71db51d52cf1c9d46e8b63 /node-admin
parentd8cf69f02c0492470c302fc9bceea304e33cb226 (diff)
Make it possible to mock RealNodeRepository
Diffstat (limited to 'node-admin')
-rw-r--r--node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/configserver/RealConfigServerClients.java5
-rw-r--r--node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/configserver/noderepository/NodeRepository.java2
-rw-r--r--node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/configserver/noderepository/RealNodeRepository.java1
-rw-r--r--node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/configserver/noderepository/RealNodeRepositoryTest.java30
-rw-r--r--node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/integrationTests/NodeRepoMock.java4
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()