diff options
author | Valerij Fredriksen <valerijf@oath.com> | 2018-10-17 14:50:17 +0200 |
---|---|---|
committer | Valerij Fredriksen <valerijf@oath.com> | 2018-10-17 15:50:42 +0200 |
commit | ab662e0c72db57a68995f8624c4783d020bd0f6e (patch) | |
tree | 3684b2796fd29e32005a2527e9df0ad361353de8 /node-admin | |
parent | 22a62b369e4a87d6b7a2fadf306a2db321a086d2 (diff) |
Add Builder to NodeAgentContextImpl for testing
Diffstat (limited to 'node-admin')
8 files changed, 63 insertions, 34 deletions
diff --git a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/nodeagent/NodeAgentContextImpl.java b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/nodeagent/NodeAgentContextImpl.java index d3c8b145488..9fe7465d29c 100644 --- a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/nodeagent/NodeAgentContextImpl.java +++ b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/nodeagent/NodeAgentContextImpl.java @@ -97,4 +97,52 @@ public class NodeAgentContextImpl implements NodeAgentContext { public void log(Logger logger, Level level, String message, Throwable throwable) { logger.log(level, logPrefix + message, throwable); } + + + /** For testing only! */ + public static class Builder { + private final String hostname; + private NodeType nodeType; + private AthenzService identity; + private Path pathToContainerStorage; + private Path pathToVespaHome; + + public Builder(String hostname) { + this.hostname = hostname; + } + + public Builder nodeType(NodeType nodeType) { + this.nodeType = nodeType; + return this; + } + + public Builder identity(AthenzService identity) { + this.identity = identity; + return this; + } + + public Builder pathToContainerStorage(Path pathToContainerStorage) { + this.pathToContainerStorage = pathToContainerStorage; + return this; + } + + public Builder pathToVespaHome(Path pathToVespaHome) { + this.pathToVespaHome = pathToVespaHome; + return this; + } + + public Builder fileSystem(FileSystem fileSystem) { + return pathToContainerStorage(fileSystem.getPath("/home/docker")); + } + + public NodeAgentContextImpl build() { + return new NodeAgentContextImpl( + hostname, + Optional.ofNullable(nodeType).orElse(NodeType.tenant), + Optional.ofNullable(identity).orElseGet(() -> new AthenzService("domain", "service")), + Optional.ofNullable(pathToContainerStorage).orElseGet(() -> Paths.get("/home/docker")), + Optional.ofNullable(pathToVespaHome).orElseGet(() -> Paths.get("/opt/vespa")) + ); + } + } } 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/DockerOperationsImplTest.java index 760326f061e..ab303a4b519 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/DockerOperationsImplTest.java @@ -51,7 +51,7 @@ public class DockerOperationsImplTest { @Test public void processResultFromNodeProgramWhenSuccess() { - final NodeAgentContext context = NodeAgentContextImplTest.nodeAgentFromHostname("container-123.domain.tld"); + 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(), anyVararg())) @@ -72,7 +72,7 @@ public class DockerOperationsImplTest { @Test(expected = RuntimeException.class) public void processResultFromNodeProgramWhenNonZeroExitCode() { - final NodeAgentContext context = NodeAgentContextImplTest.nodeAgentFromHostname("container-123.domain.tld"); + 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(), anyVararg())) @@ -105,10 +105,6 @@ public class DockerOperationsImplTest { InetAddress ipV6Local = InetAddresses.forString("::1"); InetAddress ipV4Local = InetAddresses.forString("127.0.0.1"); - DockerOperationsImpl dockerOperations = new DockerOperationsImpl( - docker, - environment, - processExecuter); dockerOperations.addEtcHosts(containerData, hostname, Optional.empty(), ipV6Local); verify(containerData, times(1)).addFile( diff --git a/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/logging/FilebeatConfigProviderTest.java b/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/logging/FilebeatConfigProviderTest.java index f7e10c3aa13..d4fadabe695 100644 --- a/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/logging/FilebeatConfigProviderTest.java +++ b/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/logging/FilebeatConfigProviderTest.java @@ -8,7 +8,7 @@ import com.yahoo.vespa.hosted.node.admin.component.Environment; import com.yahoo.vespa.hosted.node.admin.config.ConfigServerConfig; import com.yahoo.vespa.hosted.node.admin.docker.DockerNetworking; import com.yahoo.vespa.hosted.node.admin.nodeagent.NodeAgentContext; -import com.yahoo.vespa.hosted.node.admin.nodeagent.NodeAgentContextImplTest; +import com.yahoo.vespa.hosted.node.admin.nodeagent.NodeAgentContextImpl; import com.yahoo.vespa.hosted.provision.Node; import org.junit.Test; @@ -32,7 +32,7 @@ public class FilebeatConfigProviderTest { private static final String region = "us-north-1"; private static final String system = "main"; private static final List<String> logstashNodes = ImmutableList.of("logstash1", "logstash2"); - private final NodeAgentContext context = NodeAgentContextImplTest.nodeAgentFromHostname("node-123.hostname.tld"); + private final NodeAgentContext context = new NodeAgentContextImpl.Builder("node-123.hostname.tld").build(); @Test public void it_replaces_all_fields_correctly() { diff --git a/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/maintenance/StorageMaintainerTest.java b/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/maintenance/StorageMaintainerTest.java index 7c10e703bb5..ab755bf15c3 100644 --- a/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/maintenance/StorageMaintainerTest.java +++ b/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/maintenance/StorageMaintainerTest.java @@ -9,7 +9,7 @@ import com.yahoo.vespa.hosted.node.admin.docker.DockerOperations; import com.yahoo.vespa.hosted.node.admin.component.Environment; import com.yahoo.vespa.hosted.node.admin.component.PathResolver; import com.yahoo.vespa.hosted.node.admin.nodeagent.NodeAgentContext; -import com.yahoo.vespa.hosted.node.admin.nodeagent.NodeAgentContextImplTest; +import com.yahoo.vespa.hosted.node.admin.nodeagent.NodeAgentContextImpl; import com.yahoo.vespa.hosted.node.admin.task.util.file.FileFinder; import com.yahoo.vespa.test.file.TestFileSystem; import org.junit.Rule; @@ -112,7 +112,8 @@ public class StorageMaintainerTest { } private NodeAgentContext createNodeAgentContextAndContainerStorage(FileSystem fileSystem, String containerName) throws IOException { - NodeAgentContext context = NodeAgentContextImplTest.nodeAgentFromHostname(fileSystem, containerName + ".domain.tld"); + NodeAgentContext context = new NodeAgentContextImpl.Builder(containerName + ".domain.tld") + .fileSystem(fileSystem).build(); Path containerVespaHomeOnHost = context.pathOnHostFromPathInNode(context.pathInNodeUnderVespaHome("")); Files.createDirectories(context.pathOnHostFromPathInNode("/etc/something")); 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 0fed9433432..d809d9cbf96 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 @@ -4,7 +4,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.nodeagent.NodeAgentContext; -import com.yahoo.vespa.hosted.node.admin.nodeagent.NodeAgentContextImplTest; +import com.yahoo.vespa.hosted.node.admin.nodeagent.NodeAgentContextImpl; import org.junit.Test; import java.nio.file.Path; @@ -27,7 +27,7 @@ public class CoreCollectorTest { private final String GDB_PATH = "/my/path/to/gdb"; private final DockerOperations docker = mock(DockerOperations.class); private final CoreCollector coreCollector = new CoreCollector(docker, Paths.get(GDB_PATH)); - private final NodeAgentContext context = NodeAgentContextImplTest.nodeAgentFromHostname("container-123.domain.tld"); + private final NodeAgentContext context = new NodeAgentContextImpl.Builder("container-123.domain.tld").build(); private final Path TEST_CORE_PATH = Paths.get("/tmp/core.1234"); private final Path TEST_BIN_PATH = Paths.get("/usr/bin/program"); diff --git a/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/maintenance/coredump/CoredumpHandlerTest.java b/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/maintenance/coredump/CoredumpHandlerTest.java index d567cac9a70..ca8435c9edd 100644 --- a/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/maintenance/coredump/CoredumpHandlerTest.java +++ b/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/maintenance/coredump/CoredumpHandlerTest.java @@ -3,7 +3,7 @@ package com.yahoo.vespa.hosted.node.admin.maintenance.coredump; import com.google.common.collect.ImmutableMap; import com.yahoo.vespa.hosted.node.admin.nodeagent.NodeAgentContext; -import com.yahoo.vespa.hosted.node.admin.nodeagent.NodeAgentContextImplTest; +import com.yahoo.vespa.hosted.node.admin.nodeagent.NodeAgentContextImpl; import com.yahoo.vespa.hosted.node.admin.task.util.file.UnixPath; import com.yahoo.vespa.hosted.node.admin.task.util.process.TestChildProcess2; import com.yahoo.vespa.hosted.node.admin.task.util.process.TestTerminal; @@ -47,7 +47,8 @@ import static org.mockito.Mockito.when; public class CoredumpHandlerTest { private final FileSystem fileSystem = TestFileSystem.create(); private final Path donePath = fileSystem.getPath("/home/docker/dumps"); - private final NodeAgentContext context = NodeAgentContextImplTest.nodeAgentFromHostname(fileSystem, "container-123.domain.tld"); + private final NodeAgentContext context = new NodeAgentContextImpl.Builder("container-123.domain.tld") + .fileSystem(fileSystem).build(); private final Path crashPathInContainer = Paths.get("/var/crash"); private final Path doneCoredumpsPath = fileSystem.getPath("/home/docker/dumps"); diff --git a/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/nodeagent/NodeAgentContextImplTest.java b/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/nodeagent/NodeAgentContextImplTest.java index 31ac8d1c114..84f13ed299a 100644 --- a/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/nodeagent/NodeAgentContextImplTest.java +++ b/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/nodeagent/NodeAgentContextImplTest.java @@ -1,13 +1,9 @@ package com.yahoo.vespa.hosted.node.admin.nodeagent; -import com.yahoo.config.provision.NodeType; -import com.yahoo.vespa.athenz.api.AthenzService; import com.yahoo.vespa.test.file.TestFileSystem; import org.junit.Test; import java.nio.file.FileSystem; -import java.nio.file.Path; -import java.nio.file.Paths; import static org.junit.Assert.assertEquals; @@ -16,7 +12,8 @@ import static org.junit.Assert.assertEquals; */ public class NodeAgentContextImplTest { private final FileSystem fileSystem = TestFileSystem.create(); - private final NodeAgentContext context = nodeAgentFromHostname(fileSystem, "container-1.domain.tld"); + private final NodeAgentContext context = new NodeAgentContextImpl.Builder("container-1.domain.tld") + .fileSystem(fileSystem).build(); @Test public void path_on_host_from_path_in_node_test() { @@ -71,18 +68,4 @@ public class NodeAgentContextImplTest { public void path_under_vespa_home_must_be_relative() { context.pathInNodeUnderVespaHome("/home"); } - - - public static NodeAgentContext nodeAgentFromHostname(String hostname) { - FileSystem fileSystem = TestFileSystem.create(); - return nodeAgentFromHostname(fileSystem, hostname); - } - - public static NodeAgentContext nodeAgentFromHostname(FileSystem fileSystem, String hostname) { - final Path vespaHomeInContainer = Paths.get("/opt/vespa"); - final Path containerStoragePath = fileSystem.getPath("/home/docker"); - - return new NodeAgentContextImpl(hostname, NodeType.tenant, new AthenzService("domain", "service"), - containerStoragePath, vespaHomeInContainer); - } } 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 5cc881fe62d..3f2f3ad78a2 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 @@ -68,7 +68,7 @@ public class NodeAgentImplTest { private static final String vespaVersion = "1.2.3"; private final String hostName = "host1.test.yahoo.com"; - private final NodeAgentContext context = NodeAgentContextImplTest.nodeAgentFromHostname(hostName); + private final NodeAgentContext context = new NodeAgentContextImpl.Builder(hostName).build(); private final DockerImage dockerImage = new DockerImage("dockerImage"); private final DockerOperations dockerOperations = mock(DockerOperations.class); private final NodeRepository nodeRepository = mock(NodeRepository.class); |