package org.arquillian.cube.docker.impl.client; import java.io.File; import java.io.IOException; import java.nio.file.Files; import java.nio.file.Paths; import java.util.Collection; import java.util.HashMap; import java.util.Map; import java.util.Set; import org.arquillian.cube.docker.impl.client.config.CubeContainer; import org.arquillian.cube.docker.impl.client.config.DockerCompositions; import org.arquillian.cube.docker.impl.client.config.Link; import org.arquillian.cube.docker.impl.client.config.Network; import org.arquillian.cube.docker.impl.client.config.PortBinding; import org.junit.Assert; import org.junit.Rule; import org.junit.Test; import org.junit.rules.TemporaryFolder; import static org.hamcrest.CoreMatchers.is; import static org.hamcrest.CoreMatchers.notNullValue; import static org.hamcrest.Matchers.containsInAnyOrder; import static org.hamcrest.Matchers.greaterThan; import org.hamcrest.collection.IsIterableContainingInOrder; import static org.junit.Assert.assertThat; public class CubeConfigurationTest { private static final String CONTENT = "tomcat:\n" + " image: tutum/tomcat:7.0\n" + " exposedPorts: [8089/tcp]\n" + " await:\n" + " strategy: static\n" + " ip: localhost\n" + " ports: [8080, 8089]"; private static final String CONTENT2 = "tomcat2:\n" + " image: tutum/tomcat:7.0\n" + " exposedPorts: [8089/tcp]\n" + " await:\n" + " strategy: static\n" + " ip: localhost\n" + " ports: [8080, 8089]"; private static final String DOCKER_COMPOSE_CONTENT = "web:\n" + " build: .\n" + " ports:\n" + " - \"5000:5000\"\n" + " volumes:\n" + " - .:/code\n" + " links:\n" + " - redis\n" + "redis:\n" + " image: redis"; private static final String OVERRIDE_CUSTOM = "tomcat:\n" + " image: tutum/tomcat:8.0\n" + " await:\n" + " strategy: polling\n" + " beforeStop: \n" + " - copy:\n" + " from: /test\n" + " to: /tmp"; private static final String VERSION_2_WITH_VOLUMES = "version: '2'\n" + "services:\n" + " nginx:\n" + " image: \"nginx:alpine\"\n" + " ports:\n" + " - \"80\"\n" + " volumes:\n" + " - \"/tmp/www:/usr/share/nginx/html\""; private static final String VERSION_2_WITH_PORT_RANGE = "version: '2'\n" + "services:\n" + " nginx:\n" + " image: \"nginx:alpine\"\n" + " ports:\n" + " - \"80-84:90-94\"\n" + " volumes:\n" + " - \"/tmp/www:/usr/share/nginx/html\""; private static final String VERSION_2_WITH_SPACE_SEPERATED_COMMAND = "version: '2'\n" + "services:\n" + " wildfly:\n" + " image: \"jboss/wildfly\"\n" + " command: /opt/jboss/wildfly/bin/standalone.sh -b 0.0.0.0 -bmanagement 0.0.0.0"; private static final String VERSION_2_WITH_SPACE_AND_QUOTES_SEPERATED_COMMAND = "version: '2'\n" + "services:\n" + " wildfly:\n" + " image: \"jboss/wildfly\"\n" + " command: \"/opt/jboss/wildfly/bin/standalone.sh -b 0.0.0.0 -bmanagement 0.0.0.0\""; private static final String VERSION_2_WITH_ARRAY_COMMAND = "version: '2'\n" + "services:\n" + " wildfly:\n" + " image: \"jboss/wildfly\"\n" + " command: [\"/opt/jboss/wildfly/bin/standalone.sh\", \"-b\", \"0.0.0.0\", \"-bmanagement\", \"0.0.0.0\"]"; @Rule public TemporaryFolder testFolder = new TemporaryFolder(); @Test public void shouldSplitCmdOnSpaces() { testCmdSplittedOnSpaces(VERSION_2_WITH_SPACE_SEPERATED_COMMAND, new String[]{"/opt/jboss/wildfly/bin/standalone.sh", "-b", "0.0.0.0", "-bmanagement", "0.0.0.0"}); } @Test public void shouldSplitCmdWihtQuotesOnSpaces() { testCmdSplittedOnSpaces(VERSION_2_WITH_SPACE_AND_QUOTES_SEPERATED_COMMAND, new String[]{"/opt/jboss/wildfly/bin/standalone.sh", "-b", "0.0.0.0", "-bmanagement", "0.0.0.0"}); } @Test public void shouldSplitCmdWithArray() { testCmdSplittedOnSpaces(VERSION_2_WITH_ARRAY_COMMAND, new String[]{"/opt/jboss/wildfly/bin/standalone.sh", "-b", "0.0.0.0", "-bmanagement", "0.0.0.0"}); } private void testCmdSplittedOnSpaces(final String composeDefinition, final String[] expectedInOrderCmds) { Map<String, String> parameters = new HashMap<String, String>(); parameters.put("serverVersion", "1.13"); parameters.put("serverUri", "http://localhost:25123"); parameters.put("dockerContainers", composeDefinition); parameters.put("definitionFormat", DefinitionFormat.COMPOSE.name()); CubeDockerConfiguration cubeConfiguration = CubeDockerConfiguration.fromMap(parameters, null); final DockerCompositions dockerContainersContent = cubeConfiguration.getDockerContainersContent(); final CubeContainer wildfly = dockerContainersContent.get("wildfly"); final Collection<String> commands = wildfly.getCmd(); assertThat(commands, IsIterableContainingInOrder.contains(expectedInOrderCmds)); } @Test public void should_expand_ports_from_docker_compose_version_2() { Map<String, String> parameters = new HashMap<String, String>(); parameters.put("serverVersion", "1.13"); parameters.put("serverUri", "http://localhost:25123"); parameters.put("dockerContainers", VERSION_2_WITH_PORT_RANGE); parameters.put("definitionFormat", DefinitionFormat.COMPOSE.name()); CubeDockerConfiguration cubeConfiguration = CubeDockerConfiguration.fromMap(parameters, null); final DockerCompositions dockerContainersContent = cubeConfiguration.getDockerContainersContent(); final CubeContainer ngnix = dockerContainersContent.get("nginx"); final Collection<PortBinding> portBindings = ngnix.getPortBindings(); assertThat(portBindings, containsInAnyOrder(PortBinding.valueOf("80->90"), PortBinding.valueOf("81->91"), PortBinding.valueOf("82->92"), PortBinding.valueOf("83->93"), PortBinding.valueOf("84->94"))); } @Test public void should_load_volumes_from_docker_compose_version_2() { Map<String, String> parameters = new HashMap<String, String>(); parameters.put("serverVersion", "1.13"); parameters.put("serverUri", "http://localhost:25123"); parameters.put("dockerContainers", VERSION_2_WITH_VOLUMES); parameters.put("definitionFormat", DefinitionFormat.COMPOSE.name()); CubeDockerConfiguration cubeConfiguration = CubeDockerConfiguration.fromMap(parameters, null); final DockerCompositions dockerContainersContent = cubeConfiguration.getDockerContainersContent(); final CubeContainer ngnix = dockerContainersContent.get("nginx"); final Collection<String> volumes = ngnix.getVolumes(); final String volume = volumes.iterator().next(); assertThat(volume, is("/tmp/www:/usr/share/nginx/html")); final Collection<String> binds = ngnix.getBinds(); final String bind = volumes.iterator().next(); assertThat(bind, is("/tmp/www:/usr/share/nginx/html")); } @Test public void shouldChangeNamesInParallelizeStarCubes() { String content = "tomcat*:\n" + " image: tutum/tomcat:8.0\n" + " portBindings: [8080/tcp]\n" + " links:\n" + " - ping*\n" + "ping*:\n" + " image: jonmorehouse/ping-pong\n" + " exposedPorts: [8089/tcp]\n" + "storage:\n" + " image: tutum/mongodb"; Map<String, String> parameters = new HashMap<String, String>(); parameters.put("dockerContainers", content); parameters.put("definitionFormat", DefinitionFormat.CUBE.name()); CubeDockerConfiguration cubeConfiguration = CubeDockerConfiguration.fromMap(parameters, null); CubeDockerConfigurator cubeDockerConfigurator = new CubeDockerConfigurator(); final CubeDockerConfiguration cubeDockerConfiguration = cubeDockerConfigurator.resolveDynamicNames(cubeConfiguration); final Set<String> containerIds = cubeDockerConfiguration.getDockerContainersContent().getContainerIds(); final String tomcat = findElementStartingWith(containerIds, "tomcat"); assertThat(tomcat.length(), is(greaterThan(6))); final String ping = findElementStartingWith(containerIds, "ping"); assertThat(ping.length(), is(greaterThan(4))); } @Test public void shouldAddEnvVarsWithHostNameInParallelizeStarCubes() { String content = "tomcat*:\n" + " image: tutum/tomcat:8.0\n" + " portBindings: [8080/tcp]\n" + " links:\n" + " - ping*\n" + "ping*:\n" + " image: jonmorehouse/ping-pong\n" + " exposedPorts: [8089/tcp]\n" + "storage:\n" + " image: tutum/mongodb"; Map<String, String> parameters = new HashMap<String, String>(); parameters.put("dockerContainers", content); parameters.put("definitionFormat", DefinitionFormat.CUBE.name()); CubeDockerConfiguration cubeConfiguration = CubeDockerConfiguration.fromMap(parameters, null); CubeDockerConfigurator cubeDockerConfigurator = new CubeDockerConfigurator(); final CubeDockerConfiguration cubeDockerConfiguration = cubeDockerConfigurator.resolveDynamicNames(cubeConfiguration); final Set<String> containerIds = cubeDockerConfiguration.getDockerContainersContent().getContainerIds(); final String tomcat = findElementStartingWith(containerIds, "tomcat"); final String ping = findElementStartingWith(containerIds, "ping"); final CubeContainer tomcatContainer = cubeDockerConfiguration.getDockerContainersContent().get(tomcat); assertThat(getFirst(tomcatContainer.getEnv()), is("PING_HOSTNAME=" + ping)); } @Test public void shouldChangePortBindingToPrivatePortsInParallelizeStarCubes() { String content = "tomcat*:\n" + " image: tutum/tomcat:8.0\n" + " portBindings: [8080/tcp]\n" + " links:\n" + " - ping*\n" + "ping*:\n" + " image: jonmorehouse/ping-pong\n" + " exposedPorts: [8089/tcp]\n" + "storage:\n" + " image: tutum/mongodb"; Map<String, String> parameters = new HashMap<String, String>(); parameters.put("dockerContainers", content); parameters.put("definitionFormat", DefinitionFormat.CUBE.name()); CubeDockerConfiguration cubeConfiguration = CubeDockerConfiguration.fromMap(parameters, null); CubeDockerConfigurator cubeDockerConfigurator = new CubeDockerConfigurator(); final CubeDockerConfiguration cubeDockerConfiguration = cubeDockerConfigurator.resolveDynamicNames(cubeConfiguration); final Set<String> containerIds = cubeDockerConfiguration.getDockerContainersContent().getContainerIds(); final String tomcat = findElementStartingWith(containerIds, "tomcat"); final CubeContainer tomcatContainer = cubeDockerConfiguration.getDockerContainersContent().get(tomcat); assertThat(getFirst(tomcatContainer.getPortBindings()).getBound(), is(greaterThan(49152))); } @Test public void shouldChangeStarLinksInParallelizeStarCubes() { String content = "tomcat*:\n" + " image: tutum/tomcat:8.0\n" + " portBindings: [8080/tcp]\n" + " links:\n" + " - ping*\n" + "ping*:\n" + " image: jonmorehouse/ping-pong\n" + " exposedPorts: [8089/tcp]\n" + "storage:\n" + " image: tutum/mongodb"; Map<String, String> parameters = new HashMap<String, String>(); parameters.put("dockerContainers", content); parameters.put("definitionFormat", DefinitionFormat.CUBE.name()); CubeDockerConfiguration cubeConfiguration = CubeDockerConfiguration.fromMap(parameters, null); CubeDockerConfigurator cubeDockerConfigurator = new CubeDockerConfigurator(); final CubeDockerConfiguration cubeDockerConfiguration = cubeDockerConfigurator.resolveDynamicNames(cubeConfiguration); final Set<String> containerIds = cubeDockerConfiguration.getDockerContainersContent().getContainerIds(); final String tomcat = findElementStartingWith(containerIds, "tomcat"); final String ping = findElementStartingWith(containerIds, "ping"); final CubeContainer tomcatContainer = cubeDockerConfiguration.getDockerContainersContent().get(tomcat); assertThat(getFirst(tomcatContainer.getLinks()).getName(), is(ping)); } @Test public void shouldParallelizeStarCubesUsingRemappingAlias() { String content = "tomcat*:\n" + " image: tutum/tomcat:8.0\n" + " portBindings: [8080/tcp]\n" + " links:\n" + " - ping*:bb\n" + "ping*:\n" + " image: jonmorehouse/ping-pong\n" + " exposedPorts: [8089/tcp]\n" + "storage:\n" + " image: tutum/mongodb"; Map<String, String> parameters = new HashMap<String, String>(); parameters.put("dockerContainers", content); parameters.put("definitionFormat", DefinitionFormat.CUBE.name()); CubeDockerConfiguration cubeConfiguration = CubeDockerConfiguration.fromMap(parameters, null); CubeDockerConfigurator cubeDockerConfigurator = new CubeDockerConfigurator(); final CubeDockerConfiguration cubeDockerConfiguration = cubeDockerConfigurator.resolveDynamicNames(cubeConfiguration); final Set<String> containerIds = cubeDockerConfiguration.getDockerContainersContent().getContainerIds(); final String tomcat = findElementStartingWith(containerIds, "tomcat"); final String ping = findElementStartingWith(containerIds, "ping"); String uuid = ping.substring(ping.indexOf('_') + 1); final CubeContainer tomcatContainer = cubeDockerConfiguration.getDockerContainersContent().get(tomcat); Link link = getFirst(tomcatContainer.getLinks()); assertThat(link.getAlias(), is("bb_" + uuid)); } private <T> T getFirst(Collection<T> collection) { return collection.iterator().next(); } private String findElementStartingWith(Set<String> elements, String startsWith) { for (String element : elements) { if (element.startsWith(startsWith)) { return element; } } return null; } @Test public void should_override_custom_cube_properties() throws IOException { File newFile = testFolder.newFile("config.yaml"); Files.write(Paths.get(newFile.toURI()), CONTENT.getBytes()); Map<String, String> parameters = new HashMap<String, String>(); parameters.put("serverVersion", "1.13"); parameters.put("serverUri", "http://localhost:25123"); parameters.put("dockerContainersFiles", newFile.toURI().toString()); parameters.put("definitionFormat", DefinitionFormat.CUBE.name()); parameters.put("cubeSpecificProperties", OVERRIDE_CUSTOM); CubeDockerConfiguration cubeConfiguration = CubeDockerConfiguration.fromMap(parameters, null); final DockerCompositions dockerContainersContent = cubeConfiguration.getDockerContainersContent(); final CubeContainer tomcat = dockerContainersContent.get("tomcat"); assertThat(tomcat, is(notNullValue())); assertThat(tomcat.getImage().getTag(), is("7.0")); assertThat(tomcat.getAwait().getStrategy(), is("polling")); assertThat(tomcat.getBeforeStop().size(), is(1)); } @Test public void should_merge_more_than_one_file_into_one() throws IOException { File newFile = testFolder.newFile("config.yaml"); Files.write(Paths.get(newFile.toURI()), CONTENT.getBytes()); File newFile2 = testFolder.newFile("config2.yaml"); Files.write(Paths.get(newFile2.toURI()), CONTENT2.getBytes()); Map<String, String> parameters = new HashMap<String, String>(); parameters.put("serverVersion", "1.13"); parameters.put("serverUri", "http://localhost:25123"); parameters.put("dockerContainersFiles", newFile.toURI().toString() + ", " + newFile2.toURI().toString()); parameters.put("definitionFormat", DefinitionFormat.COMPOSE.name()); CubeDockerConfiguration cubeConfiguration = CubeDockerConfiguration.fromMap(parameters, null); final DockerCompositions dockerContainersContent = cubeConfiguration.getDockerContainersContent(); assertThat(dockerContainersContent.get("tomcat"), is(notNullValue())); assertThat(dockerContainersContent.get("tomcat2"), is(notNullValue())); } @Test public void should_load_docker_compose_format() { Map<String, String> parameters = new HashMap<String, String>(); parameters.put("serverVersion", "1.13"); parameters.put("serverUri", "http://localhost:25123"); parameters.put("dockerContainers", DOCKER_COMPOSE_CONTENT); parameters.put("definitionFormat", DefinitionFormat.COMPOSE.name()); CubeDockerConfiguration cubeConfiguration = CubeDockerConfiguration.fromMap(parameters, null); final DockerCompositions dockerContainersContent = cubeConfiguration.getDockerContainersContent(); CubeContainer actualWeb = dockerContainersContent.get("web"); assertThat(actualWeb.getBuildImage(), is(notNullValue())); assertThat(actualWeb.getPortBindings(), is(notNullValue())); assertThat(actualWeb.getVolumes(), is(notNullValue())); assertThat(actualWeb.getLinks(), is(notNullValue())); CubeContainer actualRedis = dockerContainersContent.get("redis"); assertThat(actualRedis.getImage(), is(notNullValue())); } @Test public void should_load_cube_configuration_from_cube_file_if_no_file_is_provided() { Map<String, String> parameters = new HashMap<String, String>(); parameters.put("serverVersion", "1.13"); parameters.put("serverUri", "http://localhost:25123"); parameters.put("definitionFormat", DefinitionFormat.CUBE.name()); CubeDockerConfiguration cubeConfiguration = CubeDockerConfiguration.fromMap(parameters, null); DockerCompositions dockerContainersContent = cubeConfiguration.getDockerContainersContent(); CubeContainer actualTomcat = dockerContainersContent.get("tomcat"); assertThat(actualTomcat, is(notNullValue())); String image = actualTomcat.getImage().toImageRef(); assertThat(image, is("tomcat:7.0")); } @Test public void should_parse_and_load_configuration_file() { Map<String, String> parameters = new HashMap<String, String>(); parameters.put("serverVersion", "1.13"); parameters.put("serverUri", "http://localhost:25123"); parameters.put("definitionFormat", DefinitionFormat.CUBE.name()); parameters.put("dockerContainers", CONTENT); CubeDockerConfiguration cubeConfiguration = CubeDockerConfiguration.fromMap(parameters, null); assertThat(cubeConfiguration.getDockerServerUri(), is("http://localhost:25123")); assertThat(cubeConfiguration.getDockerServerVersion(), is("1.13")); DockerCompositions dockerContainersContent = cubeConfiguration.getDockerContainersContent(); CubeContainer actualTomcat = dockerContainersContent.get("tomcat"); assertThat(actualTomcat, is(notNullValue())); String image = actualTomcat.getImage().toImageRef(); assertThat(image, is("tutum/tomcat:7.0")); } @Test public void should_parse_and_load_configuration_file_from_container_configuration_file_and_property_set_file() throws IOException { File newFile = testFolder.newFile("config.yml"); Files.write(Paths.get(newFile.toURI()), CONTENT.getBytes()); File newFile2 = testFolder.newFile("config.demo.yml"); Files.write(Paths.get(newFile2.toURI()), CONTENT2.getBytes()); System.setProperty("cube.environment", "demo"); Map<String, String> parameters = new HashMap<String, String>(); parameters.put("serverVersion", "1.13"); parameters.put("serverUri", "http://localhost:25123"); parameters.put("definitionFormat", DefinitionFormat.CUBE.name()); parameters.put("dockerContainersFile", newFile.toURI().toString()); CubeDockerConfiguration cubeConfiguration = CubeDockerConfiguration.fromMap(parameters, null); assertThat(cubeConfiguration.getDockerServerUri(), is("http://localhost:25123")); assertThat(cubeConfiguration.getDockerServerVersion(), is("1.13")); DockerCompositions dockerContainersContent = cubeConfiguration.getDockerContainersContent(); CubeContainer actualTomcat = dockerContainersContent.get("tomcat"); assertThat(actualTomcat, is(notNullValue())); String image = actualTomcat.getImage().toImageRef(); assertThat(image, is("tutum/tomcat:7.0")); assertThat(dockerContainersContent.get("tomcat2"), is(notNullValue())); } @Test public void should_parse_and_load_configuration_file_from_container_configuration_file() throws IOException { File newFile = testFolder.newFile("config.yaml"); Files.write(Paths.get(newFile.toURI()), CONTENT.getBytes()); Map<String, String> parameters = new HashMap<String, String>(); parameters.put("serverVersion", "1.13"); parameters.put("serverUri", "http://localhost:25123"); parameters.put("definitionFormat", DefinitionFormat.CUBE.name()); parameters.put("dockerContainersFile", newFile.toURI().toString()); CubeDockerConfiguration cubeConfiguration = CubeDockerConfiguration.fromMap(parameters, null); assertThat(cubeConfiguration.getDockerServerUri(), is("http://localhost:25123")); assertThat(cubeConfiguration.getDockerServerVersion(), is("1.13")); DockerCompositions dockerContainersContent = cubeConfiguration.getDockerContainersContent(); CubeContainer actualTomcat = dockerContainersContent.get("tomcat"); assertThat(actualTomcat, is(notNullValue())); String image = actualTomcat.getImage().toImageRef(); assertThat(image, is("tutum/tomcat:7.0")); } @Test public void should_be_able_to_extend_and_override_toplevel() throws Exception { String config = "tomcat6:\n" + " image: tutum/tomcat:6.0\n" + " exposedPorts: [8089/tcp]\n" + " await:\n" + " strategy: static\n" + " ip: localhost\n" + " ports: [8080, 8089]\n" + "tomcat7:\n" + " extends: tomcat6\n" + " image: tutum/tomcat:7.0\n"; Map<String, String> parameters = new HashMap<String, String>(); parameters.put("dockerContainers", config); parameters.put("definitionFormat", DefinitionFormat.CUBE.name()); CubeDockerConfiguration cubeConfiguration = CubeDockerConfiguration.fromMap(parameters, null); CubeContainer tomcat7 = cubeConfiguration.getDockerContainersContent().get("tomcat7"); Assert.assertEquals("tutum/tomcat:7.0", tomcat7.getImage().toImageRef()); Assert.assertTrue(tomcat7.getAwait() != null); Assert.assertEquals("8089/tcp", tomcat7.getExposedPorts().iterator().next().toString()); } @Test public void should_be_able_to_read_network_configuration() { String config = "networks:\n" + " mynetwork:\n " + " driver: bridge\n" + "tomcat6:\n" + " image: tutum/tomcat:6.0\n" + " exposedPorts: [8089/tcp]\n" + " await:\n" + " strategy: static\n" + " ip: localhost\n" + " ports: [8080, 8089]\n" + "tomcat7:\n" + " extends: tomcat6\n" + " image: tutum/tomcat:7.0\n"; Map<String, String> parameters = new HashMap<String, String>(); parameters.put("dockerContainers", config); parameters.put("definitionFormat", DefinitionFormat.CUBE.name()); CubeDockerConfiguration cubeConfiguration = CubeDockerConfiguration.fromMap(parameters, null); final Network mynetwork = cubeConfiguration.getDockerContainersContent().getNetwork("mynetwork"); assertThat(mynetwork, is(notNullValue())); assertThat(mynetwork.getDriver(), is("bridge")); } @Test public void should_set_global_removeVolumes_option_if_not_set_on_container_level() { Map<String, String> parameters = new HashMap<String, String>(); parameters.put("dockerContainers", CONTENT); parameters.put("definitionFormat", DefinitionFormat.CUBE.name()); CubeDockerConfiguration cubeConfiguration = CubeDockerConfiguration.fromMap(parameters, null); CubeContainer containerConfig = cubeConfiguration.getDockerContainersContent().get("tomcat"); assertThat(containerConfig.getRemoveVolumes(), is(true)); parameters.put(CubeDockerConfiguration.REMOVE_VOLUMES, "true"); cubeConfiguration = CubeDockerConfiguration.fromMap(parameters, null); containerConfig = cubeConfiguration.getDockerContainersContent().get("tomcat"); assertThat(containerConfig.getRemoveVolumes(), is(true)); } @Test public void should_container_level_removeVolumes_option_overwrite_global_value() { String config1 = "tomcat:\n" + " image: tutum/tomcat:6.0\n" + " removeVolumes: false"; Map<String, String> parameters = new HashMap<String, String>(); parameters.put(CubeDockerConfiguration.REMOVE_VOLUMES, "true"); parameters.put("dockerContainers", config1); parameters.put("definitionFormat", DefinitionFormat.CUBE.name()); CubeDockerConfiguration cubeConfiguration = CubeDockerConfiguration.fromMap(parameters, null); CubeContainer containerConfig = cubeConfiguration.getDockerContainersContent().get("tomcat"); assertThat(containerConfig.getRemoveVolumes(), is(false)); String config2 = "tomcat:\n" + " image: tutum/tomcat:6.0\n" + " removeVolumes: true"; parameters.put(CubeDockerConfiguration.REMOVE_VOLUMES, "false"); parameters.put("dockerContainers", config2); parameters.put("definitionFormat", DefinitionFormat.CUBE.name()); cubeConfiguration = CubeDockerConfiguration.fromMap(parameters, null); containerConfig = cubeConfiguration.getDockerContainersContent().get("tomcat"); assertThat(containerConfig.getRemoveVolumes(), is(true)); } }