aboutsummaryrefslogtreecommitdiffstats
path: root/node-admin/src/test
diff options
context:
space:
mode:
authorHåkon Hallingstad <hakon@verizonmedia.com>2020-09-07 15:06:53 +0200
committerHåkon Hallingstad <hakon@verizonmedia.com>2020-09-07 15:06:53 +0200
commite858dfe2815e6ffda326f69f1a62bcb0f4c2c3db (patch)
treefd8ec0e8c682497147f0ecf3ca2a6eee9d00c8dc /node-admin/src/test
parentdb9105023dc06c7ca56a2914735dba663bd21d5c (diff)
Move to container engine neutral names
Diffstat (limited to 'node-admin/src/test')
-rw-r--r--node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/configserver/noderepository/RealNodeRepositoryTest.java6
-rw-r--r--node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/docker/ContainerOperationsImplTest.java (renamed from node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/docker/DockerOperationsImplTest.java)28
-rw-r--r--node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/integrationTests/DockerFailTest.java20
-rw-r--r--node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/integrationTests/DockerMock.java22
-rw-r--r--node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/integrationTests/DockerTester.java14
-rw-r--r--node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/integrationTests/MultiDockerTest.java20
-rw-r--r--node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/integrationTests/RebootTest.java10
-rw-r--r--node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/integrationTests/RestartTest.java12
-rw-r--r--node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/maintenance/acl/AclMaintainerTest.java44
-rw-r--r--node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/maintenance/coredump/CoreCollectorTest.java4
-rw-r--r--node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/nodeagent/NodeAgentImplTest.java324
11 files changed, 252 insertions, 252 deletions
diff --git a/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/configserver/noderepository/RealNodeRepositoryTest.java b/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/configserver/noderepository/RealNodeRepositoryTest.java
index 2e40596bcf0..e39161f828a 100644
--- a/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/configserver/noderepository/RealNodeRepositoryTest.java
+++ b/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/configserver/noderepository/RealNodeRepositoryTest.java
@@ -3,7 +3,7 @@ package com.yahoo.vespa.hosted.node.admin.configserver.noderepository;
import com.yahoo.application.Networking;
import com.yahoo.application.container.JDisc;
-import com.yahoo.config.provision.DockerImage;
+import com.yahoo.config.provision.ContainerImage;
import com.yahoo.config.provision.NodeResources;
import com.yahoo.config.provision.NodeType;
import com.yahoo.config.provision.host.FlavorOverrides;
@@ -106,7 +106,7 @@ public class RealNodeRepositoryTest {
assertThat(containersToRun.size(), is(1));
NodeSpec node = containersToRun.get(0);
assertThat(node.hostname(), is("host4.yahoo.com"));
- assertThat(node.wantedDockerImage().get(), is(DockerImage.fromString("docker-registry.domain.tld:8080/dist/vespa:6.42.0")));
+ assertThat(node.wantedDockerImage().get(), is(ContainerImage.fromString("docker-registry.domain.tld:8080/dist/vespa:6.42.0")));
assertThat(node.state(), is(NodeState.active));
assertThat(node.wantedRestartGeneration().get(), is(0L));
assertThat(node.currentRestartGeneration().get(), is(0L));
@@ -137,7 +137,7 @@ public class RealNodeRepositoryTest {
hostname,
new NodeAttributes()
.withRestartGeneration(1)
- .withDockerImage(DockerImage.fromString("image-1:6.2.3")));
+ .withDockerImage(ContainerImage.fromString("image-1:6.2.3")));
}
@Test
diff --git a/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/docker/DockerOperationsImplTest.java b/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/docker/ContainerOperationsImplTest.java
index bacebcc42c0..4aa59c63662 100644
--- a/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/docker/DockerOperationsImplTest.java
+++ b/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/docker/ContainerOperationsImplTest.java
@@ -2,10 +2,10 @@
package com.yahoo.vespa.hosted.node.admin.docker;
import com.google.common.net.InetAddresses;
-import com.yahoo.config.provision.DockerImage;
+import com.yahoo.config.provision.ContainerImage;
import com.yahoo.vespa.hosted.dockerapi.Container;
+import com.yahoo.vespa.hosted.dockerapi.ContainerEngine;
import com.yahoo.vespa.hosted.dockerapi.ContainerName;
-import com.yahoo.vespa.hosted.dockerapi.Docker;
import com.yahoo.vespa.hosted.dockerapi.ProcessResult;
import com.yahoo.vespa.hosted.node.admin.nodeagent.ContainerData;
import com.yahoo.vespa.hosted.node.admin.nodeagent.NodeAgentContext;
@@ -32,26 +32,26 @@ import static org.mockito.Mockito.times;
import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.when;
-public class DockerOperationsImplTest {
- private final Docker docker = mock(Docker.class);
+public class ContainerOperationsImplTest {
+ private final ContainerEngine containerEngine = mock(ContainerEngine.class);
private final TestTerminal terminal = new TestTerminal();
private final IPAddresses ipAddresses = new IPAddressesMock();
private final FileSystem fileSystem = TestFileSystem.create();
- private final DockerOperationsImpl dockerOperations = new DockerOperationsImpl(
- docker, terminal, ipAddresses, fileSystem);
+ private final ContainerOperationsImpl dockerOperations = new ContainerOperationsImpl(
+ containerEngine, terminal, ipAddresses, fileSystem);
@Test
public void processResultFromNodeProgramWhenSuccess() {
final NodeAgentContext context = new NodeAgentContextImpl.Builder("container-123.domain.tld").build();
final ProcessResult actualResult = new ProcessResult(0, "output", "errors");
- when(docker.executeInContainerAsUser(any(), any(), any(), any()))
+ when(containerEngine.executeInContainerAsUser(any(), any(), any(), any()))
.thenReturn(actualResult); // output from node program
ProcessResult result = dockerOperations.executeNodeCtlInContainer(context, "start");
- final InOrder inOrder = inOrder(docker);
- inOrder.verify(docker, times(1)).executeInContainerAsUser(
+ final InOrder inOrder = inOrder(containerEngine);
+ inOrder.verify(containerEngine, times(1)).executeInContainerAsUser(
eq(context.containerName()),
eq("root"),
eq(OptionalLong.empty()),
@@ -66,7 +66,7 @@ public class DockerOperationsImplTest {
final NodeAgentContext context = new NodeAgentContextImpl.Builder("container-123.domain.tld").build();
final ProcessResult actualResult = new ProcessResult(3, "output", "errors");
- when(docker.executeInContainerAsUser(any(), any(), any(), any()))
+ when(containerEngine.executeInContainerAsUser(any(), any(), any(), any()))
.thenReturn(actualResult); // output from node program
dockerOperations.executeNodeCtlInContainer(context, "start");
@@ -83,9 +83,9 @@ public class DockerOperationsImplTest {
}
private Container makeContainer(String name, Container.State state, int pid) {
- final Container container = new Container(name + ".fqdn", DockerImage.fromString("mock"), null,
+ final Container container = new Container(name + ".fqdn", ContainerImage.fromString("mock"), null,
new ContainerName(name), state, pid);
- when(docker.getContainer(eq(container.name))).thenReturn(Optional.of(container));
+ when(containerEngine.getContainer(eq(container.name))).thenReturn(Optional.of(container));
return container;
}
@@ -100,7 +100,7 @@ public class DockerOperationsImplTest {
verify(containerData, times(1)).addFile(
fileSystem.getPath("/etc/hosts"),
- "# This file was generated by com.yahoo.vespa.hosted.node.admin.docker.DockerOperationsImpl\n" +
+ "# This file was generated by com.yahoo.vespa.hosted.node.admin.docker.ContainerOperationsImpl\n" +
"127.0.0.1 localhost\n" +
"::1 localhost ip6-localhost ip6-loopback\n" +
"fe00::0 ip6-localnet\n" +
@@ -113,7 +113,7 @@ public class DockerOperationsImplTest {
verify(containerData, times(1)).addFile(
fileSystem.getPath("/etc/hosts"),
- "# This file was generated by com.yahoo.vespa.hosted.node.admin.docker.DockerOperationsImpl\n" +
+ "# This file was generated by com.yahoo.vespa.hosted.node.admin.docker.ContainerOperationsImpl\n" +
"127.0.0.1 localhost\n" +
"::1 localhost ip6-localhost ip6-loopback\n" +
"fe00::0 ip6-localnet\n" +
diff --git a/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/integrationTests/DockerFailTest.java b/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/integrationTests/DockerFailTest.java
index 0ed52cae5b8..50435ccf46d 100644
--- a/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/integrationTests/DockerFailTest.java
+++ b/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/integrationTests/DockerFailTest.java
@@ -1,7 +1,7 @@
// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.node.admin.integrationTests;
-import com.yahoo.config.provision.DockerImage;
+import com.yahoo.config.provision.ContainerImage;
import com.yahoo.vespa.hosted.dockerapi.ContainerName;
import com.yahoo.vespa.hosted.node.admin.configserver.noderepository.NodeSpec;
import org.junit.Test;
@@ -19,24 +19,24 @@ public class DockerFailTest {
@Test
public void dockerFailTest() {
try (DockerTester tester = new DockerTester()) {
- final DockerImage dockerImage = DockerImage.fromString("dockerImage");
+ final ContainerImage containerImage = ContainerImage.fromString("containerImage");
final ContainerName containerName = new ContainerName("host1");
final String hostname = "host1.test.yahoo.com";
tester.addChildNodeRepositoryNode(NodeSpec.Builder
.testSpec(hostname)
- .wantedDockerImage(dockerImage)
- .currentDockerImage(dockerImage)
+ .wantedDockerImage(containerImage)
+ .currentDockerImage(containerImage)
.build());
- tester.inOrder(tester.docker).createContainerCommand(eq(dockerImage), eq(containerName));
- tester.inOrder(tester.docker).executeInContainerAsUser(
+ tester.inOrder(tester.containerEngine).createContainerCommand(eq(containerImage), eq(containerName));
+ tester.inOrder(tester.containerEngine).executeInContainerAsUser(
eq(containerName), eq("root"), any(), eq(DockerTester.NODE_PROGRAM), eq("resume"));
- tester.docker.deleteContainer(new ContainerName("host1"));
+ tester.containerEngine.deleteContainer(new ContainerName("host1"));
- tester.inOrder(tester.docker).deleteContainer(eq(containerName));
- tester.inOrder(tester.docker).createContainerCommand(eq(dockerImage), eq(containerName));
- tester.inOrder(tester.docker).executeInContainerAsUser(
+ tester.inOrder(tester.containerEngine).deleteContainer(eq(containerName));
+ tester.inOrder(tester.containerEngine).createContainerCommand(eq(containerImage), eq(containerName));
+ tester.inOrder(tester.containerEngine).executeInContainerAsUser(
eq(containerName), eq("root"), any(), eq(DockerTester.NODE_PROGRAM), eq("resume"));
verify(tester.nodeRepository, never()).updateNodeAttributes(any(), any());
diff --git a/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/integrationTests/DockerMock.java b/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/integrationTests/DockerMock.java
index 1484e40afe9..000d0e69550 100644
--- a/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/integrationTests/DockerMock.java
+++ b/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/integrationTests/DockerMock.java
@@ -1,12 +1,12 @@
// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.node.admin.integrationTests;
-import com.yahoo.config.provision.DockerImage;
+import com.yahoo.config.provision.ContainerImage;
import com.yahoo.vespa.hosted.dockerapi.Container;
+import com.yahoo.vespa.hosted.dockerapi.ContainerEngine;
import com.yahoo.vespa.hosted.dockerapi.ContainerName;
import com.yahoo.vespa.hosted.dockerapi.ContainerResources;
import com.yahoo.vespa.hosted.dockerapi.ContainerStats;
-import com.yahoo.vespa.hosted.dockerapi.Docker;
import com.yahoo.vespa.hosted.dockerapi.ProcessResult;
import java.net.InetAddress;
@@ -23,13 +23,13 @@ import java.util.OptionalLong;
*
* @author freva
*/
-public class DockerMock implements Docker {
+public class DockerMock implements ContainerEngine {
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);
+ public CreateContainerCommand createContainerCommand(ContainerImage containerImage, ContainerName containerName) {
+ return new StartContainerCommandMock(containerImage, containerName);
}
@Override
@@ -75,14 +75,14 @@ public class DockerMock implements Docker {
}
@Override
- public boolean pullImageAsyncIfNeeded(DockerImage image) {
+ public boolean pullImageAsyncIfNeeded(ContainerImage image) {
synchronized (monitor) {
return false;
}
}
@Override
- public boolean deleteUnusedDockerImages(List<DockerImage> excludes, Duration minImageAgeToDelete) {
+ public boolean deleteUnusedContainerImages(List<ContainerImage> excludes, Duration minImageAgeToDelete) {
return false;
}
@@ -98,13 +98,13 @@ public class DockerMock implements Docker {
public class StartContainerCommandMock implements CreateContainerCommand {
- private final DockerImage dockerImage;
+ private final ContainerImage containerImage;
private final ContainerName containerName;
private String hostName;
private ContainerResources containerResources;
- public StartContainerCommandMock(DockerImage dockerImage, ContainerName containerName) {
- this.dockerImage = dockerImage;
+ public StartContainerCommandMock(ContainerImage containerImage, ContainerName containerName) {
+ this.containerImage = containerImage;
this.containerName = containerName;
}
@@ -194,7 +194,7 @@ public class DockerMock implements Docker {
public void create() {
synchronized (monitor) {
containersByContainerName.put(
- containerName, new Container(hostName, dockerImage, containerResources, containerName, Container.State.RUNNING, 2));
+ containerName, new Container(hostName, containerImage, containerResources, containerName, Container.State.RUNNING, 2));
}
}
}
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 bf14ac2ce5e..da6f115463c 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
@@ -4,12 +4,12 @@ package com.yahoo.vespa.hosted.node.admin.integrationTests;
import com.yahoo.config.provision.HostName;
import com.yahoo.config.provision.NodeType;
import com.yahoo.vespa.flags.InMemoryFlagSource;
-import com.yahoo.vespa.hosted.dockerapi.Docker;
+import com.yahoo.vespa.hosted.dockerapi.ContainerEngine;
import com.yahoo.vespa.hosted.dockerapi.metrics.Metrics;
import com.yahoo.vespa.hosted.node.admin.configserver.noderepository.NodeSpec;
import com.yahoo.vespa.hosted.node.admin.configserver.orchestrator.Orchestrator;
-import com.yahoo.vespa.hosted.node.admin.docker.DockerOperations;
-import com.yahoo.vespa.hosted.node.admin.docker.DockerOperationsImpl;
+import com.yahoo.vespa.hosted.node.admin.docker.ContainerOperations;
+import com.yahoo.vespa.hosted.node.admin.docker.ContainerOperationsImpl;
import com.yahoo.vespa.hosted.node.admin.maintenance.StorageMaintainer;
import com.yahoo.vespa.hosted.node.admin.nodeadmin.NodeAdminImpl;
import com.yahoo.vespa.hosted.node.admin.nodeadmin.NodeAdminStateUpdater;
@@ -51,11 +51,11 @@ public class DockerTester implements AutoCloseable {
private final Thread loopThread;
- final Docker docker = spy(new DockerMock());
+ final ContainerEngine containerEngine = spy(new DockerMock());
final NodeRepoMock nodeRepository = spy(new NodeRepoMock());
final Orchestrator orchestrator = mock(Orchestrator.class);
final StorageMaintainer storageMaintainer = mock(StorageMaintainer.class);
- final InOrder inOrder = Mockito.inOrder(docker, nodeRepository, orchestrator, storageMaintainer);
+ final InOrder inOrder = Mockito.inOrder(containerEngine, nodeRepository, orchestrator, storageMaintainer);
final InMemoryFlagSource flagSource = new InMemoryFlagSource();
final NodeAdminStateUpdater nodeAdminStateUpdater;
@@ -81,10 +81,10 @@ public class DockerTester implements AutoCloseable {
Clock clock = Clock.systemUTC();
Metrics metrics = new Metrics();
FileSystem fileSystem = TestFileSystem.create();
- DockerOperations dockerOperations = new DockerOperationsImpl(docker, terminal, ipAddresses, fileSystem);
+ ContainerOperations containerOperations = new ContainerOperationsImpl(containerEngine, terminal, ipAddresses, fileSystem);
NodeAgentFactory nodeAgentFactory = (contextSupplier, nodeContext) -> new NodeAgentImpl(
- contextSupplier, nodeRepository, orchestrator, dockerOperations, storageMaintainer, flagSource,
+ contextSupplier, nodeRepository, orchestrator, containerOperations, storageMaintainer, flagSource,
Optional.empty(), Optional.empty(), Optional.empty(), clock, Duration.ofSeconds(-1));
nodeAdmin = new NodeAdminImpl(nodeAgentFactory, metrics, clock, Duration.ofMillis(10), Duration.ZERO);
NodeAgentContextFactory nodeAgentContextFactory = (nodeSpec, acl) ->
diff --git a/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/integrationTests/MultiDockerTest.java b/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/integrationTests/MultiDockerTest.java
index e5156e68810..1c2bd86a00e 100644
--- a/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/integrationTests/MultiDockerTest.java
+++ b/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/integrationTests/MultiDockerTest.java
@@ -1,7 +1,7 @@
// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.node.admin.integrationTests;
-import com.yahoo.config.provision.DockerImage;
+import com.yahoo.config.provision.ContainerImage;
import com.yahoo.vespa.hosted.dockerapi.ContainerName;
import com.yahoo.vespa.hosted.node.admin.configserver.noderepository.NodeAttributes;
import com.yahoo.vespa.hosted.node.admin.configserver.noderepository.NodeSpec;
@@ -20,31 +20,31 @@ public class MultiDockerTest {
@Test
public void test() {
try (DockerTester tester = new DockerTester()) {
- addAndWaitForNode(tester, "host1.test.yahoo.com", DockerImage.fromString("image1"));
+ addAndWaitForNode(tester, "host1.test.yahoo.com", ContainerImage.fromString("image1"));
NodeSpec nodeSpec2 = addAndWaitForNode(
- tester, "host2.test.yahoo.com", DockerImage.fromString("image2"));
+ tester, "host2.test.yahoo.com", ContainerImage.fromString("image2"));
tester.addChildNodeRepositoryNode(NodeSpec.Builder.testSpec(nodeSpec2.hostname(), NodeState.dirty).build());
- tester.inOrder(tester.docker).deleteContainer(eq(new ContainerName("host2")));
+ tester.inOrder(tester.containerEngine).deleteContainer(eq(new ContainerName("host2")));
tester.inOrder(tester.storageMaintainer).archiveNodeStorage(
argThat(context -> context.containerName().equals(new ContainerName("host2"))));
tester.inOrder(tester.nodeRepository).setNodeState(eq(nodeSpec2.hostname()), eq(NodeState.ready));
- addAndWaitForNode(tester, "host3.test.yahoo.com", DockerImage.fromString("image1"));
+ addAndWaitForNode(tester, "host3.test.yahoo.com", ContainerImage.fromString("image1"));
}
}
- private NodeSpec addAndWaitForNode(DockerTester tester, String hostName, DockerImage dockerImage) {
- NodeSpec nodeSpec = NodeSpec.Builder.testSpec(hostName).wantedDockerImage(dockerImage).build();
+ private NodeSpec addAndWaitForNode(DockerTester tester, String hostName, ContainerImage containerImage) {
+ NodeSpec nodeSpec = NodeSpec.Builder.testSpec(hostName).wantedDockerImage(containerImage).build();
tester.addChildNodeRepositoryNode(nodeSpec);
ContainerName containerName = ContainerName.fromHostname(hostName);
- tester.inOrder(tester.docker).createContainerCommand(eq(dockerImage), eq(containerName));
- tester.inOrder(tester.docker).executeInContainerAsUser(
+ tester.inOrder(tester.containerEngine).createContainerCommand(eq(containerImage), eq(containerName));
+ tester.inOrder(tester.containerEngine).executeInContainerAsUser(
eq(containerName), eq("root"), any(), eq(DockerTester.NODE_PROGRAM), eq("resume"));
tester.inOrder(tester.nodeRepository).updateNodeAttributes(eq(hostName),
- eq(new NodeAttributes().withDockerImage(dockerImage).withVespaVersion(dockerImage.tagAsVersion())));
+ eq(new NodeAttributes().withDockerImage(containerImage).withVespaVersion(containerImage.tagAsVersion())));
return nodeSpec;
}
diff --git a/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/integrationTests/RebootTest.java b/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/integrationTests/RebootTest.java
index 30f23de15bf..4fb1c578fac 100644
--- a/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/integrationTests/RebootTest.java
+++ b/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/integrationTests/RebootTest.java
@@ -1,7 +1,7 @@
// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.node.admin.integrationTests;
-import com.yahoo.config.provision.DockerImage;
+import com.yahoo.config.provision.ContainerImage;
import com.yahoo.vespa.hosted.dockerapi.ContainerName;
import com.yahoo.vespa.hosted.node.admin.configserver.noderepository.NodeSpec;
import com.yahoo.vespa.hosted.node.admin.nodeadmin.NodeAdminStateUpdater;
@@ -23,14 +23,14 @@ import static org.mockito.ArgumentMatchers.eq;
public class RebootTest {
private final String hostname = "host1.test.yahoo.com";
- private final DockerImage dockerImage = DockerImage.fromString("dockerImage");
+ private final ContainerImage containerImage = ContainerImage.fromString("containerImage");
@Test
public void test() {
try (DockerTester tester = new DockerTester()) {
- tester.addChildNodeRepositoryNode(NodeSpec.Builder.testSpec(hostname).wantedDockerImage(dockerImage).build());
+ tester.addChildNodeRepositoryNode(NodeSpec.Builder.testSpec(hostname).wantedDockerImage(containerImage).build());
- tester.inOrder(tester.docker).createContainerCommand(eq(dockerImage), eq(new ContainerName("host1")));
+ tester.inOrder(tester.containerEngine).createContainerCommand(eq(containerImage), eq(new ContainerName("host1")));
try {
tester.setWantedState(NodeAdminStateUpdater.State.SUSPENDED);
@@ -38,7 +38,7 @@ public class RebootTest {
tester.inOrder(tester.orchestrator).suspend(
eq(HOST_HOSTNAME.value()), eq(List.of(hostname, HOST_HOSTNAME.value())));
- tester.inOrder(tester.docker).executeInContainerAsUser(
+ tester.inOrder(tester.containerEngine).executeInContainerAsUser(
eq(new ContainerName("host1")), eq("root"), eq(OptionalLong.empty()), eq(NODE_PROGRAM), eq("stop"));
assertTrue(tester.nodeAdmin.setFrozen(true));
}
diff --git a/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/integrationTests/RestartTest.java b/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/integrationTests/RestartTest.java
index dd727d102e0..caf7945d05b 100644
--- a/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/integrationTests/RestartTest.java
+++ b/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/integrationTests/RestartTest.java
@@ -1,7 +1,7 @@
// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.node.admin.integrationTests;
-import com.yahoo.config.provision.DockerImage;
+import com.yahoo.config.provision.ContainerImage;
import com.yahoo.vespa.hosted.dockerapi.ContainerName;
import com.yahoo.vespa.hosted.node.admin.configserver.noderepository.NodeAttributes;
import com.yahoo.vespa.hosted.node.admin.configserver.noderepository.NodeSpec;
@@ -22,20 +22,20 @@ public class RestartTest {
public void test() {
try (DockerTester tester = new DockerTester()) {
String hostname = "host1.test.yahoo.com";
- DockerImage dockerImage = DockerImage.fromString("dockerImage:1.2.3");
+ ContainerImage containerImage = ContainerImage.fromString("containerImage:1.2.3");
- tester.addChildNodeRepositoryNode(NodeSpec.Builder.testSpec(hostname).wantedDockerImage(dockerImage).build());
+ tester.addChildNodeRepositoryNode(NodeSpec.Builder.testSpec(hostname).wantedDockerImage(containerImage).build());
- tester.inOrder(tester.docker).createContainerCommand(eq(dockerImage), eq(new ContainerName("host1")));
+ tester.inOrder(tester.containerEngine).createContainerCommand(eq(containerImage), eq(new ContainerName("host1")));
tester.inOrder(tester.nodeRepository).updateNodeAttributes(
- eq(hostname), eq(new NodeAttributes().withDockerImage(dockerImage).withVespaVersion(dockerImage.tagAsVersion())));
+ eq(hostname), eq(new NodeAttributes().withDockerImage(containerImage).withVespaVersion(containerImage.tagAsVersion())));
// Increment wantedRestartGeneration to 2 in node-repo
tester.addChildNodeRepositoryNode(new NodeSpec.Builder(tester.nodeRepository.getNode(hostname))
.wantedRestartGeneration(2).build());
tester.inOrder(tester.orchestrator).suspend(eq(hostname));
- tester.inOrder(tester.docker).executeInContainerAsUser(
+ tester.inOrder(tester.containerEngine).executeInContainerAsUser(
eq(new ContainerName("host1")), any(), any(), eq(NODE_PROGRAM), eq("restart-vespa"));
tester.inOrder(tester.nodeRepository).updateNodeAttributes(
eq(hostname), eq(new NodeAttributes().withRestartGeneration(2)));
diff --git a/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/maintenance/acl/AclMaintainerTest.java b/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/maintenance/acl/AclMaintainerTest.java
index adecc370b85..cab99b214b3 100644
--- a/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/maintenance/acl/AclMaintainerTest.java
+++ b/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/maintenance/acl/AclMaintainerTest.java
@@ -2,7 +2,7 @@
package com.yahoo.vespa.hosted.node.admin.maintenance.acl;
import com.yahoo.vespa.hosted.node.admin.configserver.noderepository.Acl;
-import com.yahoo.vespa.hosted.node.admin.docker.DockerOperations;
+import com.yahoo.vespa.hosted.node.admin.docker.ContainerOperations;
import com.yahoo.vespa.hosted.node.admin.nodeagent.NodeAgentContext;
import com.yahoo.vespa.hosted.node.admin.nodeagent.NodeAgentContextImpl;
import com.yahoo.vespa.hosted.node.admin.task.util.file.UnixPath;
@@ -35,9 +35,9 @@ public class AclMaintainerTest {
private static final String EMPTY_FILTER_TABLE = "-P INPUT ACCEPT\n-P FORWARD ACCEPT\n-P OUTPUT ACCEPT\n";
private static final String EMPTY_NAT_TABLE = "-P PREROUTING ACCEPT\n-P INPUT ACCEPT\n-P OUTPUT ACCEPT\n-P POSTROUTING ACCEPT\n";
- private final DockerOperations dockerOperations = mock(DockerOperations.class);
+ private final ContainerOperations containerOperations = mock(ContainerOperations.class);
private final IPAddressesMock ipAddresses = new IPAddressesMock();
- private final AclMaintainer aclMaintainer = new AclMaintainer(dockerOperations, ipAddresses);
+ private final AclMaintainer aclMaintainer = new AclMaintainer(containerOperations, ipAddresses);
private final FileSystem fileSystem = TestFileSystem.create();
private final Function<Acl, NodeAgentContext> contextGenerator =
@@ -63,10 +63,10 @@ public class AclMaintainerTest {
aclMaintainer.converge(context);
- verify(dockerOperations, times(4)).executeCommandInNetworkNamespace(eq(context), any(), eq("-S"), eq("-t"), any());
- verify(dockerOperations, times(2)).executeCommandInNetworkNamespace(eq(context), eq("iptables-restore"), any());
- verify(dockerOperations, times(2)).executeCommandInNetworkNamespace(eq(context), eq("ip6tables-restore"), any());
- verifyNoMoreInteractions(dockerOperations);
+ verify(containerOperations, times(4)).executeCommandInNetworkNamespace(eq(context), any(), eq("-S"), eq("-t"), any());
+ verify(containerOperations, times(2)).executeCommandInNetworkNamespace(eq(context), eq("iptables-restore"), any());
+ verify(containerOperations, times(2)).executeCommandInNetworkNamespace(eq(context), eq("ip6tables-restore"), any());
+ verifyNoMoreInteractions(containerOperations);
List<String> expected = List.of(
// IPv4 filter table restore
@@ -130,10 +130,10 @@ public class AclMaintainerTest {
aclMaintainer.converge(context);
- verify(dockerOperations, times(2)).executeCommandInNetworkNamespace(eq(context), any(), eq("-S"), eq("-t"), any());
- verify(dockerOperations, times(1)).executeCommandInNetworkNamespace(eq(context), eq("iptables-restore"), any());
- verify(dockerOperations, times(1)).executeCommandInNetworkNamespace(eq(context), eq("ip6tables-restore"), any());
- verifyNoMoreInteractions(dockerOperations);
+ verify(containerOperations, times(2)).executeCommandInNetworkNamespace(eq(context), any(), eq("-S"), eq("-t"), any());
+ verify(containerOperations, times(1)).executeCommandInNetworkNamespace(eq(context), eq("iptables-restore"), any());
+ verify(containerOperations, times(1)).executeCommandInNetworkNamespace(eq(context), eq("ip6tables-restore"), any());
+ verifyNoMoreInteractions(containerOperations);
List<String> expected = List.of(
// IPv4 filter table restore
@@ -187,10 +187,10 @@ public class AclMaintainerTest {
aclMaintainer.converge(context);
- verify(dockerOperations, times(3)).executeCommandInNetworkNamespace(eq(context), any(), eq("-S"), eq("-t"), any());
- verify(dockerOperations, times(1)).executeCommandInNetworkNamespace(eq(context), eq("iptables-restore"), any());
- verify(dockerOperations, never()).executeCommandInNetworkNamespace(eq(context), eq("ip6tables-restore"), any()); //we don't have a ip4 address for the container so no redirect
- verifyNoMoreInteractions(dockerOperations);
+ verify(containerOperations, times(3)).executeCommandInNetworkNamespace(eq(context), any(), eq("-S"), eq("-t"), any());
+ verify(containerOperations, times(1)).executeCommandInNetworkNamespace(eq(context), eq("iptables-restore"), any());
+ verify(containerOperations, never()).executeCommandInNetworkNamespace(eq(context), eq("ip6tables-restore"), any()); //we don't have a ip4 address for the container so no redirect
+ verifyNoMoreInteractions(containerOperations);
List<String> expected = List.of(
"*filter\n" +
@@ -231,15 +231,15 @@ public class AclMaintainerTest {
"-P POSTROUTING ACCEPT\n" +
"-A OUTPUT -d 2001::1/128 -j REDIRECT\n");
- when(dockerOperations.executeCommandInNetworkNamespace(eq(context), eq("iptables-restore"), any()))
+ when(containerOperations.executeCommandInNetworkNamespace(eq(context), eq("iptables-restore"), any()))
.thenThrow(new RuntimeException("iptables restore failed"));
aclMaintainer.converge(context);
- verify(dockerOperations, times(3)).executeCommandInNetworkNamespace(eq(context), any(), eq("-S"), eq("-t"), any());
- verify(dockerOperations, times(1)).executeCommandInNetworkNamespace(eq(context), eq("iptables-restore"), any());
- verify(dockerOperations, times(1)).executeCommandInNetworkNamespace(eq(context), eq("iptables"), eq("-F"), eq("-t"), eq("filter"));
- verifyNoMoreInteractions(dockerOperations);
+ verify(containerOperations, times(3)).executeCommandInNetworkNamespace(eq(context), any(), eq("-S"), eq("-t"), any());
+ verify(containerOperations, times(1)).executeCommandInNetworkNamespace(eq(context), eq("iptables-restore"), any());
+ verify(containerOperations, times(1)).executeCommandInNetworkNamespace(eq(context), eq("iptables"), eq("-F"), eq("-t"), eq("filter"));
+ verifyNoMoreInteractions(containerOperations);
aclMaintainer.converge(context);
}
@@ -250,11 +250,11 @@ public class AclMaintainerTest {
String path = invoc.getArgument(2);
writtenFileContents.add(new UnixPath(path).readUtf8File());
return new CommandResult(null, 0, "");
- }).when(dockerOperations).executeCommandInNetworkNamespace(any(), endsWith("-restore"), any());
+ }).when(containerOperations).executeCommandInNetworkNamespace(any(), endsWith("-restore"), any());
}
private void whenListRules(NodeAgentContext context, String table, IPVersion ipVersion, String output) {
- when(dockerOperations.executeCommandInNetworkNamespace(
+ when(containerOperations.executeCommandInNetworkNamespace(
eq(context), eq(ipVersion.iptablesCmd()), eq("-S"), eq("-t"), eq(table)))
.thenReturn(new CommandResult(null, 0, output));
}
diff --git a/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/maintenance/coredump/CoreCollectorTest.java b/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/maintenance/coredump/CoreCollectorTest.java
index f8d14eea996..0be68e905ca 100644
--- a/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/maintenance/coredump/CoreCollectorTest.java
+++ b/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/maintenance/coredump/CoreCollectorTest.java
@@ -2,7 +2,7 @@
package com.yahoo.vespa.hosted.node.admin.maintenance.coredump;
import com.yahoo.vespa.hosted.dockerapi.ProcessResult;
-import com.yahoo.vespa.hosted.node.admin.docker.DockerOperations;
+import com.yahoo.vespa.hosted.node.admin.docker.ContainerOperations;
import com.yahoo.vespa.hosted.node.admin.nodeagent.NodeAgentContext;
import com.yahoo.vespa.hosted.node.admin.nodeagent.NodeAgentContextImpl;
import org.junit.Test;
@@ -23,7 +23,7 @@ import static org.mockito.Mockito.when;
public class CoreCollectorTest {
private final String GDB_PATH = "/opt/rh/devtoolset-9/root/bin/gdb";
private final String JDK_PATH = "/path/to/jdk/java";
- private final DockerOperations docker = mock(DockerOperations.class);
+ private final ContainerOperations docker = mock(ContainerOperations.class);
private final CoreCollector coreCollector = new CoreCollector(docker);
private final NodeAgentContext context = new NodeAgentContextImpl.Builder("container-123.domain.tld").build();
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 dc1c0466d39..43bb73ae8d0 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
@@ -3,7 +3,7 @@ package com.yahoo.vespa.hosted.node.admin.nodeagent;
import com.yahoo.component.Version;
import com.yahoo.config.provision.ApplicationId;
-import com.yahoo.config.provision.DockerImage;
+import com.yahoo.config.provision.ContainerImage;
import com.yahoo.config.provision.NodeResources;
import com.yahoo.config.provision.NodeType;
import com.yahoo.test.ManualClock;
@@ -19,7 +19,7 @@ import com.yahoo.vespa.hosted.node.admin.configserver.noderepository.NodeSpec;
import com.yahoo.vespa.hosted.node.admin.configserver.noderepository.NodeState;
import com.yahoo.vespa.hosted.node.admin.configserver.orchestrator.Orchestrator;
import com.yahoo.vespa.hosted.node.admin.configserver.orchestrator.OrchestratorException;
-import com.yahoo.vespa.hosted.node.admin.docker.DockerOperations;
+import com.yahoo.vespa.hosted.node.admin.docker.ContainerOperations;
import com.yahoo.vespa.hosted.node.admin.maintenance.StorageMaintainer;
import com.yahoo.vespa.hosted.node.admin.maintenance.acl.AclMaintainer;
import com.yahoo.vespa.hosted.node.admin.maintenance.identity.CredentialsMaintainer;
@@ -55,8 +55,8 @@ public class NodeAgentImplTest {
private static final String hostName = "host1.test.yahoo.com";
private final NodeAgentContextSupplier contextSupplier = mock(NodeAgentContextSupplier.class);
- private final DockerImage dockerImage = DockerImage.fromString("dockerImage");
- private final DockerOperations dockerOperations = mock(DockerOperations.class);
+ private final ContainerImage containerImage = ContainerImage.fromString("containerImage");
+ private final ContainerOperations containerOperations = mock(ContainerOperations.class);
private final NodeRepository nodeRepository = mock(NodeRepository.class);
private final Orchestrator orchestrator = mock(Orchestrator.class);
private final StorageMaintainer storageMaintainer = mock(StorageMaintainer.class);
@@ -70,37 +70,37 @@ public class NodeAgentImplTest {
@Test
public void upToDateContainerIsUntouched() {
final NodeSpec node = nodeBuilder(NodeState.active)
- .wantedDockerImage(dockerImage).currentDockerImage(dockerImage)
+ .wantedDockerImage(containerImage).currentDockerImage(containerImage)
.wantedVespaVersion(vespaVersion).currentVespaVersion(vespaVersion)
.allowedToBeDown(false)
.build();
NodeAgentContext context = createContext(node);
- NodeAgentImpl nodeAgent = makeNodeAgent(dockerImage, true);
+ NodeAgentImpl nodeAgent = makeNodeAgent(containerImage, true);
when(nodeRepository.getOptionalNode(hostName)).thenReturn(Optional.of(node));
nodeAgent.doConverge(context);
- verify(dockerOperations, never()).removeContainer(eq(context), any());
+ verify(containerOperations, never()).removeContainer(eq(context), any());
verify(orchestrator, never()).suspend(any(String.class));
- verify(dockerOperations, never()).pullImageAsyncIfNeeded(any());
+ verify(containerOperations, never()).pullImageAsyncIfNeeded(any());
- final InOrder inOrder = inOrder(dockerOperations, orchestrator, nodeRepository);
+ final InOrder inOrder = inOrder(containerOperations, orchestrator, nodeRepository);
// TODO: Verify this isn't run unless 1st time
- inOrder.verify(dockerOperations, never()).startServices(eq(context));
- inOrder.verify(dockerOperations, times(1)).resumeNode(eq(context));
+ inOrder.verify(containerOperations, never()).startServices(eq(context));
+ inOrder.verify(containerOperations, times(1)).resumeNode(eq(context));
inOrder.verify(orchestrator, never()).resume(hostName);
}
@Test
public void verifyRemoveOldFilesIfDiskFull() {
final NodeSpec node = nodeBuilder(NodeState.active)
- .wantedDockerImage(dockerImage).currentDockerImage(dockerImage)
+ .wantedDockerImage(containerImage).currentDockerImage(containerImage)
.wantedVespaVersion(vespaVersion).currentVespaVersion(vespaVersion)
.build();
NodeAgentContext context = createContext(node);
- NodeAgentImpl nodeAgent = makeNodeAgent(dockerImage, true);
+ NodeAgentImpl nodeAgent = makeNodeAgent(containerImage, true);
when(nodeRepository.getOptionalNode(hostName)).thenReturn(Optional.of(node));
nodeAgent.doConverge(context);
@@ -110,42 +110,42 @@ public class NodeAgentImplTest {
@Test
public void startsAfterStoppingServices() {
- final InOrder inOrder = inOrder(dockerOperations);
+ final InOrder inOrder = inOrder(containerOperations);
final NodeSpec node = nodeBuilder(NodeState.active)
- .wantedDockerImage(dockerImage).currentDockerImage(dockerImage)
+ .wantedDockerImage(containerImage).currentDockerImage(containerImage)
.wantedVespaVersion(vespaVersion).currentVespaVersion(vespaVersion)
.build();
NodeAgentContext context = createContext(node);
- NodeAgentImpl nodeAgent = makeNodeAgent(dockerImage, true);
+ NodeAgentImpl nodeAgent = makeNodeAgent(containerImage, true);
when(nodeRepository.getOptionalNode(hostName)).thenReturn(Optional.of(node));
nodeAgent.doConverge(context);
- inOrder.verify(dockerOperations, never()).startServices(eq(context));
- inOrder.verify(dockerOperations, times(1)).resumeNode(eq(context));
+ inOrder.verify(containerOperations, never()).startServices(eq(context));
+ inOrder.verify(containerOperations, times(1)).resumeNode(eq(context));
nodeAgent.stopForHostSuspension(context);
nodeAgent.doConverge(context);
- inOrder.verify(dockerOperations, never()).startServices(eq(context));
- inOrder.verify(dockerOperations, times(1)).resumeNode(eq(context)); // Expect a resume, but no start services
+ inOrder.verify(containerOperations, never()).startServices(eq(context));
+ inOrder.verify(containerOperations, times(1)).resumeNode(eq(context)); // Expect a resume, but no start services
// No new suspends/stops, so no need to resume/start
nodeAgent.doConverge(context);
- inOrder.verify(dockerOperations, never()).startServices(eq(context));
- inOrder.verify(dockerOperations, never()).resumeNode(eq(context));
+ inOrder.verify(containerOperations, never()).startServices(eq(context));
+ inOrder.verify(containerOperations, never()).resumeNode(eq(context));
nodeAgent.stopForHostSuspension(context);
nodeAgent.doConverge(context);
- inOrder.verify(dockerOperations, times(1)).createContainer(eq(context), any(), any());
- inOrder.verify(dockerOperations, times(1)).startContainer(eq(context));
- inOrder.verify(dockerOperations, times(0)).startServices(eq(context)); // done as part of startContainer
- inOrder.verify(dockerOperations, times(1)).resumeNode(eq(context));
+ inOrder.verify(containerOperations, times(1)).createContainer(eq(context), any(), any());
+ inOrder.verify(containerOperations, times(1)).startContainer(eq(context));
+ inOrder.verify(containerOperations, times(0)).startServices(eq(context)); // done as part of startContainer
+ inOrder.verify(containerOperations, times(1)).resumeNode(eq(context));
}
@Test
public void absentContainerCausesStart() {
final NodeSpec node = nodeBuilder(NodeState.active)
- .wantedDockerImage(dockerImage)
+ .wantedDockerImage(containerImage)
.wantedVespaVersion(vespaVersion)
.build();
@@ -153,63 +153,63 @@ public class NodeAgentImplTest {
NodeAgentImpl nodeAgent = makeNodeAgent(null, false);
when(nodeRepository.getOptionalNode(hostName)).thenReturn(Optional.of(node));
- when(dockerOperations.pullImageAsyncIfNeeded(eq(dockerImage))).thenReturn(false);
+ when(containerOperations.pullImageAsyncIfNeeded(eq(containerImage))).thenReturn(false);
nodeAgent.doConverge(context);
- verify(dockerOperations, never()).removeContainer(eq(context), any());
- verify(dockerOperations, never()).startServices(any());
+ verify(containerOperations, never()).removeContainer(eq(context), any());
+ verify(containerOperations, never()).startServices(any());
verify(orchestrator, never()).suspend(any(String.class));
- final InOrder inOrder = inOrder(dockerOperations, orchestrator, nodeRepository, aclMaintainer, healthChecker);
- inOrder.verify(dockerOperations, times(1)).pullImageAsyncIfNeeded(eq(dockerImage));
- inOrder.verify(dockerOperations, times(1)).createContainer(eq(context), any(), any());
- inOrder.verify(dockerOperations, times(1)).startContainer(eq(context));
+ final InOrder inOrder = inOrder(containerOperations, orchestrator, nodeRepository, aclMaintainer, healthChecker);
+ inOrder.verify(containerOperations, times(1)).pullImageAsyncIfNeeded(eq(containerImage));
+ inOrder.verify(containerOperations, times(1)).createContainer(eq(context), any(), any());
+ inOrder.verify(containerOperations, times(1)).startContainer(eq(context));
inOrder.verify(aclMaintainer, times(1)).converge(eq(context));
- inOrder.verify(dockerOperations, times(1)).resumeNode(eq(context));
+ inOrder.verify(containerOperations, times(1)).resumeNode(eq(context));
inOrder.verify(healthChecker, times(1)).verifyHealth(eq(context));
inOrder.verify(nodeRepository).updateNodeAttributes(
- hostName, new NodeAttributes().withDockerImage(dockerImage).withVespaVersion(dockerImage.tagAsVersion()));
+ hostName, new NodeAttributes().withDockerImage(containerImage).withVespaVersion(containerImage.tagAsVersion()));
inOrder.verify(orchestrator, never()).resume(hostName);
}
@Test
public void containerIsNotStoppedIfNewImageMustBePulled() {
- final DockerImage newDockerImage = DockerImage.fromString("new-image");
+ final ContainerImage newContainerImage = ContainerImage.fromString("new-image");
final NodeSpec node = nodeBuilder(NodeState.active)
- .wantedDockerImage(newDockerImage).currentDockerImage(dockerImage)
+ .wantedDockerImage(newContainerImage).currentDockerImage(containerImage)
.wantedVespaVersion(vespaVersion).currentVespaVersion(vespaVersion)
.build();
NodeAgentContext context = createContext(node);
- NodeAgentImpl nodeAgent = makeNodeAgent(dockerImage, true);
+ NodeAgentImpl nodeAgent = makeNodeAgent(containerImage, true);
when(nodeRepository.getOptionalNode(hostName)).thenReturn(Optional.of(node));
- when(dockerOperations.pullImageAsyncIfNeeded(any())).thenReturn(true);
+ when(containerOperations.pullImageAsyncIfNeeded(any())).thenReturn(true);
nodeAgent.doConverge(context);
verify(orchestrator, never()).suspend(any(String.class));
verify(orchestrator, never()).resume(any(String.class));
- verify(dockerOperations, never()).removeContainer(eq(context), any());
+ verify(containerOperations, never()).removeContainer(eq(context), any());
- final InOrder inOrder = inOrder(dockerOperations);
- inOrder.verify(dockerOperations, times(1)).pullImageAsyncIfNeeded(eq(newDockerImage));
+ final InOrder inOrder = inOrder(containerOperations);
+ inOrder.verify(containerOperations, times(1)).pullImageAsyncIfNeeded(eq(newContainerImage));
}
@Test
public void containerIsUpdatedIfCpuChanged() {
NodeSpec.Builder specBuilder = nodeBuilder(NodeState.active)
- .wantedDockerImage(dockerImage).currentDockerImage(dockerImage)
+ .wantedDockerImage(containerImage).currentDockerImage(containerImage)
.wantedVespaVersion(vespaVersion).currentVespaVersion(vespaVersion)
.allowedToBeDown(false);
NodeAgentContext firstContext = createContext(specBuilder.build());
- NodeAgentImpl nodeAgent = makeNodeAgent(dockerImage, true);
+ NodeAgentImpl nodeAgent = makeNodeAgent(containerImage, true);
- when(dockerOperations.pullImageAsyncIfNeeded(any())).thenReturn(true);
+ when(containerOperations.pullImageAsyncIfNeeded(any())).thenReturn(true);
- InOrder inOrder = inOrder(orchestrator, dockerOperations);
+ InOrder inOrder = inOrder(orchestrator, containerOperations);
nodeAgent.doConverge(firstContext);
inOrder.verify(orchestrator, never()).resume(any(String.class));
@@ -221,70 +221,70 @@ public class NodeAgentImplTest {
NodeAgentContext thirdContext = new NodeAgentContextImpl.Builder(specBuilder.vcpu(5).build()).cpuSpeedUp(1.25).build();
nodeAgent.doConverge(thirdContext);
ContainerResources resourcesAfterThird = ContainerResources.from(0, 4, 16);
- mockGetContainer(dockerImage, resourcesAfterThird, true);
+ mockGetContainer(containerImage, resourcesAfterThird, true);
inOrder.verify(orchestrator).suspend(any(String.class));
- inOrder.verify(dockerOperations).updateContainer(eq(thirdContext), eq(resourcesAfterThird));
- inOrder.verify(dockerOperations, never()).removeContainer(any(), any());
- inOrder.verify(dockerOperations, never()).startContainer(any());
+ inOrder.verify(containerOperations).updateContainer(eq(thirdContext), eq(resourcesAfterThird));
+ inOrder.verify(containerOperations, never()).removeContainer(any(), any());
+ inOrder.verify(containerOperations, never()).startContainer(any());
inOrder.verify(orchestrator).resume(any(String.class));
// No changes
nodeAgent.converge(thirdContext);
inOrder.verify(orchestrator, never()).suspend(any(String.class));
- inOrder.verify(dockerOperations, never()).updateContainer(eq(thirdContext), any());
- inOrder.verify(dockerOperations, never()).removeContainer(any(), any());
+ inOrder.verify(containerOperations, never()).updateContainer(eq(thirdContext), any());
+ inOrder.verify(containerOperations, never()).removeContainer(any(), any());
inOrder.verify(orchestrator, never()).resume(any(String.class));
// Set the feature flag
flagSource.withDoubleFlag(Flags.CONTAINER_CPU_CAP.id(), 2.3);
nodeAgent.doConverge(thirdContext);
- inOrder.verify(dockerOperations).updateContainer(eq(thirdContext), eq(ContainerResources.from(9.2, 4, 16)));
+ inOrder.verify(containerOperations).updateContainer(eq(thirdContext), eq(ContainerResources.from(9.2, 4, 16)));
inOrder.verify(orchestrator).resume(any(String.class));
}
@Test
public void containerIsRecreatedIfMemoryChanged() {
NodeSpec.Builder specBuilder = nodeBuilder(NodeState.active)
- .wantedDockerImage(dockerImage).currentDockerImage(dockerImage)
+ .wantedDockerImage(containerImage).currentDockerImage(containerImage)
.wantedVespaVersion(vespaVersion).currentVespaVersion(vespaVersion)
.wantedRestartGeneration(2).currentRestartGeneration(1);
NodeAgentContext firstContext = createContext(specBuilder.build());
- NodeAgentImpl nodeAgent = makeNodeAgent(dockerImage, true);
+ NodeAgentImpl nodeAgent = makeNodeAgent(containerImage, true);
- when(dockerOperations.pullImageAsyncIfNeeded(any())).thenReturn(true);
+ when(containerOperations.pullImageAsyncIfNeeded(any())).thenReturn(true);
nodeAgent.doConverge(firstContext);
NodeAgentContext secondContext = createContext(specBuilder.memoryGb(20).build());
nodeAgent.doConverge(secondContext);
ContainerResources resourcesAfterThird = ContainerResources.from(0, 2, 20);
- mockGetContainer(dockerImage, resourcesAfterThird, true);
+ mockGetContainer(containerImage, resourcesAfterThird, true);
- InOrder inOrder = inOrder(orchestrator, dockerOperations, nodeRepository);
+ InOrder inOrder = inOrder(orchestrator, containerOperations, nodeRepository);
inOrder.verify(orchestrator).resume(any(String.class));
- inOrder.verify(dockerOperations).removeContainer(eq(secondContext), any());
- inOrder.verify(dockerOperations, never()).updateContainer(any(), any());
- inOrder.verify(dockerOperations, never()).restartVespa(any());
+ inOrder.verify(containerOperations).removeContainer(eq(secondContext), any());
+ inOrder.verify(containerOperations, never()).updateContainer(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(dockerOperations, never()).updateContainer(any(), any());
- inOrder.verify(dockerOperations, never()).removeContainer(any(), any());
+ inOrder.verify(containerOperations, never()).updateContainer(any(), any());
+ inOrder.verify(containerOperations, never()).removeContainer(any(), any());
}
@Test
public void noRestartIfOrchestratorSuspendFails() {
final NodeSpec node = nodeBuilder(NodeState.active)
- .wantedDockerImage(dockerImage).currentDockerImage(dockerImage)
+ .wantedDockerImage(containerImage).currentDockerImage(containerImage)
.wantedVespaVersion(vespaVersion).currentVespaVersion(vespaVersion)
.wantedRestartGeneration(2).currentRestartGeneration(1)
.build();
NodeAgentContext context = createContext(node);
- NodeAgentImpl nodeAgent = makeNodeAgent(dockerImage, true);
+ NodeAgentImpl nodeAgent = makeNodeAgent(containerImage, true);
doThrow(new OrchestratorException("Denied")).when(orchestrator).suspend(eq(hostName));
try {
@@ -292,8 +292,8 @@ public class NodeAgentImplTest {
fail("Expected to throw an exception");
} catch (OrchestratorException ignored) { }
- verify(dockerOperations, never()).createContainer(eq(context), any(), any());
- verify(dockerOperations, never()).startContainer(eq(context));
+ verify(containerOperations, never()).createContainer(eq(context), any(), any());
+ verify(containerOperations, never()).startContainer(eq(context));
verify(orchestrator, never()).resume(any(String.class));
verify(nodeRepository, never()).updateNodeAttributes(any(String.class), any(NodeAttributes.class));
@@ -305,16 +305,16 @@ public class NodeAgentImplTest {
public void recreatesContainerIfRebootWanted() {
final long wantedRebootGeneration = 2;
final NodeSpec node = nodeBuilder(NodeState.active)
- .wantedDockerImage(dockerImage).currentDockerImage(dockerImage)
+ .wantedDockerImage(containerImage).currentDockerImage(containerImage)
.wantedVespaVersion(vespaVersion).currentVespaVersion(vespaVersion)
.wantedRebootGeneration(wantedRebootGeneration).currentRebootGeneration(1)
.build();
NodeAgentContext context = createContext(node);
- NodeAgentImpl nodeAgent = makeNodeAgent(dockerImage, true);
+ NodeAgentImpl nodeAgent = makeNodeAgent(containerImage, true);
when(nodeRepository.getOptionalNode(hostName)).thenReturn(Optional.of(node));
- when(dockerOperations.pullImageAsyncIfNeeded(eq(dockerImage))).thenReturn(false);
+ when(containerOperations.pullImageAsyncIfNeeded(eq(containerImage))).thenReturn(false);
doThrow(new ConvergenceException("Connection refused")).doNothing()
.when(healthChecker).verifyHealth(eq(context));
@@ -324,17 +324,17 @@ public class NodeAgentImplTest {
// First time we fail to resume because health verification fails
verify(orchestrator, times(1)).suspend(eq(hostName));
- verify(dockerOperations, times(1)).removeContainer(eq(context), any());
- verify(dockerOperations, times(1)).createContainer(eq(context), any(), any());
- verify(dockerOperations, times(1)).startContainer(eq(context));
+ verify(containerOperations, times(1)).removeContainer(eq(context), any());
+ verify(containerOperations, times(1)).createContainer(eq(context), any(), any());
+ verify(containerOperations, times(1)).startContainer(eq(context));
verify(orchestrator, never()).resume(eq(hostName));
verify(nodeRepository, never()).updateNodeAttributes(any(), any());
nodeAgent.doConverge(context);
// Do not reboot the container again
- verify(dockerOperations, times(1)).removeContainer(eq(context), any());
- verify(dockerOperations, times(1)).createContainer(eq(context), any(), any());
+ verify(containerOperations, times(1)).removeContainer(eq(context), any());
+ verify(containerOperations, times(1)).createContainer(eq(context), any(), any());
verify(orchestrator, times(1)).resume(eq(hostName));
verify(nodeRepository, times(1)).updateNodeAttributes(eq(hostName), eq(new NodeAttributes()
.withRebootGeneration(wantedRebootGeneration)));
@@ -343,18 +343,18 @@ public class NodeAgentImplTest {
@Test
public void failedNodeRunningContainerShouldStillBeRunning() {
final NodeSpec node = nodeBuilder(NodeState.failed)
- .wantedDockerImage(dockerImage).currentDockerImage(dockerImage)
+ .wantedDockerImage(containerImage).currentDockerImage(containerImage)
.wantedVespaVersion(vespaVersion).currentVespaVersion(vespaVersion)
.build();
NodeAgentContext context = createContext(node);
- NodeAgentImpl nodeAgent = makeNodeAgent(dockerImage, true);
+ NodeAgentImpl nodeAgent = makeNodeAgent(containerImage, true);
when(nodeRepository.getOptionalNode(hostName)).thenReturn(Optional.of(node));
nodeAgent.doConverge(context);
- verify(dockerOperations, never()).removeContainer(eq(context), any());
+ verify(containerOperations, never()).removeContainer(eq(context), any());
verify(orchestrator, never()).resume(any(String.class));
verify(nodeRepository, never()).updateNodeAttributes(eq(hostName), any());
}
@@ -373,10 +373,10 @@ public class NodeAgentImplTest {
nodeAgent.doConverge(context);
// Should only be called once, when we initialize
- verify(dockerOperations, times(1)).getContainer(eq(context));
- verify(dockerOperations, never()).removeContainer(eq(context), any());
- verify(dockerOperations, never()).createContainer(eq(context), any(), any());
- verify(dockerOperations, never()).startContainer(eq(context));
+ verify(containerOperations, times(1)).getContainer(eq(context));
+ verify(containerOperations, never()).removeContainer(eq(context), any());
+ verify(containerOperations, never()).createContainer(eq(context), any(), any());
+ verify(containerOperations, never()).startContainer(eq(context));
verify(orchestrator, never()).resume(any(String.class));
verify(nodeRepository, never()).updateNodeAttributes(eq(hostName), any());
}
@@ -384,19 +384,19 @@ public class NodeAgentImplTest {
@Test
public void inactiveNodeRunningContainerShouldStillBeRunning() {
final NodeSpec node = nodeBuilder(NodeState.inactive)
- .wantedDockerImage(dockerImage).currentDockerImage(dockerImage)
+ .wantedDockerImage(containerImage).currentDockerImage(containerImage)
.wantedVespaVersion(vespaVersion).currentVespaVersion(vespaVersion)
.build();
NodeAgentContext context = createContext(node);
- NodeAgentImpl nodeAgent = makeNodeAgent(dockerImage, true);
+ NodeAgentImpl nodeAgent = makeNodeAgent(containerImage, true);
when(nodeRepository.getOptionalNode(hostName)).thenReturn(Optional.of(node));
nodeAgent.doConverge(context);
- final InOrder inOrder = inOrder(storageMaintainer, dockerOperations);
- inOrder.verify(dockerOperations, never()).removeContainer(eq(context), any());
+ final InOrder inOrder = inOrder(storageMaintainer, containerOperations);
+ inOrder.verify(containerOperations, never()).removeContainer(eq(context), any());
verify(orchestrator, never()).resume(any(String.class));
verify(nodeRepository, never()).updateNodeAttributes(eq(hostName), any());
@@ -405,7 +405,7 @@ public class NodeAgentImplTest {
@Test
public void reservedNodeDoesNotUpdateNodeRepoWithVersion() {
final NodeSpec node = nodeBuilder(NodeState.reserved)
- .wantedDockerImage(dockerImage)
+ .wantedDockerImage(containerImage)
.wantedVespaVersion(vespaVersion)
.build();
@@ -421,34 +421,34 @@ public class NodeAgentImplTest {
private void nodeRunningContainerIsTakenDownAndCleanedAndRecycled(NodeState nodeState, Optional<Long> wantedRestartGeneration) {
NodeSpec.Builder builder = nodeBuilder(nodeState)
- .wantedDockerImage(dockerImage).currentDockerImage(dockerImage);
+ .wantedDockerImage(containerImage).currentDockerImage(containerImage);
wantedRestartGeneration.ifPresent(restartGeneration -> builder
.wantedRestartGeneration(restartGeneration).currentRestartGeneration(restartGeneration));
NodeSpec node = builder.build();
NodeAgentContext context = createContext(node);
- NodeAgentImpl nodeAgent = makeNodeAgent(dockerImage, true);
+ NodeAgentImpl nodeAgent = makeNodeAgent(containerImage, true);
when(nodeRepository.getOptionalNode(hostName)).thenReturn(Optional.of(node));
nodeAgent.doConverge(context);
- final InOrder inOrder = inOrder(storageMaintainer, dockerOperations, nodeRepository);
- inOrder.verify(dockerOperations, times(1)).stopServices(eq(context));
+ final InOrder inOrder = inOrder(storageMaintainer, containerOperations, nodeRepository);
+ inOrder.verify(containerOperations, times(1)).stopServices(eq(context));
inOrder.verify(storageMaintainer, times(1)).handleCoreDumpsForContainer(eq(context), any());
- inOrder.verify(dockerOperations, times(1)).removeContainer(eq(context), any());
+ inOrder.verify(containerOperations, times(1)).removeContainer(eq(context), any());
inOrder.verify(storageMaintainer, times(1)).archiveNodeStorage(eq(context));
inOrder.verify(nodeRepository, times(1)).setNodeState(eq(hostName), eq(NodeState.ready));
- verify(dockerOperations, never()).createContainer(eq(context), any(), any());
- verify(dockerOperations, never()).startContainer(eq(context));
- verify(dockerOperations, never()).suspendNode(eq(context));
- verify(dockerOperations, times(1)).stopServices(eq(context));
+ verify(containerOperations, never()).createContainer(eq(context), any(), any());
+ verify(containerOperations, never()).startContainer(eq(context));
+ verify(containerOperations, never()).suspendNode(eq(context));
+ verify(containerOperations, times(1)).stopServices(eq(context));
verify(orchestrator, never()).resume(any(String.class));
verify(orchestrator, never()).suspend(any(String.class));
// current Docker image and vespa version should be cleared
verify(nodeRepository, times(1)).updateNodeAttributes(
- eq(hostName), eq(new NodeAttributes().withDockerImage(DockerImage.EMPTY).withVespaVersion(Version.emptyVersion)));
+ eq(hostName), eq(new NodeAttributes().withDockerImage(ContainerImage.EMPTY).withVespaVersion(Version.emptyVersion)));
}
@Test
@@ -464,7 +464,7 @@ public class NodeAgentImplTest {
@Test
public void provisionedNodeIsMarkedAsDirty() {
final NodeSpec node = nodeBuilder(NodeState.provisioned)
- .wantedDockerImage(dockerImage)
+ .wantedDockerImage(containerImage)
.build();
NodeAgentContext context = createContext(node);
@@ -478,40 +478,40 @@ public class NodeAgentImplTest {
@Test
public void testRestartDeadContainerAfterNodeAdminRestart() {
final NodeSpec node = nodeBuilder(NodeState.active)
- .currentDockerImage(dockerImage).wantedDockerImage(dockerImage)
+ .currentDockerImage(containerImage).wantedDockerImage(containerImage)
.currentVespaVersion(vespaVersion)
.build();
NodeAgentContext context = createContext(node);
- NodeAgentImpl nodeAgent = makeNodeAgent(dockerImage, false);
+ NodeAgentImpl nodeAgent = makeNodeAgent(containerImage, false);
when(nodeRepository.getOptionalNode(eq(hostName))).thenReturn(Optional.of(node));
nodeAgent.doConverge(context);
- verify(dockerOperations, times(1)).removeContainer(eq(context), any());
- verify(dockerOperations, times(1)).createContainer(eq(context), any(), any());
- verify(dockerOperations, times(1)).startContainer(eq(context));
+ verify(containerOperations, times(1)).removeContainer(eq(context), any());
+ verify(containerOperations, times(1)).createContainer(eq(context), any(), any());
+ verify(containerOperations, times(1)).startContainer(eq(context));
}
@Test
public void resumeProgramRunsUntilSuccess() {
final NodeSpec node = nodeBuilder(NodeState.active)
- .wantedDockerImage(dockerImage).currentDockerImage(dockerImage)
+ .wantedDockerImage(containerImage).currentDockerImage(containerImage)
.currentVespaVersion(vespaVersion)
.wantedRestartGeneration(1).currentRestartGeneration(1)
.allowedToBeDown(true)
.build();
NodeAgentContext context = createContext(node);
- NodeAgentImpl nodeAgent = makeNodeAgent(dockerImage, true);
+ NodeAgentImpl nodeAgent = makeNodeAgent(containerImage, true);
when(nodeRepository.getOptionalNode(eq(hostName))).thenReturn(Optional.of(node));
- final InOrder inOrder = inOrder(orchestrator, dockerOperations, nodeRepository);
+ final InOrder inOrder = inOrder(orchestrator, containerOperations, nodeRepository);
doThrow(new RuntimeException("Failed 1st time"))
.doNothing()
- .when(dockerOperations).resumeNode(eq(context));
+ .when(containerOperations).resumeNode(eq(context));
// 1st try
try {
@@ -519,13 +519,13 @@ public class NodeAgentImplTest {
fail("Expected to throw an exception");
} catch (RuntimeException ignored) { }
- inOrder.verify(dockerOperations, times(1)).resumeNode(any());
+ inOrder.verify(containerOperations, times(1)).resumeNode(any());
inOrder.verifyNoMoreInteractions();
// 2nd try
nodeAgent.doConverge(context);
- inOrder.verify(dockerOperations).resumeNode(any());
+ inOrder.verify(containerOperations).resumeNode(any());
inOrder.verify(orchestrator).resume(hostName);
inOrder.verifyNoMoreInteractions();
}
@@ -533,7 +533,7 @@ public class NodeAgentImplTest {
@Test
public void start_container_subtask_failure_leads_to_container_restart() {
final NodeSpec node = nodeBuilder(NodeState.active)
- .wantedDockerImage(dockerImage)
+ .wantedDockerImage(containerImage)
.wantedVespaVersion(vespaVersion)
.wantedRestartGeneration(1).currentRestartGeneration(1)
.build();
@@ -541,27 +541,27 @@ public class NodeAgentImplTest {
NodeAgentContext context = createContext(node);
NodeAgentImpl nodeAgent = spy(makeNodeAgent(null, false));
- when(dockerOperations.pullImageAsyncIfNeeded(eq(dockerImage))).thenReturn(false);
- doThrow(new DockerException("Failed to set up network")).doNothing().when(dockerOperations).startContainer(eq(context));
+ when(containerOperations.pullImageAsyncIfNeeded(eq(containerImage))).thenReturn(false);
+ doThrow(new DockerException("Failed to set up network")).doNothing().when(containerOperations).startContainer(eq(context));
try {
nodeAgent.doConverge(context);
fail("Expected to get DockerException");
} catch (DockerException ignored) { }
- verify(dockerOperations, never()).removeContainer(eq(context), any());
- verify(dockerOperations, times(1)).createContainer(eq(context), any(), any());
- verify(dockerOperations, times(1)).startContainer(eq(context));
+ verify(containerOperations, never()).removeContainer(eq(context), any());
+ verify(containerOperations, times(1)).createContainer(eq(context), any(), any());
+ verify(containerOperations, times(1)).startContainer(eq(context));
verify(nodeAgent, never()).resumeNodeIfNeeded(any());
// The docker container was actually started and is running, but subsequent exec calls to set up
// networking failed
- mockGetContainer(dockerImage, true);
+ mockGetContainer(containerImage, true);
nodeAgent.doConverge(context);
- verify(dockerOperations, times(1)).removeContainer(eq(context), any());
- verify(dockerOperations, times(2)).createContainer(eq(context), any(), any());
- verify(dockerOperations, times(2)).startContainer(eq(context));
+ verify(containerOperations, times(1)).removeContainer(eq(context), any());
+ verify(containerOperations, times(2)).createContainer(eq(context), any(), any());
+ verify(containerOperations, times(2)).startContainer(eq(context));
verify(nodeAgent, times(1)).resumeNodeIfNeeded(any());
}
@@ -569,7 +569,7 @@ public class NodeAgentImplTest {
public void testRunningConfigServer() {
final NodeSpec node = nodeBuilder(NodeState.active)
.type(NodeType.config)
- .wantedDockerImage(dockerImage)
+ .wantedDockerImage(containerImage)
.wantedVespaVersion(vespaVersion)
.allowedToBeDown(true)
.build();
@@ -578,21 +578,21 @@ public class NodeAgentImplTest {
NodeAgentImpl nodeAgent = makeNodeAgent(null, false);
when(nodeRepository.getOptionalNode(hostName)).thenReturn(Optional.of(node));
- when(dockerOperations.pullImageAsyncIfNeeded(eq(dockerImage))).thenReturn(false);
+ when(containerOperations.pullImageAsyncIfNeeded(eq(containerImage))).thenReturn(false);
nodeAgent.doConverge(context);
- verify(dockerOperations, never()).removeContainer(eq(context), any());
+ verify(containerOperations, never()).removeContainer(eq(context), any());
verify(orchestrator, never()).suspend(any(String.class));
- final InOrder inOrder = inOrder(dockerOperations, orchestrator, nodeRepository, aclMaintainer);
- inOrder.verify(dockerOperations, times(1)).pullImageAsyncIfNeeded(eq(dockerImage));
- inOrder.verify(dockerOperations, times(1)).createContainer(eq(context), any(), any());
- inOrder.verify(dockerOperations, times(1)).startContainer(eq(context));
+ final InOrder inOrder = inOrder(containerOperations, orchestrator, nodeRepository, aclMaintainer);
+ inOrder.verify(containerOperations, times(1)).pullImageAsyncIfNeeded(eq(containerImage));
+ inOrder.verify(containerOperations, times(1)).createContainer(eq(context), any(), any());
+ inOrder.verify(containerOperations, times(1)).startContainer(eq(context));
inOrder.verify(aclMaintainer, times(1)).converge(eq(context));
- inOrder.verify(dockerOperations, times(1)).resumeNode(eq(context));
+ inOrder.verify(containerOperations, times(1)).resumeNode(eq(context));
inOrder.verify(nodeRepository).updateNodeAttributes(
- hostName, new NodeAttributes().withDockerImage(dockerImage).withVespaVersion(dockerImage.tagAsVersion()));
+ hostName, new NodeAttributes().withDockerImage(containerImage).withVespaVersion(containerImage.tagAsVersion()));
inOrder.verify(orchestrator).resume(hostName);
}
@@ -610,13 +610,13 @@ public class NodeAgentImplTest {
@Test
public void initial_cpu_cap_test() {
NodeSpec.Builder specBuilder = nodeBuilder(NodeState.active)
- .wantedDockerImage(dockerImage).currentDockerImage(dockerImage)
+ .wantedDockerImage(containerImage).currentDockerImage(containerImage)
.wantedVespaVersion(vespaVersion).currentVespaVersion(vespaVersion);
NodeAgentContext context = createContext(specBuilder.build());
NodeAgentImpl nodeAgent = makeNodeAgent(null, false, Duration.ofSeconds(30));
- InOrder inOrder = inOrder(orchestrator, dockerOperations);
+ InOrder inOrder = inOrder(orchestrator, containerOperations);
ConvergenceException healthCheckException = new ConvergenceException("Not yet up");
doThrow(healthCheckException).when(healthChecker).verifyHealth(any());
@@ -639,45 +639,45 @@ public class NodeAgentImplTest {
}
inOrder.verify(orchestrator, never()).resume(any());
inOrder.verify(orchestrator, never()).suspend(any());
- inOrder.verify(dockerOperations, never()).updateContainer(any(), any());
+ inOrder.verify(containerOperations, never()).updateContainer(any(), any());
clock.advance(Duration.ofSeconds(31));
nodeAgent.doConverge(context);
inOrder.verify(orchestrator).suspend(hostName);
- inOrder.verify(dockerOperations).updateContainer(eq(context), eq(ContainerResources.from(0, 2, 16)));
- inOrder.verify(dockerOperations, never()).removeContainer(any(), any());
- inOrder.verify(dockerOperations, never()).startContainer(any());
+ inOrder.verify(containerOperations).updateContainer(eq(context), eq(ContainerResources.from(0, 2, 16)));
+ inOrder.verify(containerOperations, never()).removeContainer(any(), any());
+ inOrder.verify(containerOperations, never()).startContainer(any());
inOrder.verify(orchestrator).resume(any(String.class));
// No changes
nodeAgent.converge(context);
inOrder.verify(orchestrator, never()).suspend(any(String.class));
- inOrder.verify(dockerOperations, never()).updateContainer(eq(context), any());
- inOrder.verify(dockerOperations, never()).removeContainer(any(), any());
+ inOrder.verify(containerOperations, never()).updateContainer(eq(context), any());
+ inOrder.verify(containerOperations, never()).removeContainer(any(), any());
inOrder.verify(orchestrator, never()).resume(any(String.class));
}
@Test
public void resumes_normally_if_container_is_already_capped_on_start() {
NodeSpec.Builder specBuilder = nodeBuilder(NodeState.active)
- .wantedDockerImage(dockerImage).currentDockerImage(dockerImage)
+ .wantedDockerImage(containerImage).currentDockerImage(containerImage)
.wantedVespaVersion(vespaVersion).currentVespaVersion(vespaVersion)
.wantedRestartGeneration(1).currentRestartGeneration(1);
NodeAgentContext context = createContext(specBuilder.build());
- NodeAgentImpl nodeAgent = makeNodeAgent(dockerImage, true, Duration.ofSeconds(30));
- mockGetContainer(dockerImage, ContainerResources.from(0, 2, 16), true);
+ NodeAgentImpl nodeAgent = makeNodeAgent(containerImage, true, Duration.ofSeconds(30));
+ mockGetContainer(containerImage, ContainerResources.from(0, 2, 16), true);
- InOrder inOrder = inOrder(orchestrator, dockerOperations);
+ InOrder inOrder = inOrder(orchestrator, containerOperations);
nodeAgent.doConverge(context);
nodeAgent.converge(context);
inOrder.verify(orchestrator, never()).suspend(any(String.class));
- inOrder.verify(dockerOperations, never()).updateContainer(eq(context), any());
- inOrder.verify(dockerOperations, never()).removeContainer(any(), any());
+ inOrder.verify(containerOperations, never()).updateContainer(eq(context), any());
+ inOrder.verify(containerOperations, never()).removeContainer(any(), any());
inOrder.verify(orchestrator, never()).resume(any(String.class));
}
@@ -687,74 +687,74 @@ public class NodeAgentImplTest {
.hostname(hostName)
.type(NodeType.tenant)
.flavor("docker")
- .wantedDockerImage(dockerImage).currentDockerImage(dockerImage)
+ .wantedDockerImage(containerImage).currentDockerImage(containerImage)
.state(nodeState);
owner.ifPresent(nodeBuilder::owner);
NodeSpec node = nodeBuilder.build();
NodeAgentContext context = createContext(node);
- NodeAgentImpl nodeAgent = makeNodeAgent(dockerImage, true);
+ NodeAgentImpl nodeAgent = makeNodeAgent(containerImage, true);
when(nodeRepository.getOptionalNode(eq(hostName))).thenReturn(Optional.of(node));
nodeAgent.doConverge(context);
- verify(dockerOperations, never()).removeContainer(eq(context), any());
+ verify(containerOperations, never()).removeContainer(eq(context), any());
if (owner.isPresent()) {
- verify(dockerOperations, never()).stopServices(eq(context));
+ verify(containerOperations, never()).stopServices(eq(context));
} else {
- verify(dockerOperations, times(1)).stopServices(eq(context));
+ verify(containerOperations, times(1)).stopServices(eq(context));
nodeAgent.doConverge(context);
// Should not be called more than once, have already been stopped
- verify(dockerOperations, times(1)).stopServices(eq(context));
+ verify(containerOperations, times(1)).stopServices(eq(context));
}
}
- private NodeAgentImpl makeNodeAgent(DockerImage dockerImage, boolean isRunning) {
- return makeNodeAgent(dockerImage, isRunning, Duration.ofSeconds(-1));
+ private NodeAgentImpl makeNodeAgent(ContainerImage containerImage, boolean isRunning) {
+ return makeNodeAgent(containerImage, isRunning, Duration.ofSeconds(-1));
}
- private NodeAgentImpl makeNodeAgent(DockerImage dockerImage, boolean isRunning, Duration warmUpDuration) {
- mockGetContainer(dockerImage, isRunning);
+ private NodeAgentImpl makeNodeAgent(ContainerImage containerImage, boolean isRunning, Duration warmUpDuration) {
+ mockGetContainer(containerImage, isRunning);
doAnswer(invoc -> {
NodeAgentContext context = invoc.getArgument(0, NodeAgentContext.class);
ContainerResources resources = invoc.getArgument(2, ContainerResources.class);
mockGetContainer(context.node().wantedDockerImage().get(), resources, true);
return null;
- }).when(dockerOperations).createContainer(any(), any(), any());
+ }).when(containerOperations).createContainer(any(), any(), any());
doAnswer(invoc -> {
NodeAgentContext context = invoc.getArgument(0, NodeAgentContext.class);
ContainerResources resources = invoc.getArgument(1, ContainerResources.class);
mockGetContainer(context.node().wantedDockerImage().get(), resources, true);
return null;
- }).when(dockerOperations).updateContainer(any(), any());
+ }).when(containerOperations).updateContainer(any(), any());
- return new NodeAgentImpl(contextSupplier, nodeRepository, orchestrator, dockerOperations,
+ return new NodeAgentImpl(contextSupplier, nodeRepository, orchestrator, containerOperations,
storageMaintainer, flagSource, Optional.of(credentialsMaintainer), Optional.of(aclMaintainer),
Optional.of(healthChecker), clock, warmUpDuration);
}
- private void mockGetContainer(DockerImage dockerImage, boolean isRunning) {
- mockGetContainer(dockerImage, ContainerResources.from(0, resources.vcpu(), resources.memoryGb()), isRunning);
+ private void mockGetContainer(ContainerImage containerImage, boolean isRunning) {
+ mockGetContainer(containerImage, ContainerResources.from(0, resources.vcpu(), resources.memoryGb()), isRunning);
}
- private void mockGetContainer(DockerImage dockerImage, ContainerResources containerResources, boolean isRunning) {
+ private void mockGetContainer(ContainerImage containerImage, ContainerResources containerResources, boolean isRunning) {
doAnswer(invoc -> {
NodeAgentContext context = invoc.getArgument(0);
if (!hostName.equals(context.hostname().value()))
throw new IllegalArgumentException();
- return dockerImage != null ?
+ return containerImage != null ?
Optional.of(new Container(
hostName,
- dockerImage,
+ containerImage,
containerResources,
ContainerName.fromHostname(hostName),
isRunning ? Container.State.RUNNING : Container.State.EXITED,
isRunning ? 1 : 0)) :
Optional.empty();
- }).when(dockerOperations).getContainer(any());
+ }).when(containerOperations).getContainer(any());
}
private NodeAgentContext createContext(NodeSpec nodeSpec) {