diff options
author | valerijf <valerijf@yahoo-inc.com> | 2017-06-12 12:13:31 +0200 |
---|---|---|
committer | valerijf <valerijf@yahoo-inc.com> | 2017-06-12 12:13:31 +0200 |
commit | 97bc1386675d47f82515324c5f02f8453642d20d (patch) | |
tree | 6247104b86719e3164c720ff227ae98cd2a41f9c /node-admin | |
parent | 22ef7b1cd08e235e20efc8d3b656af0ef95b55e9 (diff) |
Simplify DockerTester interface
Diffstat (limited to 'node-admin')
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(); } } } |