diff options
author | Jon Bratseth <bratseth@yahoo-inc.com> | 2017-03-17 11:14:56 +0100 |
---|---|---|
committer | Jon Bratseth <bratseth@yahoo-inc.com> | 2017-03-17 11:14:56 +0100 |
commit | f33d433e3e77197cee6ffe58878174c5bca908bc (patch) | |
tree | e24e2cc7439a6a2f97c8d8d29e022b2176ff9383 /node-repository | |
parent | 2d01527b80eee40ede7bf776d0c836d41cfed644 (diff) |
Simplify
Diffstat (limited to 'node-repository')
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(); + } } |