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;
}