This is an automated email from the ASF dual-hosted git repository.

pefernan pushed a commit to branch main
in repository 
https://gitbox.apache.org/repos/asf/incubator-kie-kogito-runtimes.git


The following commit(s) were added to refs/heads/main by this push:
     new 9ba89b3d9a [NO-ISSUE] Fixing flaky tests (disabling keycloak dev 
services and LiveReloadProcessorTest) (#4211)
9ba89b3d9a is described below

commit 9ba89b3d9a800c05a2e246a1c1587f8a83a323b7
Author: Pere Fernández <[email protected]>
AuthorDate: Mon Mar 16 10:06:36 2026 +0100

    [NO-ISSUE] Fixing flaky tests (disabling keycloak dev services and 
LiveReloadProcessorTest) (#4211)
    
    * [NO-ISSUE] Fixing flaky tests:
    - Disabling unnecessary Keycloak Dev Services from tests
    - Increased timeout for LiveReloadProcessorTest
    
    * - missing disabled
    
    * - Separated life reload tests
    
    * - missing header
---
 .rat-excludes                                      |   3 +
 .../src/test/resources/application.properties      |   1 +
 .../src/test/resources/application.properties      |   3 +-
 .../AsyncApiLiveReloadProcessorTest.java           |  88 +++++++++
 .../livereload/GrpcLiveReloadProcessorTest.java    | 109 +++++++++++
 .../livereload/LiveReloadProcessorTest.java        | 212 ---------------------
 .../livereload/LiveReloadProcessorTestUtils.java   |  79 ++++++++
 .../livereload/OpenApiLiveReloadProcessorTest.java |  91 +++++++++
 .../src/test/resources/application.properties      |   1 +
 .../src/test/resources/application.properties      |   1 +
 10 files changed, 375 insertions(+), 213 deletions(-)

diff --git a/.rat-excludes b/.rat-excludes
index 1eb2f2580a..c36ce91789 100644
--- a/.rat-excludes
+++ b/.rat-excludes
@@ -55,6 +55,7 @@ 
quarkus/addons/jobs/knative-eventing/runtime/src/main/resources/META-INF/kogito.
 quarkus/addons/jobs/management/runtime/src/main/resources/META-INF/kogito.addon
 quarkus/addons/jobs/messaging/runtime/src/main/resources/META-INF/kogito.addon
 
quarkus/addons/jwt-parser/integration-tests/src/main/resources/application.properties
+quarkus/addons/jwt-parser/integration-tests/src/test/resources/application.properties
 
quarkus/addons/knative/eventing/deployment/src/test/resources/application.properties
 
quarkus/addons/knative/eventing/runtime/src/main/resources/META-INF/kogito.addon
 
quarkus/addons/knative/eventing/runtime/src/test/resources/application.properties
@@ -91,7 +92,9 @@ 
quarkus/extensions/kogito-quarkus-rules-extension/kogito-quarkus-rules-integrati
 
quarkus/extensions/kogito-quarkus-serverless-workflow-extension/kogito-quarkus-serverless-workflow-integration-test/src/main/resources/helloworldevent.sw.yaml
 
quarkus/extensions/kogito-quarkus-serverless-workflow-extension/kogito-quarkus-serverless-workflow-integration-test/src/main/resources/long-call.sw.yaml
 
quarkus/extensions/kogito-quarkus-serverless-workflow-extension/kogito-quarkus-serverless-workflow-integration-test/src/test/resources/__snapshots__/ServerlessWorkflowCodestartTest/testContent/src_test_resources_application.yml
+quarkus/extensions/kogito-quarkus-serverless-workflow-extension/kogito-quarkus-serverless-workflow-integration-test/src/test/resources/application.properties
 
quarkus/extensions/kogito-quarkus-serverless-workflow-jdbc-token-persistence-extension/kogito-quarkus-serverless-workflow-jdbc-token-persistence/src/main/resources/META-INF/beans.xml
+quarkus/extensions/kogito-quarkus-serverless-workflow-jdbc-token-persistence-extension/kogito-quarkus-serverless-workflow-jdbc-token-persistence-integration-test/src/test/resources/application.properties
 
quarkus/integration-tests/integration-tests-quarkus-norest/src/main/resources/PMMLRegression.pmml
 
quarkus/integration-tests/integration-tests-quarkus-predictions/src/main/resources/PMMLRegression.pmml
 
quarkus/integration-tests/integration-tests-quarkus-predictions/src/main/resources/PMMLTree.pmml
diff --git 
a/quarkus/addons/jwt-parser/integration-tests/src/test/resources/application.properties
 
b/quarkus/addons/jwt-parser/integration-tests/src/test/resources/application.properties
new file mode 100644
index 0000000000..9de819ddd7
--- /dev/null
+++ 
b/quarkus/addons/jwt-parser/integration-tests/src/test/resources/application.properties
@@ -0,0 +1 @@
+quarkus.keycloak.devservices.enabled=false
\ No newline at end of file
diff --git 
a/quarkus/addons/kubernetes/integration-tests/src/test/resources/application.properties
 
b/quarkus/addons/kubernetes/integration-tests/src/test/resources/application.properties
index b1970efd7d..9f75039555 100644
--- 
a/quarkus/addons/kubernetes/integration-tests/src/test/resources/application.properties
+++ 
b/quarkus/addons/kubernetes/integration-tests/src/test/resources/application.properties
@@ -1 +1,2 @@
-quarkus.kubernetes-client.devservices.enabled=false
\ No newline at end of file
+quarkus.kubernetes-client.devservices.enabled=false
+quarkus.keycloak.devservices.enabled=false
\ No newline at end of file
diff --git 
a/quarkus/extensions/kogito-quarkus-serverless-workflow-extension/kogito-quarkus-serverless-workflow-extension-live-reload-test/src/test/java/org/kie/kogito/quarkus/serverless/workflow/deployment/livereload/AsyncApiLiveReloadProcessorTest.java
 
b/quarkus/extensions/kogito-quarkus-serverless-workflow-extension/kogito-quarkus-serverless-workflow-extension-live-reload-test/src/test/java/org/kie/kogito/quarkus/serverless/workflow/deployment/livereload/AsyncApiLiveReloadProcessorTest.java
new file mode 100644
index 0000000000..46aee958d5
--- /dev/null
+++ 
b/quarkus/extensions/kogito-quarkus-serverless-workflow-extension/kogito-quarkus-serverless-workflow-extension-live-reload-test/src/test/java/org/kie/kogito/quarkus/serverless/workflow/deployment/livereload/AsyncApiLiveReloadProcessorTest.java
@@ -0,0 +1,88 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.kie.kogito.quarkus.serverless.workflow.deployment.livereload;
+
+import java.io.FileInputStream;
+import java.io.IOException;
+import java.time.Duration;
+import java.util.Collections;
+import java.util.Objects;
+
+import org.junit.jupiter.api.*;
+import org.junit.jupiter.api.extension.RegisterExtension;
+import org.kie.kogito.test.utils.SocketUtils;
+
+import com.github.tomakehurst.wiremock.WireMockServer;
+
+import io.quarkus.test.QuarkusDevModeTest;
+import io.restassured.http.ContentType;
+
+import static com.github.tomakehurst.wiremock.client.WireMock.*;
+import static io.restassured.RestAssured.given;
+import static org.assertj.core.api.Assertions.assertThat;
+import static org.awaitility.Awaitility.await;
+import static 
org.kie.kogito.quarkus.serverless.workflow.deployment.livereload.LiveReloadProcessorTestUtils.configureWiremockServer;
+import static 
org.kie.kogito.quarkus.serverless.workflow.deployment.livereload.LiveReloadProcessorTestUtils.createTest;
+
+public class AsyncApiLiveReloadProcessorTest {
+
+    private static final int PORT = SocketUtils.findAvailablePort();
+
+    private static final WireMockServer wireMockServer = 
configureWiremockServer();
+
+    @RegisterExtension
+    public static QuarkusDevModeTest test = createTest(wireMockServer, PORT);
+
+    @AfterAll
+    static void tearDown() {
+        if (wireMockServer.isRunning()) {
+            wireMockServer.stop();
+        }
+    }
+
+    @Test
+    void testAsyncApi() throws IOException {
+        given()
+                .contentType(ContentType.JSON)
+                .when()
+                .body(Collections.singletonMap("workflowdata", 
Collections.emptyMap()))
+                .post("/asyncEventPublisher")
+                .then()
+                .statusCode(404);
+
+        try (FileInputStream inputStream = new 
FileInputStream("src/test/resources/asyncPublisher.sw.json")) {
+            test.addResourceFile("asyncPublisher.sw.json", new 
String(Objects.requireNonNull(inputStream).readAllBytes()));
+        }
+
+        // Wait for Quarkus to complete the hot reload (max 60 seconds)
+        await().atMost(Duration.ofSeconds(60))
+                .untilAsserted(() -> {
+                    String id = given()
+                            .contentType(ContentType.JSON)
+                            .when()
+                            .body(Collections.singletonMap("workflowdata", 
Collections.emptyMap()))
+                            .post("/asyncEventPublisher")
+                            .then()
+                            .statusCode(201)
+                            .extract().path("id");
+
+                    assertThat(id).isNotBlank();
+                });
+    }
+}
diff --git 
a/quarkus/extensions/kogito-quarkus-serverless-workflow-extension/kogito-quarkus-serverless-workflow-extension-live-reload-test/src/test/java/org/kie/kogito/quarkus/serverless/workflow/deployment/livereload/GrpcLiveReloadProcessorTest.java
 
b/quarkus/extensions/kogito-quarkus-serverless-workflow-extension/kogito-quarkus-serverless-workflow-extension-live-reload-test/src/test/java/org/kie/kogito/quarkus/serverless/workflow/deployment/livereload/GrpcLiveReloadProcessorTest.java
new file mode 100644
index 0000000000..3d433bd17f
--- /dev/null
+++ 
b/quarkus/extensions/kogito-quarkus-serverless-workflow-extension/kogito-quarkus-serverless-workflow-extension-live-reload-test/src/test/java/org/kie/kogito/quarkus/serverless/workflow/deployment/livereload/GrpcLiveReloadProcessorTest.java
@@ -0,0 +1,109 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.kie.kogito.quarkus.serverless.workflow.deployment.livereload;
+
+import java.io.FileInputStream;
+import java.io.IOException;
+import java.util.Objects;
+
+import org.junit.jupiter.api.*;
+import org.junit.jupiter.api.extension.RegisterExtension;
+import org.kie.kogito.test.utils.SocketUtils;
+
+import com.github.tomakehurst.wiremock.WireMockServer;
+
+import io.grpc.Server;
+import io.quarkus.test.QuarkusDevModeTest;
+import io.restassured.RestAssured;
+import io.restassured.http.ContentType;
+
+import static io.restassured.RestAssured.given;
+import static org.hamcrest.CoreMatchers.containsString;
+import static org.hamcrest.CoreMatchers.equalTo;
+import static 
org.kie.kogito.quarkus.serverless.workflow.deployment.livereload.LiveReloadProcessorTestUtils.configureWiremockServer;
+import static 
org.kie.kogito.quarkus.serverless.workflow.deployment.livereload.LiveReloadProcessorTestUtils.createTest;
+
+public class GrpcLiveReloadProcessorTest {
+
+    private static final int PORT = SocketUtils.findAvailablePort();
+
+    private static final WireMockServer wireMockServer = 
configureWiremockServer();
+
+    @RegisterExtension
+    public static QuarkusDevModeTest test = createTest(wireMockServer, PORT);
+
+    private Server server;
+
+    static {
+        RestAssured.enableLoggingOfRequestAndResponseIfValidationFails();
+    }
+
+    @BeforeEach
+    public void setup() throws IOException {
+        server = GreeterService.buildServer(PORT);
+        server.start();
+    }
+
+    @AfterEach
+    public void dispose() throws InterruptedException {
+        if (!server.isShutdown() && !server.isTerminated()) {
+            server.shutdownNow();
+            server.awaitTermination();
+        }
+    }
+
+    @AfterAll
+    static void tearDown() {
+        if (wireMockServer.isRunning()) {
+            wireMockServer.stop();
+        }
+    }
+
+    @Test
+    void testGrpc() throws IOException {
+        given()
+                .contentType(ContentType.JSON)
+                .accept(ContentType.JSON)
+                .body("{\"name\" : \"John\", \"language\":\"English\"}").when()
+                .post("/jsongreet")
+                .then()
+                .statusCode(404);
+
+        try (FileInputStream inputStream = new 
FileInputStream("src/test/resources/rpcgreet.sw.json")) {
+            test.addResourceFile("rpcgreet.sw.json", new 
String(Objects.requireNonNull(inputStream).readAllBytes()));
+        }
+
+        given()
+                .contentType(ContentType.JSON)
+                .accept(ContentType.JSON)
+                .get("/q/health")
+                .then()
+                .statusCode(200)
+                .body("status", equalTo("UP"));
+
+        given()
+                .contentType(ContentType.JSON)
+                .accept(ContentType.JSON)
+                .body("{\"name\" : \"John\", \"language\":\"English\"}").when()
+                .post("/jsongreet")
+                .then()
+                .statusCode(201)
+                .body("workflowdata.message", containsString("Hello"));
+    }
+}
diff --git 
a/quarkus/extensions/kogito-quarkus-serverless-workflow-extension/kogito-quarkus-serverless-workflow-extension-live-reload-test/src/test/java/org/kie/kogito/quarkus/serverless/workflow/deployment/livereload/LiveReloadProcessorTest.java
 
b/quarkus/extensions/kogito-quarkus-serverless-workflow-extension/kogito-quarkus-serverless-workflow-extension-live-reload-test/src/test/java/org/kie/kogito/quarkus/serverless/workflow/deployment/livereload/LiveReloadProcessorTest.java
deleted file mode 100644
index edc2ccf406..0000000000
--- 
a/quarkus/extensions/kogito-quarkus-serverless-workflow-extension/kogito-quarkus-serverless-workflow-extension-live-reload-test/src/test/java/org/kie/kogito/quarkus/serverless/workflow/deployment/livereload/LiveReloadProcessorTest.java
+++ /dev/null
@@ -1,212 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.kie.kogito.quarkus.serverless.workflow.deployment.livereload;
-
-import java.io.FileInputStream;
-import java.io.IOException;
-import java.io.UncheckedIOException;
-import java.nio.file.Files;
-import java.nio.file.Path;
-import java.time.Duration;
-import java.util.Collections;
-import java.util.Map;
-import java.util.Objects;
-import java.util.stream.Collectors;
-import java.util.stream.Stream;
-
-import org.jboss.shrinkwrap.api.asset.StringAsset;
-import org.junit.jupiter.api.AfterAll;
-import org.junit.jupiter.api.MethodOrderer.OrderAnnotation;
-import org.junit.jupiter.api.Order;
-import org.junit.jupiter.api.Test;
-import org.junit.jupiter.api.TestInstance;
-import org.junit.jupiter.api.TestMethodOrder;
-import org.junit.jupiter.api.extension.RegisterExtension;
-import org.junit.jupiter.api.parallel.Execution;
-import org.kie.kogito.test.utils.SocketUtils;
-
-import com.github.tomakehurst.wiremock.WireMockServer;
-import com.github.tomakehurst.wiremock.core.WireMockConfiguration;
-import 
com.github.tomakehurst.wiremock.extension.responsetemplating.ResponseTemplateTransformer;
-
-import io.grpc.Server;
-import io.quarkus.test.QuarkusDevModeTest;
-import io.restassured.RestAssured;
-import io.restassured.http.ContentType;
-
-import static com.github.tomakehurst.wiremock.client.WireMock.aResponse;
-import static com.github.tomakehurst.wiremock.client.WireMock.post;
-import static com.github.tomakehurst.wiremock.client.WireMock.urlEqualTo;
-import static io.restassured.RestAssured.given;
-import static org.assertj.core.api.Assertions.assertThat;
-import static org.awaitility.Awaitility.await;
-import static org.hamcrest.CoreMatchers.containsString;
-import static org.hamcrest.CoreMatchers.is;
-import static org.junit.jupiter.api.parallel.ExecutionMode.SAME_THREAD;
-
-@TestInstance(TestInstance.Lifecycle.PER_CLASS)
-@Execution(SAME_THREAD)
-@TestMethodOrder(OrderAnnotation.class)
-//@Disabled("Disabled temporarily - live reload tests are unstable in dev 
mode")
-public class LiveReloadProcessorTest {
-
-    private static final int PORT = SocketUtils.findAvailablePort();
-
-    @RegisterExtension
-    public final static QuarkusDevModeTest test = createTest();
-
-    private static WireMockServer wireMockServer;
-
-    private static QuarkusDevModeTest createTest() {
-        configureWiremockServer();
-
-        return new QuarkusDevModeTest()
-                .withApplicationRoot(jar -> {
-                    try {
-                        jar.addAsResource(new 
StringAsset(applicationProperties(wireMockServer.baseUrl())), 
"/application.properties");
-                        jar.add(new StringAsset(new 
String(Files.readAllBytes(Path.of("src/main/proto/greeting.proto")))), 
"src/main/proto/greeting.proto");
-                    } catch (IOException e) {
-                        throw new UncheckedIOException(e);
-                    }
-                });
-    }
-
-    private static void configureWiremockServer() {
-        wireMockServer = new 
WireMockServer(WireMockConfiguration.wireMockConfig().extensions(new 
ResponseTemplateTransformer(null, false, null, 
java.util.Collections.emptyList())).dynamicPort());
-        wireMockServer.start();
-
-        wireMockServer.stubFor(post(urlEqualTo("/echo"))
-                .willReturn(aResponse()
-                        .withStatus(200)
-                        .withHeader("Content-Type", "application/json")
-                        .withBody("{ \"echoedMsgType\": \"{{jsonPath 
request.body '$.msgType'}}\"}")
-                        .withTransformers("response-template")));
-    }
-
-    private static String applicationProperties(String wireMockBaseUrl) {
-        return Stream.of(
-                "quarkus.rest-client.\"enum_parameter_yaml\".url=" + 
wireMockBaseUrl,
-                "quarkus.grpc.clients.Greeter.host=localhost",
-                "quarkus.grpc.clients.Greeter.port=" + PORT,
-                "quarkus.grpc.server.port=" + PORT,
-                "quarkus.grpc.server.test-port=" + PORT,
-                "quarkus.devservices.enabled=false",
-                "quarkus.smallrye-openapi.management.enabled=true",
-                "quarkus.smallrye-health.management.enabled=true")
-                .collect(Collectors.joining(System.lineSeparator()));
-    }
-
-    @AfterAll
-    static void tearDown() {
-        if (wireMockServer != null) {
-            wireMockServer.stop();
-        }
-    }
-
-    @Test
-    @Order(2)
-    void testOpenApi() throws IOException {
-        given()
-                .contentType(ContentType.JSON)
-                .accept(ContentType.JSON)
-                .when()
-                .body(Map.of())
-                .post("/openapienumparameter")
-                .then()
-                .statusCode(404);
-
-        try (FileInputStream inputStream = new 
FileInputStream("src/test/resources/openAPIEnumParameter.sw.json")) {
-            test.addResourceFile("openAPIEnumParameter.sw.json", new 
String(Objects.requireNonNull(inputStream).readAllBytes()));
-        }
-
-        given()
-                .contentType(ContentType.JSON)
-                .accept(ContentType.JSON)
-                .when()
-                .body(Map.of())
-                .post("/openapienumparameter")
-                .then()
-                .statusCode(201)
-                .body("workflowdata.echoedMsgType", is("text"));
-    }
-
-    @Test
-    @Order(3)
-    void testGrpc() throws InterruptedException, IOException {
-        Server server = GreeterService.buildServer(PORT);
-        server.start();
-        RestAssured.enableLoggingOfRequestAndResponseIfValidationFails();
-
-        try {
-            given()
-                    .contentType(ContentType.JSON)
-                    .accept(ContentType.JSON)
-                    .body("{\"name\" : \"John\", 
\"language\":\"English\"}").when()
-                    .post("/jsongreet")
-                    .then()
-                    .statusCode(404);
-
-            try (FileInputStream inputStream = new 
FileInputStream("src/test/resources/rpcgreet.sw.json")) {
-                test.addResourceFile("rpcgreet.sw.json", new 
String(Objects.requireNonNull(inputStream).readAllBytes()));
-            }
-
-            given()
-                    .contentType(ContentType.JSON)
-                    .accept(ContentType.JSON)
-                    .body("{\"name\" : \"John\", 
\"language\":\"English\"}").when()
-                    .post("/jsongreet")
-                    .then()
-                    .statusCode(201)
-                    .body("workflowdata.message", containsString("Hello"));
-        } finally {
-            server.shutdownNow();
-            server.awaitTermination();
-        }
-    }
-
-    @Test
-    @Order(1)
-    void testAsyncApi() throws IOException {
-        given()
-                .contentType(ContentType.JSON)
-                .when()
-                .body(Collections.singletonMap("workflowdata", 
Collections.emptyMap()))
-                .post("/asyncEventPublisher")
-                .then()
-                .statusCode(404);
-
-        try (FileInputStream inputStream = new 
FileInputStream("src/test/resources/asyncPublisher.sw.json")) {
-            test.addResourceFile("asyncPublisher.sw.json", new 
String(Objects.requireNonNull(inputStream).readAllBytes()));
-        }
-
-        // Wait for Quarkus to complete the hot reload (max 10 seconds)
-        await().atMost(Duration.ofSeconds(10)).untilAsserted(() -> {
-            String id = given()
-                    .contentType(ContentType.JSON)
-                    .when()
-                    .body(Collections.singletonMap("workflowdata", 
Collections.emptyMap()))
-                    .post("/asyncEventPublisher")
-                    .then()
-                    .statusCode(201)
-                    .extract().path("id");
-
-            assertThat(id).isNotBlank();
-        });
-    }
-}
diff --git 
a/quarkus/extensions/kogito-quarkus-serverless-workflow-extension/kogito-quarkus-serverless-workflow-extension-live-reload-test/src/test/java/org/kie/kogito/quarkus/serverless/workflow/deployment/livereload/LiveReloadProcessorTestUtils.java
 
