@Test public void testSeriaizeDeserializeCompositeTemplateWithHealthCheck() throws IOException { // Assert that healthConfig.ignoreOnProvision is serialized when false String expectedContent = getContent("composite.simple.health.yaml"); CompositeTemplate template = deserializeCompositeTemplate(expectedContent); ContainerDescription data = (ContainerDescription) template.components.get("hello").data; assertNotNull(data.healthConfig); assertEquals(false, data.healthConfig.ignoreOnProvision); // Assert that healthConfig.ignoreOnProvision is serialized when true data.healthConfig.ignoreOnProvision = true; String content = serializeCompositeTemplate(template); template = deserializeCompositeTemplate(content); data = (ContainerDescription) template.components.get("hello").data; assertNotNull(data.healthConfig); assertEquals(true, data.healthConfig.ignoreOnProvision); // Assert that healthConfig.ignoreOnProvision is not serialized when null data.healthConfig = null; content = serializeCompositeTemplate(template); assertFalse(content.contains("health_config")); }
String expectedContent = getContent("composite.bindings.yaml"); CompositeTemplate compositeTemplate = deserializeCompositeTemplate(expectedContent);
@Test public void testConvertCompositeTemplateToKubernetesTemplate() throws IOException { CompositeTemplate template = deserializeCompositeTemplate( getContent("composite.wordpress.kubernetes.yaml"));
private void verifyExport(String selfLink) throws Throwable { URI uri = UriUtils.buildUri(host, CompositeDescriptionContentService.SELF_LINK); uri = UriUtils.extendUriWithQuery(uri, CompositeDescriptionContentService.SELF_LINK_PARAM_NAME, selfLink); verifyOperation(Operation.createGet(uri), (o) -> { String resultYaml = o.getBody(String.class); // Skip this validation for now. if (isKubernetesYaml(resultYaml)) { return; } // Can't compare the strings as the order of the components may not be the same. try { CompositeTemplate original = CompositeTemplateUtil.deserializeCompositeTemplate(template); CompositeTemplate result = CompositeTemplateUtil.deserializeCompositeTemplate(resultYaml); assertEquals(original.components.size(), result.components.size()); assertEquals(original.id, result.id); assertEquals(original.description, result.description); assertEquals(original.name, result.name); assertEquals(original.status, result.status); assertEquals(original.properties, result.properties); if (isBindingYaml(resultYaml)) { assertBindings(original, result, template, resultYaml); } } catch (IOException e) { fail(e.getMessage()); } }); }
@Test public void testDeserializeSerializeSimpleCompositeTemplateWithNetwork() throws IOException { String expectedContent = getContent("composite.simple.network.yaml"); CompositeTemplate template = deserializeCompositeTemplate(expectedContent); assertNull(template.id); assertNull(template.status); assertComponentTypes(template.components); assertContainersComponents(ResourceType.CONTAINER_TYPE.getContentType(), 3, template.components); assertContainersComponents(ResourceType.NETWORK_TYPE.getContentType(), 2, template.components); assertContainersComponents(ResourceType.VOLUME_TYPE.getContentType(), 0, template.components); ContainerDescription appData = (ContainerDescription) template.components.get("app").data; assertNotNull(appData); assertTrue(appData.networks.containsKey("front")); assertTrue(appData.networks.containsKey("back")); }
@Test public void testConvertCompositeTemplateToDockerCompose() throws IOException { DockerCompose expectedCompose = deserializeDockerCompose( getContent("docker.wordpress.1.yaml")); String expectedComposeYaml = serializeDockerCompose(expectedCompose); CompositeTemplate template = deserializeCompositeTemplate( getContent("composite.wordpress.yaml")); DockerCompose compose = fromCompositeTemplateToDockerCompose(template); String composeYaml = serializeDockerCompose(compose); assertEqualsYamls(expectedComposeYaml, composeYaml); }
@Test public void testSerializeDeserializeEmptyTemplate() throws IOException { CompositeTemplate template = new CompositeTemplate(); template.name = "empty"; String templateSerialized = serializeCompositeTemplate(template); assertNotNull(templateSerialized); assertTrue(templateSerialized.contains("empty")); CompositeTemplate templateDeserialized = deserializeCompositeTemplate(templateSerialized); assertNotNull(templateDeserialized); assertEquals(template.name, templateDeserialized.name); assertTrue(isNullOrEmpty(template.components)); assertTrue(isNullOrEmpty(templateDeserialized.components)); }
@Test public void testWrongDeserializationExceptions() throws IOException { try { deserializeCompositeTemplate(getContent("composite.bad.yaml")); fail("wrong content!"); } catch (IllegalArgumentException e) { deserializeCompositeTemplate(""); fail("wrong content!"); } catch (LocalizableValidationException e) { deserializeCompositeTemplate(null); fail("wrong content!"); } catch (LocalizableValidationException e) { deserializeCompositeTemplate("abc"); fail("wrong content!"); } catch (LocalizableValidationException e) {
@Test public void testDeserializeSerializeSimpleCompositeTemplate() throws IOException { String expectedContent = getContent("composite.simple.yaml"); CompositeTemplate template = deserializeCompositeTemplate(expectedContent); assertNull(template.id); assertNull(template.status); assertComponentTypes(template.components); assertContainersComponents(ResourceType.CONTAINER_TYPE.getContentType(), 1, template.components); assertContainersComponents(ResourceType.NETWORK_TYPE.getContentType(), 0, template.components); assertContainersComponents(ResourceType.VOLUME_TYPE.getContentType(), 0, template.components); template.id = "new-id"; template.status = Status.RETIRED; ContainerDescription helloData = (ContainerDescription) template.components .get("hello").data; helloData.healthConfig = new HealthConfig(); helloData.logConfig = new LogConfig(); String content = serializeCompositeTemplate(template); assertNotNull(content); assertFalse(content.contains("new-id")); assertFalse(content.contains(Status.RETIRED.toString())); assertFalse(content.contains("health_config")); assertFalse(content.contains("log_config")); }
@Test public void testConvertCompositeTemplateToDockerComposeWithVolume() throws IOException { // To Docker Compose with simple volume entities DockerCompose expectedCompose = deserializeDockerCompose( getContent("docker.simple.volume.yaml")); String expectedComposeYaml = serializeDockerCompose(expectedCompose); CompositeTemplate template = deserializeCompositeTemplate( getContent("composite.simple.volume.yaml")); DockerCompose compose = fromCompositeTemplateToDockerCompose(template); String composeYaml = serializeDockerCompose(compose); assertEqualsYamls(expectedComposeYaml, composeYaml); // To Docker Compose with complex network entities expectedCompose = deserializeDockerCompose( getContent("docker.complex.volume.yaml")); expectedComposeYaml = serializeDockerCompose(expectedCompose); CompositeTemplate template2 = deserializeCompositeTemplate( getContent("composite.complex.volume.yaml")); DockerCompose compose2 = fromCompositeTemplateToDockerCompose(template2); String compose2Yaml = serializeDockerCompose(compose2); assertEqualsYamls(expectedComposeYaml, compose2Yaml); }
@Test public void testDeserializeSerializeComplexCompositeTemplateWithNetwork() throws IOException { String expectedContent = getContent("composite.complex.network.yaml"); CompositeTemplate template = deserializeCompositeTemplate(expectedContent); assertNull(template.id); assertNull(template.status); assertComponentTypes(template.components); assertContainersComponents(ResourceType.CONTAINER_TYPE.getContentType(), 3, template.components); assertContainersComponents(ResourceType.NETWORK_TYPE.getContentType(), 3, template.components); String content = serializeCompositeTemplate(template); expectedContent = expectedContent.replace("h5-name", "h5"); assertEqualsYamls(toUnixLineEnding(getContent("composite.complex.network.expected.yaml")), toUnixLineEnding(content), true); DockerCompose compose = fromCompositeTemplateToDockerCompose(template); String contentCompose = serializeDockerCompose(compose); assertTrue((contentCompose != null) && (!contentCompose.isEmpty())); }
@Test public void testDeserializeSerializeComplexCompositeTemplate() throws IOException { String expectedContent = getContent("composite.complex.yaml"); CompositeTemplate template = deserializeCompositeTemplate(expectedContent); assertNull(template.id); assertNull(template.status); assertComponentTypes(template.components); assertContainersComponents(ResourceType.CONTAINER_TYPE.getContentType(), 5, template.components); assertContainersComponents(ResourceType.NETWORK_TYPE.getContentType(), 0, template.components); assertContainersComponents(ResourceType.VOLUME_TYPE.getContentType(), 0, template.components); String content = serializeCompositeTemplate(template); expectedContent = expectedContent.replace("h5-name", "h5"); assertEqualsYamls(toUnixLineEnding(expectedContent), toUnixLineEnding(content), true); DockerCompose compose = fromCompositeTemplateToDockerCompose(template); String contentCompose = serializeDockerCompose(compose); assertTrue((contentCompose != null) && (!contentCompose.isEmpty())); }
switch (yamlType) { case COMPOSITE_TEMPLATE: template = deserializeCompositeTemplate(content); break; case DOCKER_COMPOSE:
@Test public void testConvertCompositeTemplateToDockerComposeWithNetwork() throws IOException { // To Docker Compose with simple network entities DockerCompose expectedCompose = deserializeDockerCompose( getContent("docker.simple.network.yaml")); String expectedComposeYaml = serializeDockerCompose(expectedCompose); CompositeTemplate template = deserializeCompositeTemplate( getContent("composite.simple.network.yaml")); DockerCompose compose = fromCompositeTemplateToDockerCompose(template); String composeYaml = serializeDockerCompose(compose); assertEqualsYamls(toUnixLineEnding(expectedComposeYaml), toUnixLineEnding(getContent("docker.simple.network.yaml"))); assertEqualsYamls(toUnixLineEnding(composeYaml), toUnixLineEnding(getContent("docker.simple.network.expected.yaml"))); // To Docker Compose with complex network entities expectedCompose = deserializeDockerCompose( getContent("docker.complex.network.yaml")); expectedComposeYaml = serializeDockerCompose(expectedCompose); CompositeTemplate template2 = deserializeCompositeTemplate( getContent("composite.complex.network.yaml")); DockerCompose compose2 = fromCompositeTemplateToDockerCompose(template2); String compose2Yaml = serializeDockerCompose(compose2); assertEqualsYamls(expectedComposeYaml, compose2Yaml); }
@Test public void testDeserializeSerializeComplexCompositeTemplateWithVolume() throws IOException { String expectedContent = getContent("composite.complex.volume.yaml"); CompositeTemplate template = deserializeCompositeTemplate(expectedContent); assertNull(template.id); assertNull(template.status); assertComponentTypes(template.components); assertContainersComponents(ResourceType.CONTAINER_TYPE.getContentType(), 3, template.components); assertContainersComponents(ResourceType.NETWORK_TYPE.getContentType(), 0, template.components); assertContainersComponents(ResourceType.VOLUME_TYPE.getContentType(), 3, template.components); String content = serializeCompositeTemplate(template); assertEqualsYamls(toUnixLineEnding(expectedContent), toUnixLineEnding(content), true); DockerCompose compose = fromCompositeTemplateToDockerCompose(template); String contentCompose = serializeDockerCompose(compose); assertTrue((contentCompose != null) && (!contentCompose.isEmpty())); }
CompositeTemplate expectedTemplate = deserializeCompositeTemplate( getContent("composite.simple.volume.yaml")); expectedTemplate = deserializeCompositeTemplate( getContent("composite.complex.volume.yaml"));
CompositeTemplate expectedTemplate = deserializeCompositeTemplate( getContent("composite.simple.network.yaml")); expectedTemplate = deserializeCompositeTemplate( getContent("composite.complex.network.yaml"));
@Test public void testConvertDockerComposeToCompositeTemplate() throws IOException { CompositeTemplate expectedTemplate = deserializeCompositeTemplate( getContent("composite.wordpress.yaml"));