diff options
3 files changed, 27 insertions, 5 deletions
diff --git a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/noderepository/NodeRepositoryImpl.java b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/noderepository/NodeRepositoryImpl.java index 6dd471f91b4..b46dda2f7a1 100644 --- a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/noderepository/NodeRepositoryImpl.java +++ b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/noderepository/NodeRepositoryImpl.java @@ -36,7 +36,6 @@ public class NodeRepositoryImpl implements NodeRepository { @Override public List<ContainerNodeSpec> getContainersToRun() throws IOException { - try { final GetNodesResponse nodesForHost = requestExecutor.get( "/nodes/v2/node/?parentHost=" + baseHostName + "&recursive=true", @@ -129,7 +128,7 @@ public class NodeRepositoryImpl implements NodeRepository { if (response.errorCode == null || response.errorCode.isEmpty()) { return; } - throw new RuntimeException("Unexcpected message " + response.message + " " + response.errorCode); + throw new RuntimeException("Unexpected message " + response.message + " " + response.errorCode); } @Override diff --git a/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/noderepository/NodeRepositoryImplTest.java b/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/noderepository/NodeRepositoryImplTest.java index a4b250c6cea..fe97f1c51df 100644 --- a/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/noderepository/NodeRepositoryImplTest.java +++ b/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/noderepository/NodeRepositoryImplTest.java @@ -24,6 +24,7 @@ import java.util.Set; import static org.hamcrest.Matchers.is; import static org.junit.Assert.assertThat; +import static org.junit.Assert.fail; /** * Tests the NodeRepository class used for talking to the node repository. It uses a mock from the node repository @@ -45,9 +46,9 @@ public class NodeRepositoryImplTest { /** * Starts NodeRepository with - * com.yahoo.vespa.hosted.provision.testutils.MockNodeFlavor - * com.yahoo.vespa.hosted.provision.testutils.MockNodeRepository - * com.yahoo.vespa.hosted.provision.restapi.v2.NodesApiHandler + * {@link com.yahoo.vespa.hosted.provision.testutils.MockNodeFlavors} + * {@link com.yahoo.vespa.hosted.provision.testutils.MockNodeRepository} + * {@link com.yahoo.vespa.hosted.provision.restapi.v2.NodesApiHandler} * These classes define some test data that is used in these tests. */ @Before @@ -123,4 +124,25 @@ public class NodeRepositoryImplTest { nodeRepositoryApi.updateNodeAttributes(hostname, 1L, new DockerImage("image-1"), "6.2.3\n"); } + @Test + public void testMarkAsReady() throws InterruptedException, IOException { + NodeRepository nodeRepositoryApi = new NodeRepositoryImpl(configServerHosts, port, "dockerhost4"); + waitForJdiscContainerToServe(); + + nodeRepositoryApi.markAsReady(new HostName("host5.yahoo.com")); + + try { + nodeRepositoryApi.markAsReady(new HostName("host1.yahoo.com")); + fail("Expected failure because host1 is not registered as provisioned, dirty, failed or parked"); + } catch (RuntimeException ignored) { + // expected + } + + try { + nodeRepositoryApi.markAsReady(new HostName("host101.yahoo.com")); + fail("Expected failure because host101 does not exist"); + } catch (RuntimeException ignored) { + // expected + } + } } diff --git a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/testutils/MockNodeRepository.java b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/testutils/MockNodeRepository.java index 6636e9580e5..d305417debc 100644 --- a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/testutils/MockNodeRepository.java +++ b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/testutils/MockNodeRepository.java @@ -78,6 +78,7 @@ public class MockNodeRepository extends NodeRepository { nodes.remove(6); setReady(nodes); fail("host5.yahoo.com"); + deallocate("host5.yahoo.com"); ApplicationId app1 = ApplicationId.from(TenantName.from("tenant1"), ApplicationName.from("application1"), InstanceName.from("instance1")); ClusterSpec cluster1 = ClusterSpec.from(ClusterSpec.Type.container, ClusterSpec.Id.from("id1"), Optional.empty(), Optional.of("image-123")); |