diff options
author | valerijf <valerijf@yahoo-inc.com> | 2016-09-06 12:43:53 +0200 |
---|---|---|
committer | valerijf <valerijf@yahoo-inc.com> | 2016-09-07 11:25:32 +0200 |
commit | 71187293c163efd64ab09ab91764f22ab47e0f67 (patch) | |
tree | d531ca32b1dea693b9f83bc50a4894c31f964f49 /docker-api | |
parent | 47285f00ce3a2106c5197b2c8970fd178ab7a0a0 (diff) |
Added tests for docker config builder
Diffstat (limited to 'docker-api')
-rw-r--r-- | docker-api/src/test/java/com/yahoo/vespa/hosted/dockerapi/DockerImplTest.java | 61 |
1 files changed, 61 insertions, 0 deletions
diff --git a/docker-api/src/test/java/com/yahoo/vespa/hosted/dockerapi/DockerImplTest.java b/docker-api/src/test/java/com/yahoo/vespa/hosted/dockerapi/DockerImplTest.java index e8f29c18fcd..73f397121c1 100644 --- a/docker-api/src/test/java/com/yahoo/vespa/hosted/dockerapi/DockerImplTest.java +++ b/docker-api/src/test/java/com/yahoo/vespa/hosted/dockerapi/DockerImplTest.java @@ -13,11 +13,16 @@ import com.github.dockerjava.api.command.InspectExecResponse; import com.github.dockerjava.api.command.ListContainersCmd; import com.github.dockerjava.api.command.ListImagesCmd; import com.github.dockerjava.api.model.Image; +import com.github.dockerjava.core.DefaultDockerClientConfig; import com.github.dockerjava.core.command.ExecStartResultCallback; import org.junit.Test; import org.mockito.Matchers; import java.io.IOException; +import java.security.KeyManagementException; +import java.security.KeyStoreException; +import java.security.NoSuchAlgorithmException; +import java.security.UnrecoverableKeyException; import java.util.Arrays; import java.util.Collections; import java.util.LinkedList; @@ -27,6 +32,7 @@ import java.util.stream.Collectors; import static org.hamcrest.CoreMatchers.is; import static org.junit.Assert.assertThat; +import static org.junit.Assert.assertTrue; import static org.mockito.Matchers.any; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.when; @@ -36,6 +42,61 @@ import static org.mockito.Mockito.when; */ public class DockerImplTest { @Test + public void testDockerConfigWithUnixPath() throws UnrecoverableKeyException, NoSuchAlgorithmException, KeyStoreException, KeyManagementException { + String dockerUri = "unix:///var/run/docker.sock"; + DockerConfig config = createConfig(dockerUri, null, null, null); + DefaultDockerClientConfig clientConfig = DockerImpl.buildDockerClientConfig(config).build(); + + assertTrue("Docker uri incorrectly set", clientConfig.getDockerHost().toString().equals(dockerUri)); + assertTrue("SSL config was set when using socket", clientConfig.getSSLConfig() == null); + } + + @Test + public void testDockerConfigWithTcpPathWithoutSSL() { + String dockerUri = "tcp://127.0.0.1:2376"; + DockerConfig config = createConfig(dockerUri, null, null, null); + DefaultDockerClientConfig clientConfig = DockerImpl.buildDockerClientConfig(config).build(); + + assertTrue("Docker uri incorrectly set", clientConfig.getDockerHost().toString().equals(dockerUri)); + assertTrue("SSL config was set", clientConfig.getSSLConfig() == null); + } + + @Test + public void testDockerConfigWithTcpPathWithSslConfig() throws IOException, UnrecoverableKeyException, NoSuchAlgorithmException, KeyStoreException, KeyManagementException { + String dockerUri = "tcp://127.0.0.1:2376"; + DockerConfig config = createConfig(dockerUri, "/some/path/ca", "/some/path/cert", "/some/path/key"); + DefaultDockerClientConfig clientConfig = DockerImpl.buildDockerClientConfig(config).build(); + + assertTrue("Docker uri incorrectly set", clientConfig.getDockerHost().toString().equals(dockerUri)); + assertTrue("SSL config was not set", clientConfig.getSSLConfig() != null); + } + + @Test(expected=RuntimeException.class) + public void testDockerConfigWithTcpPathWithInvalidSslConfig() throws IOException, UnrecoverableKeyException, NoSuchAlgorithmException, KeyStoreException, KeyManagementException { + String dockerUri = "tcp://127.0.0.1:2376"; + DockerConfig config = createConfig(dockerUri, "/some/path/ca", "/some/path/cert", "/some/path/key"); + DefaultDockerClientConfig clientConfig = DockerImpl.buildDockerClientConfig(config).build(); + + assertTrue("Docker uri incorrectly set", clientConfig.getDockerHost().toString().equals(dockerUri)); + assertTrue("SSL config was not set", clientConfig.getSSLConfig() != null); + + // SSL certificates are read during the getSSLContext(), the invalid paths should cause a RuntimeException + clientConfig.getSSLConfig().getSSLContext(); + } + + + private static DockerConfig createConfig(String uri, String caCertPath, String clientCertPath, String clientKeyPath) { + DockerConfig.Builder configBuilder = new DockerConfig.Builder(); + + if (uri != null) configBuilder.uri(uri); + if (caCertPath != null) configBuilder.caCertPath(caCertPath); + if (clientCertPath != null) configBuilder.clientCertPath(clientCertPath); + if (clientKeyPath != null) configBuilder.clientKeyPath(clientKeyPath); + + return new DockerConfig(configBuilder); + } + + @Test public void testExecuteCompletes() throws Exception { final String containerId = "container-id"; final String[] command = new String[] {"/bin/ls", "-l"}; |