diff options
author | Valerij Fredriksen <freva@users.noreply.github.com> | 2019-02-09 20:13:33 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2019-02-09 20:13:33 +0100 |
commit | 0ba8693afeffb3ae7f3ce85d59b4e379c85fa158 (patch) | |
tree | 47e509cbd32ce7a2535ce7bded29140f1957e8fd /node-admin/src/test/java | |
parent | dd6b4f125da8940233920d6b0d1e0bf09ea2fb61 (diff) | |
parent | 40dcf524be4ec1bda36631447cfb70d30e7f5654 (diff) |
Merge pull request #8454 from vespa-engine/freva/delayed-scheduling
Node-Admin: Delayed scheduling
Diffstat (limited to 'node-admin/src/test/java')
3 files changed, 21 insertions, 7 deletions
diff --git a/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/integrationTests/DockerTester.java b/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/integrationTests/DockerTester.java index 88cc833f1f8..0254f58e7eb 100644 --- a/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/integrationTests/DockerTester.java +++ b/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/integrationTests/DockerTester.java @@ -98,7 +98,7 @@ public class DockerTester implements AutoCloseable { Optional.empty(), Optional.empty(), Optional.empty()); NodeAgentContextFactory nodeAgentContextFactory = nodeSpec -> new NodeAgentContextImpl.Builder(nodeSpec).fileSystem(fileSystem).build(); - nodeAdmin = new NodeAdminImpl(nodeAgentFactory, nodeAgentContextFactory, Optional.empty(), mr, Clock.systemUTC()); + nodeAdmin = new NodeAdminImpl(nodeAgentFactory, nodeAgentContextFactory, Optional.empty(), mr, Clock.systemUTC(), Duration.ofMillis(10), Duration.ZERO); nodeAdminStateUpdater = new NodeAdminStateUpdater(nodeRepository, orchestrator, nodeAdmin, HOST_HOSTNAME); @@ -139,7 +139,7 @@ public class DockerTester implements AutoCloseable { @Override public void close() { // First, stop NodeAdmin and all the NodeAgents - nodeAdmin.stop(); + nodeAdminStateUpdater.stop(); terminated = true; do { diff --git a/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/nodeadmin/NodeAdminImplTest.java b/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/nodeadmin/NodeAdminImplTest.java index 47e220a968b..f8e87ccef53 100644 --- a/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/nodeadmin/NodeAdminImplTest.java +++ b/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/nodeadmin/NodeAdminImplTest.java @@ -45,7 +45,7 @@ public class NodeAdminImplTest { private final ManualClock clock = new ManualClock(); private final NodeAdminImpl nodeAdmin = new NodeAdminImpl(nodeAgentWithSchedulerFactory, nodeAgentContextFactory, - Optional.empty(), new MetricReceiverWrapper(MetricReceiver.nullImplementation), clock); + Optional.empty(), new MetricReceiverWrapper(MetricReceiver.nullImplementation), clock, Duration.ZERO, Duration.ZERO); @Test public void nodeAgentsAreProperlyLifeCycleManaged() { diff --git a/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/nodeagent/NodeAgentContextManagerTest.java b/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/nodeagent/NodeAgentContextManagerTest.java index f32e3d91e34..5aeccb4ab7d 100644 --- a/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/nodeagent/NodeAgentContextManagerTest.java +++ b/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/nodeagent/NodeAgentContextManagerTest.java @@ -5,6 +5,7 @@ import org.junit.Test; import java.time.Clock; import java.time.Duration; +import java.time.Instant; import java.util.Optional; import static org.junit.Assert.assertEquals; @@ -26,7 +27,7 @@ public class NodeAgentContextManagerTest { @Test(timeout = TIMEOUT) public void returns_immediately_if_next_context_is_ready() throws InterruptedException { NodeAgentContext context1 = generateContext(); - manager.scheduleTickWith(context1); + manager.scheduleTickWith(context1, clock.instant()); assertSame(initialContext, manager.currentContext()); assertSame(context1, manager.nextContext()); @@ -34,6 +35,19 @@ public class NodeAgentContextManagerTest { } @Test(timeout = TIMEOUT) + public void returns_no_earlier_than_at_given_time() throws InterruptedException { + NodeAgentContext context1 = generateContext(); + Instant returnAt = clock.instant().plusMillis(500); + manager.scheduleTickWith(context1, returnAt); + + assertSame(initialContext, manager.currentContext()); + assertSame(context1, manager.nextContext()); + assertSame(context1, manager.currentContext()); + // Is accurate to a millisecond + assertFalse(clock.instant().plusMillis(1).isBefore(returnAt)); + } + + @Test(timeout = TIMEOUT) public void blocks_in_nextContext_until_one_is_scheduled() throws InterruptedException { AsyncExecutor<NodeAgentContext> async = new AsyncExecutor<>(manager::nextContext); assertFalse(async.response.isPresent()); @@ -41,7 +55,7 @@ public class NodeAgentContextManagerTest { assertFalse(async.response.isPresent()); NodeAgentContext context1 = generateContext(); - manager.scheduleTickWith(context1); + manager.scheduleTickWith(context1, clock.instant()); async.awaitResult(); assertEquals(Optional.of(context1), async.response); @@ -68,7 +82,7 @@ public class NodeAgentContextManagerTest { // Generate new context and get it from the supplier, this completes the unfreeze NodeAgentContext context1 = generateContext(); - manager.scheduleTickWith(context1); + manager.scheduleTickWith(context1, clock.instant()); assertSame(context1, manager.nextContext()); assertTrue(manager.setFrozen(false, Duration.ZERO)); @@ -91,7 +105,7 @@ public class NodeAgentContextManagerTest { assertFalse(async.response.isPresent()); NodeAgentContext context1 = generateContext(); - manager.scheduleTickWith(context1); + manager.scheduleTickWith(context1, clock.instant()); assertSame(context1, manager.nextContext()); async.awaitResult(); |