diff options
author | Håkon Hallingstad <hakon@verizonmedia.com> | 2021-02-05 01:12:07 +0100 |
---|---|---|
committer | Håkon Hallingstad <hakon@verizonmedia.com> | 2021-02-05 01:12:07 +0100 |
commit | 21bca780a46f545966d5322cfe19c4c455468d42 (patch) | |
tree | c3383406820ac70d9a03a3130bf1295e5641801b /node-admin/src/test/java/com | |
parent | cf73d91645b70eb1a78cbe44f6be31d3ed5979b5 (diff) |
Generalize updating of CPU limits
Diffstat (limited to 'node-admin/src/test/java/com')
3 files changed, 27 insertions, 18 deletions
diff --git a/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/docker/ContainerOperationsImplTest.java b/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/docker/ContainerOperationsImplTest.java index 240fb492aff..e78d5bb754b 100644 --- a/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/docker/ContainerOperationsImplTest.java +++ b/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/docker/ContainerOperationsImplTest.java @@ -5,6 +5,7 @@ import com.google.common.net.InetAddresses; import com.yahoo.config.provision.DockerImage; import com.yahoo.vespa.hosted.dockerapi.Container; import com.yahoo.vespa.hosted.dockerapi.ContainerEngine; +import com.yahoo.vespa.hosted.dockerapi.ContainerId; import com.yahoo.vespa.hosted.dockerapi.ContainerName; import com.yahoo.vespa.hosted.dockerapi.ProcessResult; import com.yahoo.vespa.hosted.node.admin.nodeagent.ContainerData; @@ -85,8 +86,8 @@ public class ContainerOperationsImplTest { } private Container makeContainer(String name, Container.State state, int pid) { - final Container container = new Container(name + ".fqdn", DockerImage.fromString("registry.example.com/mock"), null, - new ContainerName(name), state, pid); + final Container container = new Container(new ContainerId(name + "-id"), name + ".fqdn", + DockerImage.fromString("registry.example.com/mock"), null, new ContainerName(name), state, pid); when(containerEngine.getContainer(eq(container.name))).thenReturn(Optional.of(container)); return container; } diff --git a/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/integrationTests/ContainerEngineMock.java b/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/integrationTests/ContainerEngineMock.java index ef6564db2a5..7aeaa37b4af 100644 --- a/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/integrationTests/ContainerEngineMock.java +++ b/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/integrationTests/ContainerEngineMock.java @@ -4,6 +4,7 @@ package com.yahoo.vespa.hosted.node.admin.integrationTests; import com.yahoo.config.provision.DockerImage; import com.yahoo.vespa.hosted.dockerapi.Container; import com.yahoo.vespa.hosted.dockerapi.ContainerEngine; +import com.yahoo.vespa.hosted.dockerapi.ContainerId; import com.yahoo.vespa.hosted.dockerapi.ContainerName; import com.yahoo.vespa.hosted.dockerapi.ContainerResources; import com.yahoo.vespa.hosted.dockerapi.ContainerStats; @@ -25,12 +26,14 @@ import java.util.OptionalLong; * @author freva */ public class ContainerEngineMock implements ContainerEngine { + public static final ContainerId CONTAINER_ID = new ContainerId("af345"); + private final Map<ContainerName, Container> containersByContainerName = new HashMap<>(); private static final Object monitor = new Object(); @Override public CreateContainerCommand createContainerCommand(DockerImage dockerImage, ContainerName containerName) { - return new StartContainerCommandMock(dockerImage, containerName); + return new StartContainerCommandMock(CONTAINER_ID, dockerImage, containerName); } @Override @@ -48,7 +51,7 @@ public class ContainerEngineMock implements ContainerEngine { synchronized (monitor) { Container container = containersByContainerName.get(containerName); containersByContainerName.put(containerName, - new Container(container.hostname, container.image, container.resources, container.name, Container.State.EXITED, 0)); + new Container(container.id(), container.hostname, container.image, container.resources, container.name, Container.State.EXITED, 0)); } } @@ -64,7 +67,7 @@ public class ContainerEngineMock implements ContainerEngine { synchronized (monitor) { Container container = containersByContainerName.get(containerName); containersByContainerName.put(containerName, - new Container(container.hostname, container.image, containerResources, container.name, container.state, container.pid)); + new Container(container.id(), container.hostname, container.image, containerResources, container.name, container.state, container.pid)); } } @@ -104,12 +107,14 @@ public class ContainerEngineMock implements ContainerEngine { public class StartContainerCommandMock implements CreateContainerCommand { + private final ContainerId containerId; private final DockerImage dockerImage; private final ContainerName containerName; private String hostName; private ContainerResources containerResources; - public StartContainerCommandMock(DockerImage dockerImage, ContainerName containerName) { + public StartContainerCommandMock(ContainerId containerId, DockerImage dockerImage, ContainerName containerName) { + this.containerId = containerId; this.dockerImage = dockerImage; this.containerName = containerName; } @@ -200,7 +205,7 @@ public class ContainerEngineMock implements ContainerEngine { public void create() { synchronized (monitor) { containersByContainerName.put( - containerName, new Container(hostName, dockerImage, containerResources, containerName, Container.State.RUNNING, 2)); + containerName, new Container(containerId, hostName, dockerImage, containerResources, containerName, Container.State.RUNNING, 2)); } } } 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 fcd5e8cc187..97c83956a61 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 @@ -10,6 +10,7 @@ import com.yahoo.test.ManualClock; import com.yahoo.vespa.flags.InMemoryFlagSource; import com.yahoo.vespa.flags.PermanentFlags; import com.yahoo.vespa.hosted.dockerapi.Container; +import com.yahoo.vespa.hosted.dockerapi.ContainerId; import com.yahoo.vespa.hosted.dockerapi.ContainerName; import com.yahoo.vespa.hosted.dockerapi.ContainerResources; import com.yahoo.vespa.hosted.dockerapi.RegistryCredentials; @@ -54,6 +55,7 @@ import static org.mockito.Mockito.when; public class NodeAgentImplTest { private static final NodeResources resources = new NodeResources(2, 16, 250, 1, NodeResources.DiskSpeed.fast, NodeResources.StorageType.local); private static final Version vespaVersion = Version.fromString("1.2.3"); + private static final ContainerId containerId = new ContainerId("af23"); private static final String hostName = "host1.test.yahoo.com"; private final NodeAgentContextSupplier contextSupplier = mock(NodeAgentContextSupplier.class); @@ -226,7 +228,7 @@ public class NodeAgentImplTest { mockGetContainer(dockerImage, resourcesAfterThird, true); inOrder.verify(orchestrator, never()).suspend(any()); - inOrder.verify(containerOperations).updateContainer(eq(thirdContext), eq(resourcesAfterThird)); + inOrder.verify(containerOperations).updateContainer(eq(thirdContext), eq(containerId), eq(resourcesAfterThird)); inOrder.verify(containerOperations, never()).removeContainer(any(), any()); inOrder.verify(containerOperations, never()).startContainer(any()); inOrder.verify(orchestrator, never()).resume(any()); @@ -234,7 +236,7 @@ public class NodeAgentImplTest { // No changes nodeAgent.converge(thirdContext); inOrder.verify(orchestrator, never()).suspend(any()); - inOrder.verify(containerOperations, never()).updateContainer(eq(thirdContext), any()); + inOrder.verify(containerOperations, never()).updateContainer(eq(thirdContext), eq(containerId), any()); inOrder.verify(containerOperations, never()).removeContainer(any(), any()); inOrder.verify(orchestrator, never()).resume(any()); @@ -242,7 +244,7 @@ public class NodeAgentImplTest { flagSource.withDoubleFlag(PermanentFlags.CONTAINER_CPU_CAP.id(), 2.3); nodeAgent.doConverge(thirdContext); - inOrder.verify(containerOperations).updateContainer(eq(thirdContext), eq(ContainerResources.from(9.2, 4, 16))); + inOrder.verify(containerOperations).updateContainer(eq(thirdContext), eq(containerId), eq(ContainerResources.from(9.2, 4, 16))); inOrder.verify(orchestrator, never()).resume(any()); } @@ -267,13 +269,13 @@ public class NodeAgentImplTest { InOrder inOrder = inOrder(orchestrator, containerOperations, nodeRepository); inOrder.verify(orchestrator).resume(any(String.class)); inOrder.verify(containerOperations).removeContainer(eq(secondContext), any()); - inOrder.verify(containerOperations, never()).updateContainer(any(), any()); + inOrder.verify(containerOperations, never()).updateContainer(any(), any(), any()); inOrder.verify(containerOperations, never()).restartVespa(any()); inOrder.verify(nodeRepository).updateNodeAttributes(eq(hostName), eq(new NodeAttributes().withRestartGeneration(2))); nodeAgent.doConverge(secondContext); inOrder.verify(orchestrator).resume(any(String.class)); - inOrder.verify(containerOperations, never()).updateContainer(any(), any()); + inOrder.verify(containerOperations, never()).updateContainer(any(), any(), any()); inOrder.verify(containerOperations, never()).removeContainer(any(), any()); } @@ -641,14 +643,14 @@ public class NodeAgentImplTest { } inOrder.verify(orchestrator, never()).resume(any()); inOrder.verify(orchestrator, never()).suspend(any()); - inOrder.verify(containerOperations, never()).updateContainer(any(), any()); + inOrder.verify(containerOperations, never()).updateContainer(any(), any(), any()); clock.advance(Duration.ofSeconds(31)); nodeAgent.doConverge(context); inOrder.verify(orchestrator, never()).suspend(any()); - inOrder.verify(containerOperations).updateContainer(eq(context), eq(ContainerResources.from(0, 2, 16))); + inOrder.verify(containerOperations).updateContainer(eq(context), eq(containerId), eq(ContainerResources.from(0, 2, 16))); inOrder.verify(containerOperations, never()).removeContainer(any(), any()); inOrder.verify(containerOperations, never()).startContainer(any()); inOrder.verify(orchestrator, never()).resume(any()); @@ -656,7 +658,7 @@ public class NodeAgentImplTest { // No changes nodeAgent.converge(context); inOrder.verify(orchestrator, never()).suspend(any()); - inOrder.verify(containerOperations, never()).updateContainer(eq(context), any()); + inOrder.verify(containerOperations, never()).updateContainer(eq(context), eq(containerId), any()); inOrder.verify(containerOperations, never()).removeContainer(any(), any()); inOrder.verify(orchestrator, never()).resume(any()); } @@ -678,7 +680,7 @@ public class NodeAgentImplTest { nodeAgent.converge(context); inOrder.verify(orchestrator, never()).suspend(any(String.class)); - inOrder.verify(containerOperations, never()).updateContainer(eq(context), any()); + inOrder.verify(containerOperations, never()).updateContainer(eq(context), eq(containerId), any()); inOrder.verify(containerOperations, never()).removeContainer(any(), any()); inOrder.verify(orchestrator, never()).resume(any(String.class)); } @@ -728,10 +730,10 @@ public class NodeAgentImplTest { doAnswer(invoc -> { NodeAgentContext context = invoc.getArgument(0, NodeAgentContext.class); - ContainerResources resources = invoc.getArgument(1, ContainerResources.class); + ContainerResources resources = invoc.getArgument(2, ContainerResources.class); mockGetContainer(context.node().wantedDockerImage().get(), resources, true); return null; - }).when(containerOperations).updateContainer(any(), any()); + }).when(containerOperations).updateContainer(any(), any(), any()); return new NodeAgentImpl(contextSupplier, nodeRepository, orchestrator, containerOperations, () -> RegistryCredentials.none, storageMaintainer, flagSource, @@ -750,6 +752,7 @@ public class NodeAgentImplTest { throw new IllegalArgumentException(); return dockerImage != null ? Optional.of(new Container( + containerId, hostName, dockerImage, containerResources, |