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

jamesnetherton pushed a commit to branch 3.33.x
in repository https://gitbox.apache.org/repos/asf/camel-quarkus.git


The following commit(s) were added to refs/heads/3.33.x by this push:
     new 848d1cc48a Refactor OpenAI tests to work correctly with two separated 
models
848d1cc48a is described below

commit 848d1cc48aefecdbc356d862d9b77b8843f45da0
Author: James Netherton <[email protected]>
AuthorDate: Mon Mar 23 11:43:09 2026 +0000

    Refactor OpenAI tests to work correctly with two separated models
    
    Co-authored-by: Lukas Lowinger <[email protected]>
---
 .../quarkus/component/openai/it/OpenaiResource.java   | 19 +++++++++++++++++++
 .../quarkus/component/openai/it/OpenaiRoutes.java     |  6 +++---
 .../quarkus/component/openai/it/OpenaiChatTest.java   | 13 ++++++++++---
 ...eddingTestResource.java => OpenaiEmbeddingIT.java} | 18 +++---------------
 .../component/openai/it/OpenaiEmbeddingTest.java      |  2 +-
 .../component/openai/it/OpenaiTestResource.java       | 11 +++++++++++
 6 files changed, 47 insertions(+), 22 deletions(-)

diff --git 
a/integration-tests/openai/src/main/java/org/apache/camel/quarkus/component/openai/it/OpenaiResource.java
 
b/integration-tests/openai/src/main/java/org/apache/camel/quarkus/component/openai/it/OpenaiResource.java
index aaf74c6259..adcb368036 100644
--- 
a/integration-tests/openai/src/main/java/org/apache/camel/quarkus/component/openai/it/OpenaiResource.java
+++ 
b/integration-tests/openai/src/main/java/org/apache/camel/quarkus/component/openai/it/OpenaiResource.java
@@ -17,6 +17,7 @@
 package org.apache.camel.quarkus.component.openai.it;
 
 import java.io.File;
+import java.net.URI;
 import java.util.Arrays;
 import java.util.HashMap;
 import java.util.List;
@@ -24,6 +25,7 @@ import java.util.Map;
 
 import jakarta.enterprise.context.ApplicationScoped;
 import jakarta.inject.Inject;
+import jakarta.inject.Named;
 import jakarta.ws.rs.Consumes;
 import jakarta.ws.rs.GET;
 import jakarta.ws.rs.POST;
@@ -32,14 +34,17 @@ import jakarta.ws.rs.PathParam;
 import jakarta.ws.rs.Produces;
 import jakarta.ws.rs.QueryParam;
 import jakarta.ws.rs.core.MediaType;
+import jakarta.ws.rs.core.Response;
 import org.apache.camel.CamelContext;
 import org.apache.camel.ConsumerTemplate;
 import org.apache.camel.Exchange;
 import org.apache.camel.Message;
 import org.apache.camel.Processor;
 import org.apache.camel.ProducerTemplate;
+import org.apache.camel.component.openai.OpenAIComponent;
 import org.apache.camel.component.openai.OpenAIConstants;
 import org.apache.camel.util.ObjectHelper;
+import org.eclipse.microprofile.config.ConfigProvider;
 
 @Path("/openai")
 @ApplicationScoped
@@ -166,4 +171,18 @@ public class OpenaiResource {
 
         return producerTemplate.requestBodyAndHeaders("direct:chat", 
chatMessageContent, headers, String.class);
     }
+
+    @Path("/configProperty/{propertyName}")
+    @GET
+    @Produces(MediaType.TEXT_PLAIN)
+    public Response configProperty(@PathParam("propertyName") String 
propertyName) throws Exception {
+        String propertyValue = 
ConfigProvider.getConfig().getOptionalValue(propertyName, 
String.class).orElse(null);
+        return Response.ok(propertyValue).location(new 
URI("https://camel.apache.org/";)).build();
+    }
+
+    @Produces
+    @Named("openai-embeddings")
+    public OpenAIComponent openAIComponentEmbeddings() {
+        return new OpenAIComponent();
+    }
 }
diff --git 
a/integration-tests/openai/src/main/java/org/apache/camel/quarkus/component/openai/it/OpenaiRoutes.java
 