b/quarkus/extensions/kogito-quarkus-serverless-workflow-extension/kogito-quarkus-serverless-workflow-extension-live-reload-test/src/test/java/org/kie/kogito/quarkus/serverless/workflow/deployment/livereload/LiveReloadProcessorTestUtils.java
new file mode 100644
index 0000000000..bfde0445c6
--- /dev/null
+++ 
b/quarkus/extensions/kogito-quarkus-serverless-workflow-extension/kogito-quarkus-serverless-workflow-extension-live-reload-test/src/test/java/org/kie/kogito/quarkus/serverless/workflow/deployment/livereload/LiveReloadProcessorTestUtils.java
@@ -0,0 +1,79 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.kie.kogito.quarkus.serverless.workflow.deployment.livereload;
+
+import java.io.IOException;
+import java.io.UncheckedIOException;
+import java.nio.file.Files;
+import java.nio.file.Path;
+import java.util.stream.Collectors;
+import java.util.stream.Stream;
+
+import org.jboss.shrinkwrap.api.asset.StringAsset;
+
+import com.github.tomakehurst.wiremock.WireMockServer;
+import com.github.tomakehurst.wiremock.core.WireMockConfiguration;
+import 
com.github.tomakehurst.wiremock.extension.responsetemplating.ResponseTemplateTransformer;
+
+import io.quarkus.test.QuarkusDevModeTest;
+
+import static com.github.tomakehurst.wiremock.client.WireMock.*;
+
+public class LiveReloadProcessorTestUtils {
+
+    static QuarkusDevModeTest createTest(WireMockServer wireMockServer, int 
port) {
+        return new QuarkusDevModeTest()
+                .withApplicationRoot(jar -> {
+                    try {
+                        jar.addAsResource(new 
StringAsset(applicationProperties(wireMockServer.baseUrl(), port)), 
"/application.properties");
+                        jar.add(new StringAsset(new 
String(Files.readAllBytes(Path.of("src/main/proto/greeting.proto")))), 
"src/main/proto/greeting.proto");
+                    } catch (IOException e) {
+                        throw new UncheckedIOException(e);
+                    }
+                });
+    }
+
+    static WireMockServer configureWiremockServer() {
+        WireMockServer wireMockServer = new WireMockServer(
+                WireMockConfiguration.wireMockConfig().extensions(new 
ResponseTemplateTransformer(null, false, null, 
java.util.Collections.emptyList())).dynamicPort());
+        wireMockServer.start();
+
+        wireMockServer.stubFor(post(urlEqualTo("/echo"))
+                .willReturn(aResponse()
+                        .withStatus(200)
+                        .withHeader("Content-Type", "application/json")
+                        .withBody("{ \"echoedMsgType\": \"{{jsonPath 
request.body '$.msgType'}}\"}")
+                        .withTransformers("response-template")));
+
+        return wireMockServer;
+    }
+
+    private static String applicationProperties(String wireMockBaseUrl, int 
port) {
+        return Stream.of(
+                "quarkus.rest-client.\"enum_parameter_yaml\".url=" + 
wireMockBaseUrl,
+                "quarkus.grpc.clients.Greeter.host=localhost",
+                "quarkus.grpc.clients.Greeter.port=" + port,
+                "quarkus.grpc.server.port=" + port,
+                "quarkus.grpc.server.test-port=" + port,
+                "quarkus.devservices.enabled=false",
+                "quarkus.smallrye-openapi.management.enabled=true",
+                "quarkus.smallrye-health.management.enabled=true")
+                .collect(Collectors.joining(System.lineSeparator()));
+    }
+}
diff --git 
a/quarkus/extensions/kogito-quarkus-serverless-workflow-extension/kogito-quarkus-serverless-workflow-extension-live-reload-test/src/test/java/org/kie/kogito/quarkus/serverless/workflow/deployment/livereload/OpenApiLiveReloadProcessorTest.java
 
