summaryrefslogtreecommitdiffstats
path: root/node-admin/src/test/java
diff options
context:
space:
mode:
authorValerij Fredriksen <valerijf@oath.com>2019-01-16 09:43:34 +0100
committerValerij Fredriksen <valerijf@oath.com>2019-01-16 09:43:34 +0100
commitc59e99d143b0d2bc42dd2e07b57614816406142b (patch)
tree62261729fe58561cdfd365879255524f782138a9 /node-admin/src/test/java
parent00d16a5329afe74eaa0d869906685f23a1ab21da (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.java39
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;