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]