b/quarkus/extensions/kogito-quarkus-serverless-workflow-extension/kogito-quarkus-serverless-workflow-extension-live-reload-test/src/test/java/org/kie/kogito/quarkus/serverless/workflow/deployment/livereload/OpenApiLiveReloadProcessorTest.java
new file mode 100644
index 0000000000..de828db6b9
--- /dev/null
+++ 
b/quarkus/extensions/kogito-quarkus-serverless-workflow-extension/kogito-quarkus-serverless-workflow-extension-live-reload-test/src/test/java/org/kie/kogito/quarkus/serverless/workflow/deployment/livereload/OpenApiLiveReloadProcessorTest.java
@@ -0,0 +1,91 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.kie.kogito.quarkus.serverless.workflow.deployment.livereload;
+
+import java.io.FileInputStream;
+import java.io.IOException;
+import java.util.Map;
+import java.util.Objects;
+
+import org.junit.jupiter.api.*;
+import org.junit.jupiter.api.extension.RegisterExtension;
+import org.kie.kogito.test.utils.SocketUtils;
+
+import com.github.tomakehurst.wiremock.WireMockServer;
+
+import io.quarkus.test.QuarkusDevModeTest;
+import io.restassured.http.ContentType;
+
+import static com.github.tomakehurst.wiremock.client.WireMock.*;
+import static io.restassured.RestAssured.given;
+import static org.hamcrest.CoreMatchers.equalTo;
+import static org.hamcrest.CoreMatchers.is;
+import static 
org.kie.kogito.quarkus.serverless.workflow.deployment.livereload.LiveReloadProcessorTestUtils.configureWiremockServer;
+import static 
org.kie.kogito.quarkus.serverless.workflow.deployment.livereload.LiveReloadProcessorTestUtils.createTest;
+
+public class OpenApiLiveReloadProcessorTest {
+
+    private static final int PORT = SocketUtils.findAvailablePort();
+
+    private static final WireMockServer wireMockServer = 
configureWiremockServer();
+
+    @RegisterExtension
+    public static QuarkusDevModeTest test = createTest(wireMockServer, PORT);
+
+    @AfterAll
+    static void tearDown() {
+        if (wireMockServer.isRunning()) {
+            wireMockServer.stop();
+        }
+    }
+
+    @Test
+    void testOpenApi() throws IOException {
+        given()
+                .contentType(ContentType.JSON)
+                .accept(ContentType.JSON)
+                .when()
+                .body(Map.of())
+                .post("/openapienumparameter")
+                .then()
+                .statusCode(404);
+
+        try (FileInputStream inputStream = new 
FileInputStream("src/test/resources/openAPIEnumParameter.sw.json")) {
+            test.addResourceFile("openAPIEnumParameter.sw.json", new 
String(Objects.requireNonNull(inputStream).readAllBytes()));
+        }
+
+        given()
+                .contentType(ContentType.JSON)
+                .accept(ContentType.JSON)
+                .get("/q/health")
+                .then()
+                .statusCode(200)
+                .body("status", equalTo("UP"));
+
+        given()
+                .contentType(ContentType.JSON)
+                .accept(ContentType.JSON)
+                .when()
+                .body(Map.of())
+                .post("/openapienumparameter")
+                .then()
+                .statusCode(201)
+                .body("workflowdata.echoedMsgType", is("text"));
+    }
+}
diff --git 
a/quarkus/extensions/kogito-quarkus-serverless-workflow-extension/kogito-quarkus-serverless-workflow-integration-test/src/test/resources/application.properties
 
