aboutsummaryrefslogtreecommitdiffstats
path: root/node-repository
diff options
context:
space:
mode:
authorJon Bratseth <bratseth@yahoo-inc.com>2017-03-17 11:14:56 +0100
committerJon Bratseth <bratseth@yahoo-inc.com>2017-03-17 11:14:56 +0100
commitf33d433e3e77197cee6ffe58878174c5bca908bc (patch)
treee24e2cc7439a6a2f97c8d8d29e022b2176ff9383 /node-repository
parent2d01527b80eee40ede7bf776d0c836d41cfed644 (diff)
Simplify
Diffstat (limited to 'node-repository')
-rw-r--r--node-repository/src/main/java/com/yahoo/vespa/hosted/provision/maintenance/ApplicationMaintainer.java23
-rw-r--r--node-repository/src/test/java/com/yahoo/vespa/hosted/provision/maintenance/ApplicationMaintainerTest.java29
2 files changed, 26 insertions, 26 deletions
diff --git a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/maintenance/ApplicationMaintainer.java b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/maintenance/ApplicationMaintainer.java
index 9a126e2abb6..72c90aed458 100644
--- a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/maintenance/ApplicationMaintainer.java
+++ b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/maintenance/ApplicationMaintainer.java
@@ -29,26 +29,17 @@ import java.util.stream.Collectors;
public class ApplicationMaintainer extends Maintainer {
private final Deployer deployer;
- private final Function<NodeRepository, Set<ApplicationId>> activeApplicationsGetter;
private final Executor deploymentExecutor = Executors.newCachedThreadPool();
public ApplicationMaintainer(Deployer deployer, NodeRepository nodeRepository, Duration interval) {
- this(deployer, nodeRepository, interval, ApplicationMaintainer::activeApplications);
- }
-
- ApplicationMaintainer(Deployer deployer, NodeRepository nodeRepository, Duration interval,
- Function<NodeRepository, Set<ApplicationId>> activeApplicationsGetter) {
super(nodeRepository, interval);
this.deployer = deployer;
- this.activeApplicationsGetter = activeApplicationsGetter;
}
@Override
protected void maintain() {
- Set<ApplicationId> applications = activeApplicationsGetter.apply(nodeRepository());
-
- for (ApplicationId application : applications) {
+ for (ApplicationId application : activeApplications()) {
try {
// An application might change it's state between the time the set of applications is retrieved and the
// time deployment happens. Lock on application and check if it's still active.
@@ -84,16 +75,16 @@ public class ApplicationMaintainer extends Maintainer {
});
}
- private boolean isActive(ApplicationId application) {
- return ! nodeRepository().getNodes(application, Node.State.active).isEmpty();
- }
-
- static Set<ApplicationId> activeApplications(NodeRepository nodeRepository) {
- return nodeRepository.getNodes(Node.State.active).stream()
+ protected Set<ApplicationId> activeApplications() {
+ return nodeRepository().getNodes(Node.State.active).stream()
.map(node -> node.allocation().get().owner())
.collect(Collectors.toSet());
}
+ private boolean isActive(ApplicationId application) {
+ return ! nodeRepository().getNodes(application, Node.State.active).isEmpty();
+ }
+
@Override
public String toString() { return "Periodic application redeployer"; }
diff --git a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/maintenance/ApplicationMaintainerTest.java b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/maintenance/ApplicationMaintainerTest.java
index d6388d359f4..7ff006bb130 100644
--- a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/maintenance/ApplicationMaintainerTest.java
+++ b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/maintenance/ApplicationMaintainerTest.java
@@ -36,7 +36,6 @@ import java.util.List;
import java.util.Map;
import java.util.Optional;
import java.util.Set;
-import java.util.function.Function;
import java.util.stream.Collectors;
import static org.junit.Assert.assertEquals;
@@ -124,7 +123,7 @@ public class ApplicationMaintainerTest {
assertEquals(fixture.wantedNodesApp2, nodeRepository.getNodes(fixture.app2, Node.State.inactive).size());
// Nodes belonging to app2 are inactive after maintenance
- fixture.runApplicationMaintainer((ignored) -> frozenActiveApplications);
+ fixture.runApplicationMaintainer(Optional.of(frozenActiveApplications));
assertEquals("Inactive nodes were incorrectly activated after maintenance", fixture.wantedNodesApp2,
nodeRepository.getNodes(fixture.app2, Node.State.inactive).size());
}
@@ -187,17 +186,17 @@ public class ApplicationMaintainerTest {
}
void runApplicationMaintainer() {
- runApplicationMaintainer(ApplicationMaintainer::activeApplications);
+ runApplicationMaintainer(Optional.empty());
}
- void runApplicationMaintainer(Function<NodeRepository, Set<ApplicationId>> activeApplicationsGetter) {
+ void runApplicationMaintainer(Optional<Set<ApplicationId>> overriddenActiveApplications) {
Map<ApplicationId, MockDeployer.ApplicationContext> apps = new HashMap<>();
apps.put(app1, new MockDeployer.ApplicationContext(app1, clusterApp1,
Capacity.fromNodeCount(wantedNodesApp1, Optional.of("default")), 1));
apps.put(app2, new MockDeployer.ApplicationContext(app2, clusterApp2,
Capacity.fromNodeCount(wantedNodesApp2, Optional.of("default")), 1));
MockDeployer deployer = new MockDeployer(provisioner, apps);
- new SynchronousApplicationMaintainer(deployer, nodeRepository, Duration.ofMinutes(30), activeApplicationsGetter).run();
+ new TestableApplicationMaintainer(deployer, nodeRepository, Duration.ofMinutes(30), overriddenActiveApplications).run();
}
NodeList getNodes(Node.State ... states) {
@@ -206,17 +205,27 @@ public class ApplicationMaintainerTest {
}
- private static class SynchronousApplicationMaintainer extends ApplicationMaintainer {
-
- SynchronousApplicationMaintainer(Deployer deployer, NodeRepository nodeRepository, Duration interval,
- Function<NodeRepository, Set<ApplicationId>> activeApplicationsGetter) {
- super(deployer, nodeRepository, interval, activeApplicationsGetter);
+ private static class TestableApplicationMaintainer extends ApplicationMaintainer {
+
+ private Optional<Set<ApplicationId>> overriddenActiveApplications;
+
+ TestableApplicationMaintainer(Deployer deployer, NodeRepository nodeRepository, Duration interval,
+ Optional<Set<ApplicationId>> overriddenActiveApplications) {
+ super(deployer, nodeRepository, interval);
+ this.overriddenActiveApplications = overriddenActiveApplications;
}
@Override
protected void deployAsynchronously(Deployment deployment) {
deployment.activate();
}
+
+ @Override
+ protected Set<ApplicationId> activeApplications() {
+ if (overriddenActiveApplications.isPresent())
+ return overriddenActiveApplications.get();
+ return super.activeApplications();
+ }
}