b/integration-tests/openai/src/main/java/org/apache/camel/quarkus/component/openai/it/OpenaiRoutes.java
index a8b16a8c13..e510fec295 100644
--- 
a/integration-tests/openai/src/main/java/org/apache/camel/quarkus/component/openai/it/OpenaiRoutes.java
+++ 
b/integration-tests/openai/src/main/java/org/apache/camel/quarkus/component/openai/it/OpenaiRoutes.java
@@ -86,12 +86,12 @@ public class OpenaiRoutes extends RouteBuilder {
                 .log("Chat response 2: ${body}");
 
         from("direct:embed")
-                .to("openai:embeddings");
+                .to("openai-embeddings:embeddings");
 
         from("direct:batchEmbed")
-                .to("openai:embeddings");
+                .to("openai-embeddings:embeddings");
 
         from("direct:vectorSimilarity")
-                .to("openai:embeddings");
+                .to("openai-embeddings:embeddings");
     }
 }
diff --git 
a/integration-tests/openai/src/test/java/org/apache/camel/quarkus/component/openai/it/OpenaiChatTest.java
 
b/integration-tests/openai/src/test/java/org/apache/camel/quarkus/component/openai/it/OpenaiChatTest.java
index 4e61080c90..c655b456f4 100644
--- 
a/integration-tests/openai/src/test/java/org/apache/camel/quarkus/component/openai/it/OpenaiChatTest.java
+++ 
b/integration-tests/openai/src/test/java/org/apache/camel/quarkus/component/openai/it/OpenaiChatTest.java
@@ -35,6 +35,7 @@ import io.restassured.RestAssured;
 import io.restassured.http.ContentType;
 import io.restassured.response.Response;
 import org.apache.camel.util.FileUtil;
+import org.apache.commons.lang3.StringUtils;
 import org.awaitility.Awaitility;
 import org.jboss.logging.Logger;
 import org.junit.jupiter.api.Assumptions;
@@ -47,7 +48,7 @@ import static org.hamcrest.Matchers.greaterThan;
 import static org.hamcrest.Matchers.notNullValue;
 import static org.junit.jupiter.api.Assertions.assertEquals;
 
