diff options
author | Valerij Fredriksen <valerijf@oath.com> | 2019-01-16 09:43:34 +0100 |
---|---|---|
committer | Valerij Fredriksen <valerijf@oath.com> | 2019-01-16 09:43:34 +0100 |
commit | c59e99d143b0d2bc42dd2e07b57614816406142b (patch) | |
tree | 62261729fe58561cdfd365879255524f782138a9 /node-admin/src/test/java | |
parent | 00d16a5329afe74eaa0d869906685f23a1ab21da (diff) |
Restart container on memory change
Diffstat (limited to 'node-admin/src/test/java')
-rw-r--r-- | node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/nodeagent/NodeAgentImplTest.java | 39 |
1 files changed, 37 insertions, 2 deletions
diff --git a/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/nodeagent/NodeAgentImplTest.java b/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/nodeagent/NodeAgentImplTest.java index e8a24fd1e5a..067c509ce13 100644 --- a/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/nodeagent/NodeAgentImplTest.java +++ b/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/nodeagent/NodeAgentImplTest.java @@ -236,7 +236,7 @@ public class NodeAgentImplTest { } @Test - public void containerIsUpdatedIfFlavorChanged() { + public void containerIsUpdatedIfCpuChanged() { NodeSpec.Builder specBuilder = nodeBuilder .wantedDockerImage(dockerImage) .currentDockerImage(dockerImage) @@ -277,12 +277,47 @@ public class NodeAgentImplTest { // Set the feature flag flagSource.withDoubleFlag(Flags.CONTAINER_CPU_CAP.id(), 2.3); - nodeAgent.converge(thirdContext); + nodeAgent.doConverge(thirdContext); inOrder.verify(dockerOperations).updateContainer(eq(thirdContext), eq(ContainerResources.from(9.2, 4, 16))); inOrder.verify(orchestrator).resume(any(String.class)); } @Test + public void containerIsRestartedIfMemoryChanged() { + NodeSpec.Builder specBuilder = nodeBuilder + .wantedDockerImage(dockerImage) + .currentDockerImage(dockerImage) + .state(Node.State.active) + .wantedVespaVersion(vespaVersion) + .vespaVersion(vespaVersion); + + NodeAgentContext firstContext = createContext(specBuilder.build()); + NodeAgentImpl nodeAgent = makeNodeAgent(dockerImage, true); + + when(dockerOperations.pullImageAsyncIfNeeded(any())).thenReturn(true); + when(storageMaintainer.getDiskUsageFor(any())).thenReturn(Optional.of(201326592000L)); + + nodeAgent.doConverge(firstContext); + NodeAgentContext secondContext = createContext(specBuilder.minMainMemoryAvailableGb(20).build()); + nodeAgent.doConverge(secondContext); + ContainerResources resourcesAfterThird = ContainerResources.from(0, 2, 20); + mockGetContainer(dockerImage, resourcesAfterThird, true); + + InOrder inOrder = inOrder(orchestrator, dockerOperations); + inOrder.verify(orchestrator).resume(any(String.class)); + inOrder.verify(orchestrator).suspend(any(String.class)); + inOrder.verify(dockerOperations).removeContainer(eq(secondContext), any()); + inOrder.verify(dockerOperations, times(1)).createContainer(eq(secondContext), any()); + inOrder.verify(dockerOperations).startContainer(eq(secondContext)); + inOrder.verify(dockerOperations, never()).updateContainer(any(), any()); + + nodeAgent.doConverge(secondContext); + inOrder.verify(orchestrator).resume(any(String.class)); + inOrder.verify(dockerOperations, never()).updateContainer(any(), any()); + inOrder.verify(dockerOperations, never()).removeContainer(any(), any()); + } + + @Test public void noRestartIfOrchestratorSuspendFails() { final long wantedRestartGeneration = 2; final long currentRestartGeneration = 1; |