From c380ea01d755ecaa9072d93af1d56e25a0734e96 Mon Sep 17 00:00:00 2001 From: mocenas Date: Thu, 12 Sep 2024 15:12:23 +0200 Subject: [PATCH] Move RHBQPlatformAppManager to framework (#1303) * Move RHBQPlatformAppManager to framework --- .../io/quarkus/test/util/QuarkusCLIUtils.java | 11 ++++ .../test/util/RHBQPlatformAppManager.java | 60 +++++++++++++++++++ 2 files changed, 71 insertions(+) create mode 100644 quarkus-test-cli/src/main/java/io/quarkus/test/util/RHBQPlatformAppManager.java diff --git a/quarkus-test-cli/src/main/java/io/quarkus/test/util/QuarkusCLIUtils.java b/quarkus-test-cli/src/main/java/io/quarkus/test/util/QuarkusCLIUtils.java index 15369825b..78a77c87b 100644 --- a/quarkus-test-cli/src/main/java/io/quarkus/test/util/QuarkusCLIUtils.java +++ b/quarkus-test-cli/src/main/java/io/quarkus/test/util/QuarkusCLIUtils.java @@ -28,6 +28,7 @@ import org.codehaus.plexus.util.xml.XmlStreamReader; import org.codehaus.plexus.util.xml.pull.XmlPullParserException; +import io.quarkus.test.bootstrap.QuarkusCliClient; import io.quarkus.test.bootstrap.QuarkusCliRestService; import io.quarkus.test.services.quarkus.model.QuarkusProperties; import io.smallrye.common.os.OS; @@ -46,6 +47,16 @@ public abstract class QuarkusCLIUtils { */ private static final int GAV_FIELDS_LENGTH = 3; + public static IQuarkusCLIAppManager createAppManager(QuarkusCliClient cliClient, + DefaultArtifactVersion oldVersionStream, + DefaultArtifactVersion newVersionStream) { + if (QuarkusProperties.isRHBQ()) { + return new RHBQPlatformAppManager(cliClient, oldVersionStream, newVersionStream, + new DefaultArtifactVersion(QuarkusProperties.getVersion())); + } + return new DefaultQuarkusCLIAppManager(cliClient, oldVersionStream, newVersionStream); + } + /** * Create app, put properties into application.properties file, * then update the app and verify that properties are the expected ones. diff --git a/quarkus-test-cli/src/main/java/io/quarkus/test/util/RHBQPlatformAppManager.java b/quarkus-test-cli/src/main/java/io/quarkus/test/util/RHBQPlatformAppManager.java new file mode 100644 index 000000000..1bce4b78d --- /dev/null +++ b/quarkus-test-cli/src/main/java/io/quarkus/test/util/RHBQPlatformAppManager.java @@ -0,0 +1,60 @@ +package io.quarkus.test.util; + +import static io.quarkus.test.bootstrap.QuarkusCliClient.UpdateApplicationRequest.defaultUpdate; +import static io.quarkus.test.util.QuarkusCLIUtils.getQuarkusAppVersion; +import static org.junit.jupiter.api.Assertions.assertTrue; + +import java.io.IOException; + +import org.apache.maven.artifact.versioning.DefaultArtifactVersion; +import org.codehaus.plexus.util.xml.pull.XmlPullParserException; + +import io.quarkus.test.bootstrap.QuarkusCliClient; +import io.quarkus.test.bootstrap.QuarkusCliRestService; +import io.quarkus.test.logging.Log; + +/** + * AppManager designed to update app to specific quarkus-bom version, instead of to stream as DefaultQuarkusCLIAppManager. + */ +public class RHBQPlatformAppManager extends DefaultQuarkusCLIAppManager { + protected final DefaultArtifactVersion newPlatformVersion; + + public RHBQPlatformAppManager(QuarkusCliClient cliClient, DefaultArtifactVersion oldStreamVersion, + DefaultArtifactVersion newStreamVersion, DefaultArtifactVersion newPlatformVersion) { + super(cliClient, oldStreamVersion, newStreamVersion); + this.newPlatformVersion = newPlatformVersion; + } + + @Override + public void updateApp(QuarkusCliRestService app) { + Log.info("Updating app to version: " + newPlatformVersion); + app.update(defaultUpdate() + .withPlatformVersion(newPlatformVersion.toString())); + } + + @Override + public QuarkusCliRestService createApplication() { + return assertIsUsingRHBQ(super.createApplication()); + } + + @Override + public QuarkusCliRestService createApplicationWithExtensions(String... extensions) { + return assertIsUsingRHBQ(super.createApplicationWithExtensions(extensions)); + } + + @Override + public QuarkusCliRestService createApplicationWithExtraArgs(String... extraArgs) { + return assertIsUsingRHBQ(super.createApplicationWithExtraArgs(extraArgs)); + } + + private QuarkusCliRestService assertIsUsingRHBQ(QuarkusCliRestService app) { + try { + // check that created application uses version with "redhat" suffix. + assertTrue(getQuarkusAppVersion(app).toString().contains("redhat"), + "Created Quarkus application does not use \"redhat\" version, while should be RHBQ"); + } catch (IOException | XmlPullParserException e) { + throw new RuntimeException(e); + } + return app; + } +}