private void verifyCompositeDescription(String location) throws Throwable { String selfLink = location.substring(location.lastIndexOf(UriUtils.URI_PATH_CHAR) + 1); assertNotNull("documentSelfLink", selfLink); URI uri = UriUtils.buildUri(host, location); URI expandUri = UriUtils.extendUriWithQuery(uri, UriUtils.URI_PARAM_ODATA_EXPAND, Boolean.TRUE.toString()); Operation getCompositeDescOp = Operation.createGet(expandUri); List<String> descriptionLinks = new ArrayList<>(); Consumer<Operation> verifier = (o) -> verifyTemplate.accept(o, descriptionLinks); verifyOperation(getCompositeDescOp, verifier); verifyDescriptions(descriptionLinks); verifyExport(selfLink); }
private void verifyDescriptions(List<String> containerDescriptionLinks) throws Throwable { for (String link : containerDescriptionLinks) { verifyOperation(Operation.createGet(UriUtils.buildUri(host, link)), (o) -> { ResourceState cd = o.getBody(ResourceState.class); assertTrue("unexpected component name: " + cd.name, Arrays.asList("wordpress", "mysql", "public-wpnet", "wpnet", "wordpress-mysql-svc", "wordpress-mysql-dpl", "wordpress-svc", "wordpress-dpl", "wordpress-lb", "wordpress-container-lb", "wordpress-secret", "wordpress-mysql-replcontr", "wordpress-mysql-pod").contains(cd.name)); }); } }
@Test public void testCompositeDescriptionContentServices() throws Throwable { Operation createOp = Operation .createPost(UriUtils.buildUri(host, CompositeDescriptionContentService.SELF_LINK)) .setContentType(MEDIA_TYPE_APPLICATION_YAML) .forceRemote() .setBody(template); AtomicReference<String> location = new AtomicReference<>(); verifyOperation(createOp, (o) -> { assertEquals("status code", Operation.STATUS_CODE_OK, o.getStatusCode()); location.set(o.getResponseHeader(Operation.LOCATION_HEADER)); assertNotNull("location header", location); }); verifyCompositeDescription(location.get()); }
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 testCompositeDescriptionContentServicesWithCharset() throws Throwable { Operation createOp = Operation .createPost(UriUtils.buildUri(host, CompositeDescriptionContentService.SELF_LINK)) .setContentType(MEDIA_TYPE_APPLICATION_YAML_WITH_CHARSET) .forceRemote() .setBody(template); AtomicReference<String> location = new AtomicReference<>(); verifyOperation(createOp, (o) -> { assertEquals("status code", Operation.STATUS_CODE_OK, o.getStatusCode()); location.set(o.getResponseHeader(Operation.LOCATION_HEADER)); assertNotNull("location header", location); }); verifyCompositeDescription(location.get()); }