public static Collection<PortBinding> valuesOf(Collection<String> bindings) { if (bindings == null) { return null; } List<PortBinding> result = new ArrayList<PortBinding>(); for (String binding : bindings) { result.add(valueOf(binding)); } return result; }
public static Collection<PortBinding> valuesOf(Collection<String> bindings) { if (bindings == null) { return null; } List<PortBinding> result = new ArrayList<PortBinding>(); for (String binding : bindings) { result.add(valueOf(binding)); } return result; }
private Collection<PortBinding> addPairPortRange(String hostRangePorts, String containerRangePorts, String host) { Collection<PortBinding> listOfPorts = new ArrayList<>(); final List<String> expandedHostPorts = getExpandedPorts(hostRangePorts); final List<String> expandedContainerPorts = getExpandedPorts(containerRangePorts); if (expandedContainerPorts.size() != expandedHostPorts.size()) { throw new IllegalArgumentException("Port ranges from host and container side should contain same number of ports"); } for (int i=0; i < expandedHostPorts.size(); i++) { if (host == null) { listOfPorts.add(PortBinding.valueOf(expandedHostPorts.get(i) + "->" + expandedContainerPorts.get(i))); } else { listOfPorts.add(PortBinding.valueOf(host + ":" + expandedHostPorts.get(i) + "->" + expandedContainerPorts.get(i))); } } return listOfPorts; }
private Collection<PortBinding> addPairPortRange(String hostRangePorts, String containerRangePorts, String host) { Collection<PortBinding> listOfPorts = new ArrayList<>(); final List<String> expandedHostPorts = getExpandedPorts(hostRangePorts); final List<String> expandedContainerPorts = getExpandedPorts(containerRangePorts); if (expandedContainerPorts.size() != expandedHostPorts.size()) { throw new IllegalArgumentException("Port ranges from host and container side should contain same number of ports"); } for (int i=0; i < expandedHostPorts.size(); i++) { if (host == null) { listOfPorts.add(PortBinding.valueOf(expandedHostPorts.get(i) + "->" + expandedContainerPorts.get(i))); } else { listOfPorts.add(PortBinding.valueOf(host + ":" + expandedHostPorts.get(i) + "->" + expandedContainerPorts.get(i))); } } return listOfPorts; }
private static void setDefaultSeleniumCubeProperties(CubeContainer cubeContainer, int seleniumBoundedPort) { final ArrayList<PortBinding> portBindings = new ArrayList<>(); portBindings.add(PortBinding.valueOf(seleniumBoundedPort + "->4444")); final Image image = cubeContainer.getImage(); if (null != image && image.getName().toLowerCase().contains("debug")) { //Expose VNC portBindings.add(PortBinding.valueOf("5900->5900")); } cubeContainer.setPortBindings( portBindings ); Await await = new Await(); await.setStrategy("http"); await.setResponseCode(getSeleniumExpectedResponseCode()); await.setUrl("http://dockerHost:" + seleniumBoundedPort); cubeContainer.setAwait(await); cubeContainer.setKillContainer(true); }
@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"))); }
@Override public Object construct(Node node) { if (node.getType() == PortBinding.class) { String value = constructScalar((ScalarNode) node).toString(); return PortBinding.valueOf(value); } else if (node.getType() == ExposedPort.class) { String value = constructScalar((ScalarNode) node).toString(); return ExposedPort.valueOf(value); } else if (node.getType() == Image.class) { String value = constructScalar((ScalarNode) node).toString(); return Image.valueOf(value); } else if (node.getType() == Link.class) { String value = constructScalar((ScalarNode) node).toString(); return Link.valueOf(value); } return super.construct(node); } }
@Override public Object construct(Node node) { if (node.getType() == PortBinding.class) { String value = constructScalar((ScalarNode) node).toString(); return PortBinding.valueOf(value); } else if (node.getType() == ExposedPort.class) { String value = constructScalar((ScalarNode) node).toString(); return ExposedPort.valueOf(value); } else if (node.getType() == Image.class) { String value = constructScalar((ScalarNode) node).toString(); return Image.valueOf(value); } else if (node.getType() == Link.class) { String value = constructScalar((ScalarNode) node).toString(); return Link.valueOf(value); } return super.construct(node); } }
private static void setDefaultSeleniumCubeProperties(CubeContainer cubeContainer, int seleniumBoundedPort) { cubeContainer.setPortBindings( Arrays.asList(PortBinding.valueOf(seleniumBoundedPort + "-> 4444")) ); Await await = new Await(); await.setStrategy("http"); await.setResponseCode(getSeleniumExpectedResponseCode()); await.setUrl("http://dockerHost:" + seleniumBoundedPort); cubeContainer.setAwait(await); cubeContainer.setKillContainer(true); }
@Test public void shouldCreateCustomContainerFromDockerfile() { when(cubeDroneConfiguration.isBrowserDockerfileDirectorySet()).thenReturn(true); when(cubeDroneConfiguration.isBrowserImageSet()).thenReturn(false); when(cubeDroneConfiguration.getBrowserDockerfileLocation()).thenReturn("src/test/resources/browser"); when(cubeDroneConfiguration.getContainerNameStrategy()).thenReturn(ContainerNameStrategy.STATIC); final SeleniumContainers firefox = SeleniumContainers.create("firefox", cubeDroneConfiguration); assertThat(firefox.getBrowser(), is("firefox")); assertThat(firefox.getSeleniumContainer().getBuildImage().getDockerfileLocation().toString(), is("src/test/resources/browser")); assertThat(firefox.getSeleniumContainer().getPortBindings(), hasItem(PortBinding.valueOf("14444->4444"))); }
@Test public void shouldCreateCustomContainerFromImageName() { when(cubeDroneConfiguration.isBrowserDockerfileDirectorySet()).thenReturn(false); when(cubeDroneConfiguration.isBrowserImageSet()).thenReturn(true); when(cubeDroneConfiguration.getBrowserImage()).thenReturn("mycompany/mybrowser:1.0"); when(cubeDroneConfiguration.getContainerNameStrategy()).thenReturn(ContainerNameStrategy.STATIC); final SeleniumContainers firefox = SeleniumContainers.create("firefox", cubeDroneConfiguration); assertThat(firefox.getBrowser(), is("firefox")); assertThat(firefox.getSeleniumContainer().getImage().toString(), is("mycompany/mybrowser:1.0")); assertThat(firefox.getSeleniumContainer().getPortBindings(), hasItem(PortBinding.valueOf("14444->4444"))); }
@Test public void shouldCreateStaticContainerNameAndPort() { when(cubeDroneConfiguration.isBrowserDockerfileDirectorySet()).thenReturn(false); when(cubeDroneConfiguration.isBrowserImageSet()).thenReturn(false); when(cubeDroneConfiguration.getContainerNameStrategy()).thenReturn(ContainerNameStrategy.STATIC); final SeleniumContainers seleniumContainers = SeleniumContainers.create("firefox", cubeDroneConfiguration); assertThat(seleniumContainers.getSeleniumContainer().getPortBindings(), hasItem(PortBinding.valueOf("14444->4444"))); assertThat(seleniumContainers.getSeleniumContainerName(), is("browser")); assertThat(seleniumContainers.getVncContainerName(), is("vnc")); assertThat(seleniumContainers.getVideoConverterContainerName(), is("flv2mp4")); }
@Test public void shouldTakePrecedenceDockerfileDirectoryThanImage() { when(cubeDroneConfiguration.isBrowserDockerfileDirectorySet()).thenReturn(true); when(cubeDroneConfiguration.isBrowserImageSet()).thenReturn(true); when(cubeDroneConfiguration.getBrowserDockerfileLocation()).thenReturn("src/test/resources/browser"); when(cubeDroneConfiguration.getContainerNameStrategy()).thenReturn(ContainerNameStrategy.STATIC); final SeleniumContainers firefox = SeleniumContainers.create("firefox", cubeDroneConfiguration); assertThat(firefox.getBrowser(), is("firefox")); assertThat(firefox.getSeleniumContainer().getBuildImage().getDockerfileLocation().toString(), is("src/test/resources/browser")); assertThat(firefox.getSeleniumContainer().getImage(), is(nullValue())); assertThat(firefox.getSeleniumContainer().getPortBindings(), hasItem(PortBinding.valueOf("14444->4444"))); }
@Test public void shouldCreateContainerForChrome() { when(cubeDroneConfiguration.isBrowserDockerfileDirectorySet()).thenReturn(false); when(cubeDroneConfiguration.isBrowserImageSet()).thenReturn(false); when(cubeDroneConfiguration.getContainerNameStrategy()).thenReturn(ContainerNameStrategy.STATIC); when(cubeDroneConfiguration.getDockerRegistry()).thenReturn(""); final SeleniumContainers firefox = SeleniumContainers.create("chrome", cubeDroneConfiguration); assertThat(firefox.getBrowser(), is("chrome")); assertThat(firefox.getSeleniumContainer().getImage().toString(), is("selenium/standalone-chrome-debug:2.53.0")); assertThat(firefox.getSeleniumContainer().getPortBindings(), hasItem(PortBinding.valueOf("14444->4444"))); assertThat(firefox.getSeleniumContainer().getAwait().getResponseCode(), is(403)); }
@Test public void shouldCreateContainerForFirefox() { when(cubeDroneConfiguration.isBrowserDockerfileDirectorySet()).thenReturn(false); when(cubeDroneConfiguration.isBrowserImageSet()).thenReturn(false); when(cubeDroneConfiguration.getContainerNameStrategy()).thenReturn(ContainerNameStrategy.STATIC); when(cubeDroneConfiguration.getDockerRegistry()).thenReturn(""); final SeleniumContainers firefox = SeleniumContainers.create("firefox", cubeDroneConfiguration); assertThat(firefox.getBrowser(), is("firefox")); assertThat(firefox.getSeleniumContainer().getImage().toString(), is("selenium/standalone-firefox-debug:2.53.0")); assertThat(firefox.getSeleniumContainer().getPortBindings(), hasItem(PortBinding.valueOf("14444->4444"))); assertThat(firefox.getSeleniumContainer().getAwait().getResponseCode(), is(403)); }
@Test public void shouldExtendDockerComposeWithEnvResolution() throws URISyntaxException, IOException { String oldValue = System.getProperty("ports"); System.setProperty("ports", "9090:8080"); try { URI readEnvsDockerCompose = DockerComposeConverterTest.class.getResource("/extends-docker-compose-env.yml").toURI(); DockerComposeConverter dockerComposeConverter = DockerComposeConverter.create(Paths.get(readEnvsDockerCompose)); DockerCompositions convert = dockerComposeConverter.convert(); CubeContainer webapp = convert.get("web"); assertThat(webapp.getEnv(), is(notNullValue())); Collection<String> env = webapp.getEnv(); assertThat(env, containsInAnyOrder("REDIS_HOST=redis-production.example.com")); assertThat(webapp.getPortBindings(), is(notNullValue())); Collection<PortBinding> ports = webapp.getPortBindings(); assertThat(ports, containsInAnyOrder(PortBinding.valueOf("9090->8080"))); } finally { System.clearProperty("ports"); if (oldValue != null) System.setProperty("ports", oldValue); } }
@Test public void shouldExtendDockerComposeV2WithEnvResolution() throws URISyntaxException, IOException { String oldValue = System.getProperty("ports"); System.setProperty("ports", "9090:8080"); try { URI readEnvsDockerCompose = DockerComposeConverterTest.class.getResource("/extends-docker-compose-env-v2.yml").toURI(); DockerComposeConverter dockerComposeConverter = DockerComposeConverter.create(Paths.get(readEnvsDockerCompose)); DockerCompositions convert = dockerComposeConverter.convert(); CubeContainer webapp = convert.get("web"); assertThat(webapp.getEnv(), is(notNullValue())); Collection<String> env = webapp.getEnv(); assertThat(env, containsInAnyOrder("REDIS_HOST=redis-production.example.com")); assertThat(webapp.getPortBindings(), is(notNullValue())); Collection<PortBinding> ports = webapp.getPortBindings(); assertThat(ports, containsInAnyOrder(PortBinding.valueOf("9090->8080"))); } finally { System.clearProperty("ports"); if (oldValue != null) System.setProperty("ports", oldValue); } }
@Test public void shouldExtendDockerCompose() throws URISyntaxException, IOException { URI readEnvsDockerCompose = DockerComposeConverterTest.class.getResource("/extends-docker-compose.yml").toURI(); DockerComposeConverter dockerComposeConverter = DockerComposeConverter.create(Paths.get(readEnvsDockerCompose)); DockerCompositions convert = dockerComposeConverter.convert(); CubeContainer webapp = convert.get("web"); assertThat(webapp.getEnv(), is(notNullValue())); Collection<String> env = webapp.getEnv(); assertThat(env, containsInAnyOrder("REDIS_HOST=redis-production.example.com")); assertThat(webapp.getPortBindings(), is(notNullValue())); Collection<PortBinding> ports = webapp.getPortBindings(); assertThat(ports, containsInAnyOrder(PortBinding.valueOf("8080->8080"))); }
@Test public void shouldExtendDockerComposeV2() throws URISyntaxException, IOException { URI readEnvsDockerCompose = DockerComposeConverterTest.class.getResource("/extends-docker-compose-v2.yml").toURI(); DockerComposeConverter dockerComposeConverter = DockerComposeConverter.create(Paths.get(readEnvsDockerCompose)); DockerCompositions convert = dockerComposeConverter.convert(); CubeContainer webapp = convert.get("web"); assertThat(webapp.getEnv(), is(notNullValue())); Collection<String> env = webapp.getEnv(); assertThat(env, containsInAnyOrder("REDIS_HOST=redis-production.example.com")); assertThat(webapp.getPortBindings(), is(notNullValue())); Collection<PortBinding> ports = webapp.getPortBindings(); assertThat(ports, containsInAnyOrder(PortBinding.valueOf("8080->8080"))); }
@Test public void shouldTransformSimpleDockerComposeFormat() throws URISyntaxException, IOException { URI simpleDockerCompose = DockerComposeConverterTest.class.getResource("/simple-docker-compose.yml").toURI(); DockerComposeConverter dockerComposeConverter = DockerComposeConverter.create(Paths.get(simpleDockerCompose)); DockerCompositions convert = dockerComposeConverter.convert(); CubeContainer webapp = convert.get("webapp"); assertThat(webapp.getBuildImage(), is(notNullValue())); assertThat(webapp.getPortBindings(), is(notNullValue())); Collection<PortBinding> ports = webapp.getPortBindings(); assertThat(ports, containsInAnyOrder(PortBinding.valueOf("8000->8000"))); assertThat(webapp.getDevices(), is(notNullValue())); assertThat(webapp.getVolumes(), is(notNullValue())); Collection<String> volumes = (Collection<String>) webapp.getVolumes(); assertThat(volumes, containsInAnyOrder("/data")); CubeContainer webapp2 = convert.get("webapp2"); assertThat(webapp2.getImage(), is(notNullValue())); assertThat(webapp2.getPortBindings(), is(notNullValue())); assertThat(webapp2.getLinks(), is(notNullValue())); Collection<Link> links = webapp2.getLinks(); assertThat(links, containsInAnyOrder(Link.valueOf("webapp:webapp"))); assertThat(webapp2.getEnv(), is(notNullValue())); Collection<String> env = webapp2.getEnv(); assertThat(env, containsInAnyOrder("RACK_ENV=development")); }