b/quarkus/extensions/kogito-quarkus-serverless-workflow-extension/kogito-quarkus-serverless-workflow-integration-test/src/test/resources/application.properties
new file mode 100644
index 0000000000..9de819ddd7
--- /dev/null
+++ 
b/quarkus/extensions/kogito-quarkus-serverless-workflow-extension/kogito-quarkus-serverless-workflow-integration-test/src/test/resources/application.properties
@@ -0,0 +1 @@
+quarkus.keycloak.devservices.enabled=false
\ No newline at end of file
diff --git 
a/quarkus/extensions/kogito-quarkus-serverless-workflow-jdbc-token-persistence-extension/kogito-quarkus-serverless-workflow-jdbc-token-persistence-integration-test/src/test/resources/application.properties
 
b/quarkus/extensions/kogito-quarkus-serverless-workflow-jdbc-token-persistence-extension/kogito-quarkus-serverless-workflow-jdbc-token-persistence-integration-test/src/test/resources/application.properties
new file mode 100644
index 0000000000..9de819ddd7
--- /dev/null
+++ 
b/quarkus/extensions/kogito-quarkus-serverless-workflow-jdbc-token-persistence-extension/kogito-quarkus-serverless-workflow-jdbc-token-persistence-integration-test/src/test/resources/application.properties
@@ -0,0 +1 @@
+quarkus.keycloak.devservices.enabled=false
\ No newline at end of file


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to