diff --git a/src/test/java/itest/CryostatTemplateIT.java b/src/test/java/itest/CryostatTemplateIT.java new file mode 100644 index 0000000000..943eaffdf7 --- /dev/null +++ b/src/test/java/itest/CryostatTemplateIT.java @@ -0,0 +1,93 @@ +/* + * Copyright The Cryostat Authors + * + * The Universal Permissive License (UPL), Version 1.0 + * + * Subject to the condition set forth below, permission is hereby granted to any + * person obtaining a copy of this software, associated documentation and/or data + * (collectively the "Software"), free of charge and under any and all copyright + * rights in the Software, and any and all patent rights owned or freely + * licensable by each licensor hereunder covering either (i) the unmodified + * Software as contributed to or provided by such licensor, or (ii) the Larger + * Works (as defined below), to deal in both + * + * (a) the Software, and + * (b) any piece of software and/or hardware listed in the lrgrwrks.txt file if + * one is included with the Software (each a "Larger Work" to which the Software + * is contributed by such licensors), + * + * without restriction, including without limitation the rights to copy, create + * derivative works of, display, perform, and distribute the Software and make, + * use, sell, offer for sale, import, export, have made, and have sold the + * Software and the Larger Work(s), and to sublicense the foregoing rights on + * either these or other terms. + * + * This license is subject to the following condition: + * The above copyright notice and either this complete permission notice or at + * a minimum a reference to the UPL must be included in all copies or + * substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + */ +package itest; + +import java.io.File; +import java.util.concurrent.TimeUnit; + +import org.openjdk.jmc.flightrecorder.controlpanel.ui.configuration.model.xml.XMLAttributeInstance; +import org.openjdk.jmc.flightrecorder.controlpanel.ui.configuration.model.xml.XMLModel; +import org.openjdk.jmc.flightrecorder.controlpanel.ui.configuration.model.xml.XMLTagInstance; +import org.openjdk.jmc.flightrecorder.controlpanel.ui.model.EventConfiguration; + +import itest.bases.StandardSelfTest; +import org.hamcrest.MatcherAssert; +import org.hamcrest.Matchers; +import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.api.BeforeAll; +import org.junit.jupiter.api.Test; + +public class CryostatTemplateIT extends StandardSelfTest { + + static File file; + + @BeforeAll + static void setup() throws Exception { + String url = + String.format( + "/api/v1/targets/%s/templates/Cryostat/type/TARGET", + SELF_REFERENCE_TARGET_ID); + file = + downloadFile(url, "cryostat", "jfc") + .get(REQUEST_TIMEOUT_SECONDS, TimeUnit.SECONDS) + .toFile(); + } + + @Test + /** If this fails, check the baseImageJdkVersion in pom.xml. */ + public void shouldHaveCryostatTemplate() throws Exception { + XMLModel model = EventConfiguration.createModel(file); + model.checkErrors(); + + Assertions.assertFalse(model.hasErrors()); + + XMLTagInstance configuration = model.getRoot(); + XMLAttributeInstance labelAttr = null; + for (XMLAttributeInstance attr : configuration.getAttributeInstances()) { + if (attr.getAttribute().getName().equals("label")) { + labelAttr = attr; + break; + } + } + + MatcherAssert.assertThat(labelAttr, Matchers.notNullValue()); + + String templateName = labelAttr.getExplicitValue(); + MatcherAssert.assertThat(templateName, Matchers.equalTo("Cryostat")); + } +} diff --git a/src/test/java/itest/bases/StandardSelfTest.java b/src/test/java/itest/bases/StandardSelfTest.java index 8b2cab7848..7584ebf1df 100644 --- a/src/test/java/itest/bases/StandardSelfTest.java +++ b/src/test/java/itest/bases/StandardSelfTest.java @@ -58,12 +58,18 @@ import io.vertx.ext.web.client.HttpRequest; import io.vertx.ext.web.client.HttpResponse; import io.vertx.ext.web.client.WebClient; +import itest.util.Podman; import itest.util.Utils; +import org.apache.http.client.utils.URLEncodedUtils; import org.hamcrest.MatcherAssert; import org.hamcrest.Matchers; public abstract class StandardSelfTest { + public static final String SELF_REFERENCE_TARGET_ID = + URLEncodedUtils.formatSegments( + String.format("service:jmx:rmi:///jndi/rmi://%s:9091/jmxrmi", Podman.POD_NAME)); + public static final int REQUEST_TIMEOUT_SECONDS = 30; public static final WebClient webClient = Utils.getWebClient();