public static PortBinding fromDockerPortMapping(DockerPortMapping mapping) { PortBinding portBinding = new PortBinding(); portBinding.protocol = mapping.getProtocol().toString(); portBinding.containerPort = mapping.getContainerPort(); portBinding.hostIp = mapping.getHostIp(); portBinding.hostPort = mapping.getHostPort(); return portBinding; }
public static DockerDevice fromString(String str) { String[] parts = str.split(DEVICE_STRING_SEPARATOR); DockerDevice device = new DockerDevice(); device.pathOnHost = parts[0]; if (parts.length > 1) { device.pathInContainer = parts[1]; } if (parts.length > 2) { device.cgroupPermissions = parts[2]; } return device; }
public static Protocol fromString(String protocolStr) { return valueOf(protocolStr.toUpperCase()); } }
@Test public void testDockerPortStringParsing() { DockerPortMapping portMapping = DockerPortMapping.fromString(fullPortString); assertEquals(description + ": hostIp", expectedHostIp, portMapping.getHostIp()); assertEquals(description + ": hostPort", expectedHostPort, portMapping.getHostPort()); assertEquals(description + ": containerPort", expectedContainerPort, portMapping.getContainerPort()); assertEquals(description + ": protocol", expectedProtocol, portMapping.getProtocol()); }
@Test public void testConversions() { DockerDevice device = DockerDevice.fromString(fullDeviceString); // fromString verifyDevice("fromString: " + description, device); // toMap Map<String, String> map = device.toMap(); verifyMap("toMap: " + description, map); // fromMap device = DockerDevice.fromMap(map); verifyDevice("fromMap: " + description, device); // toString assertEquals("toString: " + description, fullDeviceString, device.toString()); }
@Test public void testToString() { DockerPortMapping portMapping = DockerPortMapping.fromString(portBinding); assertEquals(description, portBinding, portMapping.toString()); } }
private static PortBinding[] fromDockerPortsToCompositePortBindings(String[] ports) { if (isNullOrEmpty(ports)) { return null; } PortBinding[] portBindings = new PortBinding[ports.length]; for (int i = 0; i < ports.length; i++) { portBindings[i] = fromDockerPortMapping(DockerPortMapping.fromString(ports[i])); } return portBindings; }
public String getContainerPortAndProtocol() { return String.format("%s/%s", containerPort, protocol.toString()); } }
@Test(expected = EOFException.class) public void testDecodeWithLongerFrame() throws EOFException { byte[] raw = new byte[] { 1, 0, 0, 0, 0, 0, 0, 4, 98, 105, 110, 10, 110 }; DockerStreamUtil.decodeFullRawResponse(raw); }
private void verifyDevice(String messagePrefix, DockerDevice device) { assertEquals(messagePrefix + ": host path", expectedHostPath, device.getPathOnHost()); assertEquals(messagePrefix + ": container path", expectedContainerPath, device.getPathInContainer()); assertEquals(messagePrefix + ": permissions", expectedPermissions, device.getCgroupPermissions()); }
/** * Convert a map generated by the toMap() method back to a DockerPortMapping * * @param entry * @return */ public static DockerPortMapping fromMap(Map.Entry<String, List<Map<String, String>>> entry) { DockerPortMapping portMapping = new DockerPortMapping(); if (entry.getValue() == null) { // no host mapping return null; } portMapping.containerPort = entry.getKey(); int protocolSeparatorIndex = portMapping.containerPort.indexOf("/"); if (protocolSeparatorIndex != -1) { portMapping.protocol = Protocol.fromString(portMapping.containerPort .substring(protocolSeparatorIndex + 1)); portMapping.containerPort = portMapping.containerPort.substring(0, protocolSeparatorIndex); } Map<String, String> hostMap = entry.getValue().get(0); portMapping.hostIp = hostMap.get(HOST_IP); portMapping.hostPort = hostMap.get(HOST_PORT); return portMapping; }
/** * Convert a map generated by the toMap() method back to a DockerPortMapping * * @param map * @return */ public static List<DockerPortMapping> fromMap(Map<String, List<Map<String, String>>> map) { return map.entrySet().stream() .map((e) -> fromMap(e)) .filter((m) -> m != null) .collect(Collectors.toList()); }
@Test public void testMapping() { PropertyToSwitchNameMapper mapper = new PropertyToSwitchNameMapper(); assertEquals("capitalized-like-this", mapper.apply("CapitalizedLikeThis")); } }
@Test public void testSpreadCommand() throws Throwable { assertArrayEquals(null, CommandUtil.spread(null)); assertArrayEquals(new String[] { "sh" }, CommandUtil.spread(new String[] { "sh" })); assertArrayEquals(new String[] { "sh", "-c" }, CommandUtil.spread(new String[] { "sh -c" })); assertArrayEquals(new String[] { "sh", "--verbose" }, CommandUtil.spread(new String[] { "sh --verbose" })); assertArrayEquals(new String[] { "./script.sh", "-name", "test" }, CommandUtil.spread(new String[] { "./script.sh -name \"test\"" })); assertArrayEquals(new String[] { "./script.sh", "-name=test" }, CommandUtil.spread(new String[] { "./script.sh -name=\"test\"" })); assertArrayEquals(new String[] { "./script.sh", "-name", "te st", "\\ foo" }, CommandUtil.spread(new String[] { "./script.sh -name \"te st\" \\ foo"})); assertArrayEquals(new String[] { "./script.sh", "-name", "te st", "\\ foo" }, CommandUtil.spread(new String[] { "./script.sh -name 'te st' \\ foo"})); assertArrayEquals(new String[] { "echo", "test" }, CommandUtil.spread(new String[] { "echo 'test'"})); assertArrayEquals(new String[] { "sh", "-c", "echo", "test" }, CommandUtil.spread(new String[] { "sh -c echo \"test\""})); } }
@Override public String toString() { return name().toLowerCase(); }
/** * Create a copy of this mapping with the given host port * * @param hostPort * @return */ public DockerPortMapping withHostPort(int hostPort) { DockerPortMapping newMapping = new DockerPortMapping(); newMapping.protocol = protocol; newMapping.containerPort = containerPort; newMapping.hostIp = hostIp; newMapping.hostPort = String.valueOf(hostPort); return newMapping; }
/** * Format as a docker port mapping string (reverse of fromString) */ @Override public String toString() { StringBuilder sb = new StringBuilder(); if (hostIp != null && hostIp.trim().length() > 0) { sb.append(hostIp.trim()); sb.append(":"); } if (hostPort != null && hostPort.trim().length() > 0) { sb.append(hostPort.trim()); } if (sb.length() > 0) { sb.append(":"); } sb.append(containerPort.trim()); sb.append("/"); sb.append(protocol.toString()); return sb.toString(); }
@Test public void testDecodePartialResponse() throws EOFException { byte[] raw = new byte[] { 1, 0, 0, 0, 0, 0, 0, 4, 98, 105, 110, 10 }; String decoded = DockerStreamUtil.decodeFullRawResponse(raw); String expected = "bin\n"; assertEquals(expected, decoded); }
public static DockerDevice fromMap(Map<String, String> map) { DockerDevice device = new DockerDevice(); device.pathOnHost = map.get(PATH_ON_HOST_PROP_NAME); if (device.pathOnHost != null) { device.pathInContainer = map.get(PATH_IN_CONTAINER_PROP_NAME); } if (device.pathInContainer != null) { device.cgroupPermissions = map.get(CGROUP_PERMISSIONS_PROP_NAME); } return device; }
@Test(expected = EOFException.class) public void testDecodeWithShorterFrame() throws EOFException { byte[] raw = new byte[] { 1, 0, 0, 0, 0, 0, 0, 4, 98, 105, 110 }; DockerStreamUtil.decodeFullRawResponse(raw); fail("expected to throw exception"); }