package org.arquillian.cube.docker.impl.client; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; import org.arquillian.cube.spi.Node; import org.junit.Test; import static org.hamcrest.CoreMatchers.is; import static org.hamcrest.CoreMatchers.notNullValue; import static org.hamcrest.CoreMatchers.nullValue; import static org.junit.Assert.assertThat; public class AutomaticResolutionAutostartParserTest { @Test public void shouldStartNoneDeployableContainersWithRegisteredNetwork() { List<String> deployableContainer = new ArrayList<>(); deployableContainer.add("tomcat"); String config = "networks:\n" + " mynetwork:\n" + " driver: bridge\n" + "tomcat:\n" + " image: tutum/tomcat:7.0\n" + " exposedPorts: [8089/tcp]\n" + " env: [TOMCAT_PASS=mypass, \"CATALINA_OPTS=-Djava.security.egd=file:/dev/./urandom\", JAVA_OPTS=-Djava.rmi.server.hostname=dockerServerIp -Dcom.sun.management.jmxremote.rmi.port=8088 -Dcom.sun.management.jmxremote.port=8089 -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false]\n" + " portBindings: [8089/tcp, 8088/tcp, 8081->8080/tcp]\n" + " networkMode: mynetwork\n" + "pingpong:\n" + " image: jonmorehouse/ping-pong\n" + " exposedPorts: [8080/tcp]\n" + " portBindings: [8080->8080/tcp]\n" + " networkMode: mynetwork"; Map<String, String> parameters = new HashMap<String, String>(); parameters.put("dockerContainers", config); parameters.put("definitionFormat", DefinitionFormat.CUBE.name()); CubeDockerConfiguration cubeConfiguration = CubeDockerConfiguration.fromMap(parameters, null); AutomaticResolutionNetworkAutoStartParser automaticResolutionNetworkAutoStartParser = new AutomaticResolutionNetworkAutoStartParser(deployableContainer, cubeConfiguration.getDockerContainersContent()); final Map<String, Node> parse = automaticResolutionNetworkAutoStartParser.parse(); assertThat(parse.get("pingpong"), is(notNullValue())); assertThat(parse.get("tomcat"), is(nullValue())); } @Test public void shouldNotStartManualContainers() { String config = "tomcat:\n" + " image: tutum/tomcat:7.0\n" + " exposedPorts: [8089/tcp]\n" + " env: [TOMCAT_PASS=mypass, \"CATALINA_OPTS=-Djava.security.egd=file:/dev/./urandom\", JAVA_OPTS=-Djava.rmi.server.hostname=dockerServerIp -Dcom.sun.management.jmxremote.rmi.port=8088 -Dcom.sun.management.jmxremote.port=8089 -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false]\n" + " portBindings: [8089/tcp, 8088/tcp, 8081->8080/tcp]\n" + "pingpong:\n" + " image: jonmorehouse/ping-pong\n" + " exposedPorts: [8080/tcp]\n" + " portBindings: [8080->8080/tcp]\n" + " manual: true"; Map<String, String> parameters = new HashMap<String, String>(); parameters.put("dockerContainers", config); parameters.put("definitionFormat", DefinitionFormat.CUBE.name()); CubeDockerConfiguration cubeConfiguration = CubeDockerConfiguration.fromMap(parameters, null); RegularExpressionAutoStartParser regularExpressionAutoStartParser = new RegularExpressionAutoStartParser("regexp:.*", cubeConfiguration.getDockerContainersContent()); final Map<String, Node> parse = regularExpressionAutoStartParser.parse(); assertThat(parse.get("tomcat"), is(notNullValue())); assertThat(parse.get("pingping"), is(nullValue())); } }