-@QuarkusTestResource(value = OpenaiChatTestResource.class, 
restrictToAnnotatedClass = true)
+@QuarkusTestResource(OpenaiTestResource.class)
 @QuarkusTest
 class OpenaiChatTest {
 
@@ -71,9 +72,15 @@ class OpenaiChatTest {
 
     @Test
     void chatWithImage() throws IOException {
+        String wireMockUrl = 
RestAssured.get("/openai/configProperty/wiremock.url")
+                .then()
+                .statusCode(200).extract().body().asString();
+        String openaiUrl = 
RestAssured.get("/openai/configProperty/camel.component.openai.baseUrl")
+                .then()
+                .statusCode(200).extract().body().asString();
+        // run image test only on openai model or on wiremock
         Assumptions.assumeTrue(
-                
OpenaiChatTestResource.OPENAI_API_URL.equals(System.getenv(OpenaiChatTestResource.OPENAI_ENV_CHAT_BASE_URL))
-                        || 
System.getProperty("camel.component.openai.baseUrl") == null,
+                OpenaiTestResource.OPENAI_API_URL.equals(openaiUrl) || 
StringUtils.isNotEmpty(wireMockUrl),
                 "Needs model which support image operations.");
         Path path = Paths.get("target/camel-log.png");
 
diff --git 
a/integration-tests/openai/src/test/java/org/apache/camel/quarkus/component/openai/it/OpenaiEmbeddingTestResource.java
 
b/integration-tests/openai/src/test/java/org/apache/camel/quarkus/component/openai/it/OpenaiEmbeddingIT.java
similarity index 56%
rename from 
integration-tests/openai/src/test/java/org/apache/camel/quarkus/component/openai/it/OpenaiEmbeddingTestResource.java
rename to 
integration-tests/openai/src/test/java/org/apache/camel/quarkus/component/openai/it/OpenaiEmbeddingIT.java
index 180289b351..8be635ac52 100644
--- 
a/integration-tests/openai/src/test/java/org/apache/camel/quarkus/component/openai/it/OpenaiEmbeddingTestResource.java
+++ 
b/integration-tests/openai/src/test/java/org/apache/camel/quarkus/component/openai/it/OpenaiEmbeddingIT.java
@@ -16,20 +16,8 @@
  */
 package org.apache.camel.quarkus.component.openai.it;
 
-import java.util.Map;
+import io.quarkus.test.junit.QuarkusIntegrationTest;
 
-public class OpenaiEmbeddingTestResource extends OpenaiTestResource {
-
-    @Override
-    public Map<String, String> start() {
-        Map<String, String> conf = super.start();
-        conf.put("camel.component.openai.embedding-model",
-                envOrDefault(OPENAI_ENV_EMBEDDING_MODEL, 
"text-embedding-3-small"));
-        conf.put("camel.component.openai.apiKey", 
envOrDefault(OPENAI_ENV_EMBEDDING_API_KEY, "test-key"));
-
-        if (conf.get("camel.component.openai.baseUrl") == null) {
-            conf.put("camel.component.openai.baseUrl", 
envOrDefault(OPENAI_ENV_EMBEDDING_BASE_URL, OPENAI_API_URL));
-        }
-        return conf;
-    }
+@QuarkusIntegrationTest
+public class OpenaiEmbeddingIT extends OpenaiEmbeddingTest {
 }
diff --git 
a/integration-tests/openai/src/test/java/org/apache/camel/quarkus/component/openai/it/OpenaiEmbeddingTest.java
 
b/integration-tests/openai/src/test/java/org/apache/camel/quarkus/component/openai/it/OpenaiEmbeddingTest.java
index c9fa5b49f3..785ca266ae 100644
--- 
a/integration-tests/openai/src/test/java/org/apache/camel/quarkus/component/openai/it/OpenaiEmbeddingTest.java
+++ 
b/integration-tests/openai/src/test/java/org/apache/camel/quarkus/component/openai/it/OpenaiEmbeddingTest.java
@@ -32,7 +32,7 @@ import static org.hamcrest.Matchers.greaterThan;
 import static org.hamcrest.Matchers.hasSize;
 import static org.junit.jupiter.api.Assertions.assertTrue;
 
-@QuarkusTestResource(value = OpenaiEmbeddingTestResource.class, 
restrictToAnnotatedClass = true)
+@QuarkusTestResource(OpenaiTestResource.class)
 @QuarkusTest
 class OpenaiEmbeddingTest {
 
diff --git 
a/integration-tests/openai/src/test/java/org/apache/camel/quarkus/component/openai/it/OpenaiTestResource.java
 
b/integration-tests/openai/src/test/java/org/apache/camel/quarkus/component/openai/it/OpenaiTestResource.java
index fd5f75a449..a44fbaf629 100644
--- 
a/integration-tests/openai/src/test/java/org/apache/camel/quarkus/component/openai/it/OpenaiTestResource.java
+++ 
b/integration-tests/openai/src/test/java/org/apache/camel/quarkus/component/openai/it/OpenaiTestResource.java
@@ -48,7 +48,18 @@ public class OpenaiTestResource extends 
WireMockTestResourceLifecycleManager {
         String wiremockUrl = configuration.get("wiremock.url");
         if (ObjectHelper.isNotEmpty(wiremockUrl)) {
             configuration.put("camel.component.openai.baseUrl", wiremockUrl);
+            configuration.put("camel.component.openai-embeddings.baseUrl", 
wiremockUrl);
+        } else {
+            configuration.put("camel.component.openai.baseUrl", 
envOrDefault(OPENAI_ENV_CHAT_BASE_URL, OPENAI_API_URL));
+            configuration.put("camel.component.openai-embeddings.baseUrl",
+                    envOrDefault(OPENAI_ENV_EMBEDDING_BASE_URL, 
OPENAI_API_URL));
         }
+        configuration.put("camel.component.openai.model", 
envOrDefault(OPENAI_ENV_CHAT_MODEL, "gpt-5"));
+        configuration.put("camel.component.openai.apiKey", 
envOrDefault(OPENAI_ENV_CHAT_API_KEY, "test-key"));
+        configuration.put("camel.component.openai-embeddings.embedding-model",
+                envOrDefault(OPENAI_ENV_EMBEDDING_MODEL, 
"text-embedding-3-small"));
+        configuration.put("camel.component.openai-embeddings.apiKey", 
envOrDefault(OPENAI_ENV_EMBEDDING_API_KEY, "test-key"));
+
         return configuration;
     }
 

Reply via email to