summaryrefslogtreecommitdiffstats
path: root/node-admin
diff options
context:
space:
mode:
authorvalerijf <valerijf@yahoo-inc.com>2017-06-12 12:13:31 +0200
committervalerijf <valerijf@yahoo-inc.com>2017-06-12 12:13:31 +0200
commit97bc1386675d47f82515324c5f02f8453642d20d (patch)
tree6247104b86719e3164c720ff227ae98cd2a41f9c /node-admin
parent22ef7b1cd08e235e20efc8d3b656af0ef95b55e9 (diff)
Simplify DockerTester interface
Diffstat (limited to 'node-admin')
-rw-r--r--node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/integrationTests/DockerMock.java24
-rw-r--r--node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/integrationTests/DockerTester.java43
-rw-r--r--node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/integrationTests/NodeRepoMock.java45
3 files changed, 21 insertions, 91 deletions
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 356bbe2ef58..e1ba6b89f6a 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
@@ -11,7 +11,9 @@ import java.io.File;
import java.net.InetAddress;
import java.util.ArrayList;
import java.util.Arrays;
+import java.util.HashMap;
import java.util.List;
+import java.util.Map;
import java.util.Optional;
import java.util.concurrent.CompletableFuture;
import java.util.stream.Collectors;
@@ -22,7 +24,7 @@ import java.util.stream.Collectors;
* @author freva
*/
public class DockerMock implements Docker {
- private List<Container> containers = new ArrayList<>();
+ private final Map<ContainerName, Container> containersByContainerName = new HashMap<>();
public final CallOrderVerifier callOrderVerifier;
private static final Object monitor = new Object();
@@ -38,7 +40,8 @@ public class DockerMock implements Docker {
synchronized (monitor) {
callOrderVerifier.add("createContainerCommand with " + dockerImage +
", HostName: " + hostName + ", " + containerName);
- containers.add(new Container(hostName, dockerImage, containerName, Container.State.RUNNING, 2));
+ containersByContainerName.put(
+ containerName, new Container(hostName, dockerImage, containerName, Container.State.RUNNING, 2));
}
return new StartContainerCommandMock();
@@ -59,14 +62,14 @@ public class DockerMock implements Docker {
@Override
public List<Container> getAllContainersManagedBy(String manager) {
synchronized (monitor) {
- return new ArrayList<>(containers);
+ return new ArrayList<>(containersByContainerName.values());
}
}
@Override
public List<ContainerName> listAllContainersManagedBy(String manager) {
synchronized (monitor) {
- return containers.stream().map(container -> container.name).collect(Collectors.toList());
+ return getAllContainersManagedBy(manager).stream().map(container -> container.name).collect(Collectors.toList());
}
}
@@ -86,10 +89,9 @@ public class DockerMock implements Docker {
public void stopContainer(ContainerName containerName) {
synchronized (monitor) {
callOrderVerifier.add("stopContainer with " + containerName);
- containers = containers.stream()
- .map(container -> container.name.equals(containerName) ?
- new Container(container.hostname, container.image, container.name, Container.State.EXITED, 0) : container)
- .collect(Collectors.toList());
+ Container container = containersByContainerName.get(containerName);
+ containersByContainerName.put(containerName,
+ new Container(container.hostname, container.image, container.name, Container.State.EXITED, 0));
}
}
@@ -97,16 +99,14 @@ public class DockerMock implements Docker {
public void deleteContainer(ContainerName containerName) {
synchronized (monitor) {
callOrderVerifier.add("deleteContainer with " + containerName);
- containers = containers.stream()
- .filter(container -> !container.name.equals(containerName))
- .collect(Collectors.toList());
+ containersByContainerName.remove(containerName);
}
}
@Override
public Optional<Container> getContainer(ContainerName containerName) {
synchronized (monitor) {
- return containers.stream().filter(container -> container.name.equals(containerName)).findFirst();
+ return Optional.ofNullable(containersByContainerName.get(containerName));
}
}
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 e52052e4cfa..e94c172d56b 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
@@ -1,7 +1,6 @@
package com.yahoo.vespa.hosted.node.admin.integrationTests;
import com.yahoo.metrics.simple.MetricReceiver;
-import com.yahoo.vespa.hosted.dockerapi.ContainerName;
import com.yahoo.vespa.hosted.dockerapi.Docker;
import com.yahoo.vespa.hosted.dockerapi.metrics.MetricReceiverWrapper;
import com.yahoo.vespa.hosted.node.admin.ContainerNodeSpec;
@@ -32,13 +31,12 @@ import static org.mockito.Mockito.when;
*/
// Need to deconstruct updater
public class DockerTester implements AutoCloseable {
-
- private final NodeRepoMock nodeRepositoryMock;
- private CallOrderVerifier callOrderVerifier;
- private Docker dockerMock;
+ final CallOrderVerifier callOrderVerifier = new CallOrderVerifier();
+ final Docker dockerMock = new DockerMock(callOrderVerifier);
+ final NodeRepoMock nodeRepositoryMock = new NodeRepoMock(callOrderVerifier);
+ final OrchestratorMock orchestratorMock = new OrchestratorMock(callOrderVerifier);
private final NodeAdminStateUpdater updater;
private final NodeAdmin nodeAdmin;
- private final OrchestratorMock orchestratorMock;
public DockerTester() {
@@ -52,11 +50,6 @@ public class DockerTester implements AutoCloseable {
Environment environment = new Environment.Builder()
.inetAddressResolver(inetAddressResolver)
.pathResolver(new PathResolver(Paths.get("/tmp"), Paths.get("/tmp"))).build();
-
- callOrderVerifier = new CallOrderVerifier();
- orchestratorMock = new OrchestratorMock(callOrderVerifier);
- nodeRepositoryMock = new NodeRepoMock(callOrderVerifier);
- dockerMock = new DockerMock(callOrderVerifier);
Clock clock = Clock.systemUTC();
StorageMaintainerMock storageMaintainer = new StorageMaintainerMock(dockerMock, environment, callOrderVerifier, clock);
@@ -71,45 +64,17 @@ public class DockerTester implements AutoCloseable {
}
public void addContainerNodeSpec(ContainerNodeSpec containerNodeSpec) {
- nodeRepositoryMock.addContainerNodeSpec(containerNodeSpec);
- }
-
- public Optional<ContainerNodeSpec> getContainerNodeSpec(String hostname) {
- return nodeRepositoryMock.getContainerNodeSpec(hostname);
- }
-
- public int getNumberOfContainerSpecs() {
- return nodeRepositoryMock.getNumberOfContainerSpecs();
- }
-
- public void updateContainerNodeSpec(ContainerNodeSpec containerNodeSpec) {
nodeRepositoryMock.updateContainerNodeSpec(containerNodeSpec);
}
- public void clearContainerNodeSpecs() {
- nodeRepositoryMock.clearContainerNodeSpecs();
- }
-
public NodeAdmin getNodeAdmin() {
return nodeAdmin;
}
- public OrchestratorMock getOrchestratorMock() {
- return orchestratorMock;
- }
-
public NodeAdminStateUpdater getNodeAdminStateUpdater() {
return updater;
}
- public CallOrderVerifier getCallOrderVerifier() {
- return callOrderVerifier;
- }
-
- public void deleteContainer(ContainerName containerName) {
- dockerMock.deleteContainer(containerName);
- }
-
@Override
public void close() {
updater.deconstruct();
diff --git a/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/integrationTests/NodeRepoMock.java b/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/integrationTests/NodeRepoMock.java
index e0aa2281436..da536d6bd25 100644
--- a/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/integrationTests/NodeRepoMock.java
+++ b/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/integrationTests/NodeRepoMock.java
@@ -14,7 +14,6 @@ import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Optional;
-import java.util.stream.Collectors;
/**
* Mock with some simple logic
@@ -22,10 +21,9 @@ import java.util.stream.Collectors;
* @author dybis
*/
public class NodeRepoMock implements NodeRepository {
-
private static final Object monitor = new Object();
- private List<ContainerNodeSpec> containerNodeSpecs = new ArrayList<>();
+ private final Map<String, ContainerNodeSpec> containerNodeSpecsByHostname = new HashMap<>();
private final Map<String, List<ContainerAclSpec>> acls = new HashMap<>();
private final CallOrderVerifier callOrderVerifier;
@@ -36,16 +34,14 @@ public class NodeRepoMock implements NodeRepository {
@Override
public List<ContainerNodeSpec> getContainersToRun() throws IOException {
synchronized (monitor) {
- return containerNodeSpecs;
+ return new ArrayList<>(containerNodeSpecsByHostname.values());
}
}
@Override
public Optional<ContainerNodeSpec> getContainerNodeSpec(String hostName) {
synchronized (monitor) {
- return containerNodeSpecs.stream()
- .filter(containerNodeSpec -> containerNodeSpec.hostname.equals(hostName))
- .findFirst();
+ return Optional.ofNullable(containerNodeSpecsByHostname.get(hostName));
}
}
@@ -95,43 +91,12 @@ public class NodeRepoMock implements NodeRepository {
}
public void updateContainerNodeSpec(ContainerNodeSpec containerNodeSpec) {
- addContainerNodeSpec(containerNodeSpec);
- }
-
- public void addContainerNodeSpec(ContainerNodeSpec containerNodeSpec) {
- removeContainerNodeSpec(containerNodeSpec.hostname);
- synchronized (monitor) {
- containerNodeSpecs.add(containerNodeSpec);
- }
- }
-
- public void clearContainerNodeSpecs() {
- synchronized (monitor) {
- containerNodeSpecs.clear();
- }
- }
-
- public void removeContainerNodeSpec(String hostName) {
- synchronized (monitor) {
- containerNodeSpecs = containerNodeSpecs.stream()
- .filter(c -> !c.hostname.equals(hostName))
- .collect(Collectors.toList());
- }
+ containerNodeSpecsByHostname.put(containerNodeSpec.hostname, containerNodeSpec);
}
public int getNumberOfContainerSpecs() {
synchronized (monitor) {
- return containerNodeSpecs.size();
- }
- }
-
- public void addContainerAclSpecs(String hostname, List<ContainerAclSpec> containerAclSpecs) {
- synchronized (monitor) {
- if (this.acls.containsKey(hostname)) {
- this.acls.get(hostname).addAll(containerAclSpecs);
- } else {
- this.acls.put(hostname, containerAclSpecs);
- }
+ return containerNodeSpecsByHostname.size();
}
}
}