summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorValerij Fredriksen <valerijf@oath.com>2017-09-20 18:17:17 +0200
committerValerij Fredriksen <valerijf@oath.com>2017-09-20 18:17:17 +0200
commite89a8f9f627a8a1c2d2f0b93aa510d36451b67f8 (patch)
treed45f73071b636bff52c75fd2e1cb59fa09bb3ca9
parentd7010f138786a3dc8fa114086a95b4d20e9e6617 (diff)
Renamed ComponentProviderImpl to NodeAdminProvider
-rw-r--r--node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/provider/ComponentsProvider.java13
-rw-r--r--node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/provider/NodeAdminProvider.java (renamed from node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/provider/ComponentsProviderImpl.java)8
-rw-r--r--node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/restapi/RestApiHandler.java6
-rw-r--r--node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/integrationTests/NodeAdminProviderWithMocks.java (renamed from node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/integrationTests/ComponentsProviderWithMocks.java)13
-rw-r--r--node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/integrationTests/RunInContainerTest.java12
5 files changed, 22 insertions, 30 deletions
diff --git a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/provider/ComponentsProvider.java b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/provider/ComponentsProvider.java
deleted file mode 100644
index 93a77a13bf9..00000000000
--- a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/provider/ComponentsProvider.java
+++ /dev/null
@@ -1,13 +0,0 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
-package com.yahoo.vespa.hosted.node.admin.provider;
-
-import com.yahoo.vespa.hosted.node.admin.nodeadmin.NodeAdminStateUpdater;
-
-/**
- * Class for setting up instances of classes; enables testing.
- *
- * @author dybis
- */
-public interface ComponentsProvider {
- NodeAdminStateUpdater getNodeAdminStateUpdater();
-}
diff --git a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/provider/ComponentsProviderImpl.java b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/provider/NodeAdminProvider.java
index 512d957185b..5d3e4cd3ec6 100644
--- a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/provider/ComponentsProviderImpl.java
+++ b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/provider/NodeAdminProvider.java
@@ -2,9 +2,9 @@
package com.yahoo.vespa.hosted.node.admin.provider;
import com.google.inject.Inject;
-import com.yahoo.component.AbstractComponent;
import com.yahoo.concurrent.lock.Lock;
import com.yahoo.concurrent.lock.Locking;
+import com.yahoo.container.di.componentgraph.Provider;
import com.yahoo.net.HostName;
import com.yahoo.system.ProcessExecuter;
@@ -37,7 +37,7 @@ import static com.yahoo.vespa.defaults.Defaults.getDefaults;
*
* @author dybis
*/
-public class ComponentsProviderImpl extends AbstractComponent implements ComponentsProvider {
+public class NodeAdminProvider implements Provider<NodeAdminStateUpdater> {
private static final int WEB_SERVICE_PORT = getDefaults().vespaWebServicePort();
private static final Duration NODE_AGENT_SCAN_INTERVAL = Duration.ofSeconds(30);
private static final Duration NODE_ADMIN_CONVERGE_STATE_INTERVAL = Duration.ofSeconds(30);
@@ -46,7 +46,7 @@ public class ComponentsProviderImpl extends AbstractComponent implements Compone
private final Lock classLock;
@Inject
- public ComponentsProviderImpl(Docker docker, MetricReceiverWrapper metricReceiver, Locking locking) {
+ public NodeAdminProvider(Docker docker, MetricReceiverWrapper metricReceiver, Locking locking) {
classLock = locking.lock(this.getClass());
Clock clock = Clock.systemUTC();
@@ -74,7 +74,7 @@ public class ComponentsProviderImpl extends AbstractComponent implements Compone
}
@Override
- public NodeAdminStateUpdater getNodeAdminStateUpdater() {
+ public NodeAdminStateUpdater get() {
return nodeAdminStateUpdater;
}
diff --git a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/restapi/RestApiHandler.java b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/restapi/RestApiHandler.java
index 73c544c8c80..adfb937b8d7 100644
--- a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/restapi/RestApiHandler.java
+++ b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/restapi/RestApiHandler.java
@@ -3,6 +3,7 @@ package com.yahoo.vespa.hosted.node.admin.restapi;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.node.ObjectNode;
+import com.yahoo.container.di.componentgraph.Provider;
import com.yahoo.container.jdisc.HttpRequest;
import com.yahoo.container.jdisc.HttpResponse;
import com.yahoo.container.jdisc.LoggingRequestHandler;
@@ -10,7 +11,6 @@ import com.yahoo.container.logging.AccessLog;
import com.yahoo.vespa.hosted.dockerapi.metrics.DimensionMetrics;
import com.yahoo.vespa.hosted.dockerapi.metrics.MetricReceiverWrapper;
import com.yahoo.vespa.hosted.node.admin.nodeadmin.NodeAdminStateUpdater;
-import com.yahoo.vespa.hosted.node.admin.provider.ComponentsProvider;
import javax.inject.Inject;
import javax.ws.rs.core.MediaType;
@@ -39,10 +39,10 @@ public class RestApiHandler extends LoggingRequestHandler{
@Inject
public RestApiHandler(Executor executor, AccessLog accessLog,
- ComponentsProvider componentsProvider,
+ Provider<NodeAdminStateUpdater> componentsProvider,
MetricReceiverWrapper metricReceiverWrapper) {
super(executor, accessLog);
- this.refresher = componentsProvider.getNodeAdminStateUpdater();
+ this.refresher = componentsProvider.get();
this.metricReceiverWrapper = metricReceiverWrapper;
}
diff --git a/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/integrationTests/ComponentsProviderWithMocks.java b/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/integrationTests/NodeAdminProviderWithMocks.java
index 522ad07a558..674ee6b7d17 100644
--- a/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/integrationTests/ComponentsProviderWithMocks.java
+++ b/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/integrationTests/NodeAdminProviderWithMocks.java
@@ -1,6 +1,7 @@
// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.node.admin.integrationTests;
+import com.yahoo.container.di.componentgraph.Provider;
import com.yahoo.metrics.simple.MetricReceiver;
import com.yahoo.vespa.hosted.dockerapi.metrics.MetricReceiverWrapper;
import com.yahoo.vespa.hosted.node.admin.docker.DockerOperations;
@@ -13,7 +14,6 @@ import com.yahoo.vespa.hosted.node.admin.nodeagent.NodeAgent;
import com.yahoo.vespa.hosted.node.admin.nodeagent.NodeAgentImpl;
import com.yahoo.vespa.hosted.node.admin.noderepository.NodeRepository;
import com.yahoo.vespa.hosted.node.admin.orchestrator.Orchestrator;
-import com.yahoo.vespa.hosted.node.admin.provider.ComponentsProvider;
import com.yahoo.vespa.hosted.node.admin.util.Environment;
import java.time.Clock;
@@ -27,7 +27,7 @@ import static org.mockito.Mockito.mock;
*
* @author dybis
*/
-public class ComponentsProviderWithMocks implements ComponentsProvider {
+public class NodeAdminProviderWithMocks implements Provider<NodeAdminStateUpdater> {
private static final Duration NODE_AGENT_SCAN_INTERVAL = Duration.ofMillis(100);
private static final Duration NODE_ADMIN_CONVERGE_STATE_INTERVAL = Duration.ofMillis(5);
@@ -46,12 +46,17 @@ public class ComponentsProviderWithMocks implements ComponentsProvider {
private final NodeAdminStateUpdater nodeAdminStateUpdater = new NodeAdminStateUpdater(nodeRepositoryMock,
orchestratorMock, storageMaintainer, nodeAdmin, "localhost.test.yahoo.com", Clock.systemUTC(), NODE_ADMIN_CONVERGE_STATE_INTERVAL);
- public ComponentsProviderWithMocks() {
+ public NodeAdminProviderWithMocks() {
nodeAdminStateUpdater.start();
}
@Override
- public NodeAdminStateUpdater getNodeAdminStateUpdater() {
+ public NodeAdminStateUpdater get() {
return nodeAdminStateUpdater;
}
+
+ @Override
+ public void deconstruct() {
+ nodeAdminStateUpdater.stop();
+ }
}
diff --git a/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/integrationTests/RunInContainerTest.java b/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/integrationTests/RunInContainerTest.java
index 036a53a9654..63a7a3d1e4e 100644
--- a/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/integrationTests/RunInContainerTest.java
+++ b/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/integrationTests/RunInContainerTest.java
@@ -42,7 +42,7 @@ import static org.mockito.Mockito.when;
*/
public class RunInContainerTest {
private final Logger logger = Logger.getLogger("RunInContainerTest");
- private final Orchestrator orchestrator = ComponentsProviderWithMocks.orchestratorMock;
+ private final Orchestrator orchestrator = NodeAdminProviderWithMocks.orchestratorMock;
private final String parentHostname = "localhost.test.yahoo.com";
private JDisc container;
private int port;
@@ -118,7 +118,7 @@ public class RunInContainerTest {
@Test
public void testGetContainersToRunAPi() throws IOException, InterruptedException {
doThrow(new OrchestratorException("Cannot suspend because...")).when(orchestrator).suspend(parentHostname);
- when(ComponentsProviderWithMocks.nodeRepositoryMock.getContainersToRun(eq(parentHostname))).thenReturn(Collections.emptyList());
+ when(NodeAdminProviderWithMocks.nodeRepositoryMock.getContainersToRun(eq(parentHostname))).thenReturn(Collections.emptyList());
waitForJdiscContainerToServe();
assertTrue("The initial resume command should fail because it needs to converge first",
@@ -144,7 +144,7 @@ public class RunInContainerTest {
assertTrue(verifyWithRetries("resume", true));
// Lets try the same, but with an active container running on this host
- when(ComponentsProviderWithMocks.nodeRepositoryMock.getContainersToRun(eq(parentHostname))).thenReturn(
+ when(NodeAdminProviderWithMocks.nodeRepositoryMock.getContainersToRun(eq(parentHostname))).thenReturn(
Collections.singletonList(new ContainerNodeSpec.Builder()
.hostname("host1.test.yahoo.com")
.wantedDockerImage(new DockerImage("dockerImage"))
@@ -167,9 +167,9 @@ public class RunInContainerTest {
assertTrue(verifyWithRetries("suspend/node-admin", true));
// Allow stopping services in active nodes
- doNothing().when(ComponentsProviderWithMocks.dockerOperationsMock)
+ doNothing().when(NodeAdminProviderWithMocks.dockerOperationsMock)
.trySuspendNode(eq(new ContainerName("host1")));
- doNothing().when(ComponentsProviderWithMocks.dockerOperationsMock)
+ doNothing().when(NodeAdminProviderWithMocks.dockerOperationsMock)
.stopServicesOnNode(eq(new ContainerName("host1")));
assertTrue(verifyWithRetries("suspend", false));
@@ -191,7 +191,7 @@ public class RunInContainerTest {
" <handler id=\"com.yahoo.vespa.hosted.node.admin.restapi.RestApiHandler\" bundle=\"node-admin\">\n" +
" <binding>http://*/rest/*</binding>\n" +
" </handler>\n" +
- " <component id=\"node-admin\" class=\"com.yahoo.vespa.hosted.node.admin.integrationTests.ComponentsProviderWithMocks\" bundle=\"node-admin\"/>\n" +
+ " <component id=\"node-admin\" class=\"com.yahoo.vespa.hosted.node.admin.integrationTests.NodeAdminProviderWithMocks\" bundle=\"node-admin\"/>\n" +
" <http>" +
" <server id=\'myServer\' port=\'" + port + "\' />" +
" </http>" +