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

fmariani pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/camel.git


The following commit(s) were added to refs/heads/main by this push:
     new 948211c029cc Update LangChain4j to 1.7 + Use granite for tests
948211c029cc is described below

commit 948211c029cce877aa757096ae02f49d14a948b9
Author: Croway <[email protected]>
AuthorDate: Tue Oct 14 19:29:58 2025 +0200

    Update LangChain4j to 1.7 + Use granite for tests
---
 .../langchain4j/chat/OllamaTestSupport.java        |  8 ++-
 .../tools/LangChain4jToolMultipleCallsTest.java    |  8 +--
 .../tools/LangChain4jToolMultipleGroupsTest.java   |  4 +-
 .../tools/LangChain4jToolNoToolsExistTest.java     |  4 +-
 .../LangChain4jToolNoToolsToBeCalledTest.java      |  4 +-
 ...hain4jToolParameterValueTypeConversionTest.java |  4 +-
 .../langchain4j/tools/LangChain4jToolTest.java     |  4 +-
 .../component/langchain4j/tools/ToolsHelper.java   |  4 +-
 .../tools/integration/LangChain4jToolIT.java       |  2 +-
 .../LangChain4jToolMultipleCallsIT.java            |  2 +-
 .../LangChain4jToolMultipleGroupsIT.java           |  2 +-
 .../LangChain4jToolMultipleMatchingGroupsIT.java   |  2 +-
 .../integration/LangChain4jToolNoToolsExistIT.java |  2 +-
 .../LangChain4jToolNoToolsToBeCalledIT.java        |  2 +-
 parent/pom.xml                                     |  2 +-
 .../services/OllamaLocalContainerInfraService.java |  2 +-
 .../infra/ollama/services/container.properties     |  4 +-
 .../ollama/services/OllamaServiceFactory.java      | 59 ++++++++++++++++++++++
 18 files changed, 91 insertions(+), 28 deletions(-)

diff --git 
a/components/camel-ai/camel-langchain4j-chat/src/test/java/org/apache/camel/component/langchain4j/chat/OllamaTestSupport.java
 
b/components/camel-ai/camel-langchain4j-chat/src/test/java/org/apache/camel/component/langchain4j/chat/OllamaTestSupport.java
index e7f4324b0f6f..e09fe2f7fa1b 100644
--- 
a/components/camel-ai/camel-langchain4j-chat/src/test/java/org/apache/camel/component/langchain4j/chat/OllamaTestSupport.java
+++ 
b/components/camel-ai/camel-langchain4j-chat/src/test/java/org/apache/camel/component/langchain4j/chat/OllamaTestSupport.java
@@ -30,7 +30,7 @@ public class OllamaTestSupport extends CamelTestSupport {
     protected ChatModel chatModel;
 
     @RegisterExtension
-    static OllamaService OLLAMA = OllamaServiceFactory.createService();
+    static OllamaService OLLAMA = 
OllamaServiceFactory.createSingletonServiceWithConfiguration(() -> getModel());
 
     @Override
     protected void setupResources() throws Exception {
@@ -42,9 +42,13 @@ public class OllamaTestSupport extends CamelTestSupport {
     protected ChatModel createModel() {
         return OllamaChatModel.builder()
                 .baseUrl(OLLAMA.getEndpoint())
-                .modelName(OLLAMA.getModel())
+                .modelName(getModel())
                 .temperature(0.3)
                 .timeout(ofSeconds(60))
                 .build();
     }
+
+    static String getModel() {
+        return "granite4:tiny-h";
+    }
 }
diff --git 
a/components/camel-ai/camel-langchain4j-tools/src/test/java/org/apache/camel/component/langchain4j/tools/LangChain4jToolMultipleCallsTest.java
 
b/components/camel-ai/camel-langchain4j-tools/src/test/java/org/apache/camel/component/langchain4j/tools/LangChain4jToolMultipleCallsTest.java
index 495b2499ce27..b052991dee96 100644
--- 
a/components/camel-ai/camel-langchain4j-tools/src/test/java/org/apache/camel/component/langchain4j/tools/LangChain4jToolMultipleCallsTest.java
+++ 
b/components/camel-ai/camel-langchain4j-tools/src/test/java/org/apache/camel/component/langchain4j/tools/LangChain4jToolMultipleCallsTest.java
@@ -29,7 +29,7 @@ import org.apache.camel.builder.RouteBuilder;
 import org.apache.camel.test.infra.openai.mock.OpenAIMock;
 import org.apache.camel.test.junit5.CamelTestSupport;
 import org.assertj.core.api.Assertions;
-import org.junit.jupiter.api.RepeatedTest;
+import org.junit.jupiter.api.Test;
 import org.junit.jupiter.api.extension.RegisterExtension;
 
 public class LangChain4jToolMultipleCallsTest extends CamelTestSupport {
@@ -82,8 +82,8 @@ public class LangChain4jToolMultipleCallsTest extends 
CamelTestSupport {
                         .process(exchange -> {
                             String body = 
exchange.getIn().getBody(String.class);
                             intermediateCalled = true;
-                            if (exchange.getIn().getHeader("longitude", 
String.class).contains("-0.13388057363742217") &&
-                                    exchange.getIn().getHeader("latitude", 
String.class).contains("51.50758961965397") &&
+                            if (exchange.getIn().getHeader("longitude", 
String.class).contains("0") &&
+                                    exchange.getIn().getHeader("latitude", 
String.class).contains("51") &&
                                     body.contains("51.50758961965397") && 
body.contains("-0.13388057363742217")) {
                                 intermediateHasValidBody = true;
                             }
@@ -111,7 +111,7 @@ public class LangChain4jToolMultipleCallsTest extends 
CamelTestSupport {
         };
     }
 
-    @RepeatedTest(10)
+    @Test
     public void testSimpleInvocation() {
         List<ChatMessage> messages = new ArrayList<>();
         messages.add(new SystemMessage(
diff --git 
a/components/camel-ai/camel-langchain4j-tools/src/test/java/org/apache/camel/component/langchain4j/tools/LangChain4jToolMultipleGroupsTest.java
 
b/components/camel-ai/camel-langchain4j-tools/src/test/java/org/apache/camel/component/langchain4j/tools/LangChain4jToolMultipleGroupsTest.java
index 00f0af81e199..d5e01e5d9a82 100644
--- 
a/components/camel-ai/camel-langchain4j-tools/src/test/java/org/apache/camel/component/langchain4j/tools/LangChain4jToolMultipleGroupsTest.java
+++ 
b/components/camel-ai/camel-langchain4j-tools/src/test/java/org/apache/camel/component/langchain4j/tools/LangChain4jToolMultipleGroupsTest.java
@@ -29,7 +29,7 @@ import org.apache.camel.builder.RouteBuilder;
 import org.apache.camel.test.infra.openai.mock.OpenAIMock;
 import org.apache.camel.test.junit5.CamelTestSupport;
 import org.assertj.core.api.Assertions;
-import org.junit.jupiter.api.RepeatedTest;
+import org.junit.jupiter.api.Test;
 import org.junit.jupiter.api.extension.RegisterExtension;
 
 public class LangChain4jToolMultipleGroupsTest extends CamelTestSupport {
@@ -98,7 +98,7 @@ public class LangChain4jToolMultipleGroupsTest extends 
CamelTestSupport {
         };
     }
 
-    @RepeatedTest(10)
+    @Test
     public void testSimpleInvocation() {
         List<ChatMessage> messages = new ArrayList<>();
         messages.add(new SystemMessage(
diff --git 
a/components/camel-ai/camel-langchain4j-tools/src/test/java/org/apache/camel/component/langchain4j/tools/LangChain4jToolNoToolsExistTest.java
 
b/components/camel-ai/camel-langchain4j-tools/src/test/java/org/apache/camel/component/langchain4j/tools/LangChain4jToolNoToolsExistTest.java
index 3b5f7d0dfd6f..9518982b3b4a 100644
--- 
a/components/camel-ai/camel-langchain4j-tools/src/test/java/org/apache/camel/component/langchain4j/tools/LangChain4jToolNoToolsExistTest.java
+++ 
b/components/camel-ai/camel-langchain4j-tools/src/test/java/org/apache/camel/component/langchain4j/tools/LangChain4jToolNoToolsExistTest.java
@@ -29,7 +29,7 @@ import org.apache.camel.builder.RouteBuilder;
 import org.apache.camel.test.infra.openai.mock.OpenAIMock;
 import org.apache.camel.test.junit5.CamelTestSupport;
 import org.assertj.core.api.Assertions;
-import org.junit.jupiter.api.RepeatedTest;
+import org.junit.jupiter.api.Test;
 import org.junit.jupiter.api.extension.RegisterExtension;
 
 public class LangChain4jToolNoToolsExistTest extends CamelTestSupport {
@@ -90,7 +90,7 @@ public class LangChain4jToolNoToolsExistTest extends 
CamelTestSupport {
         };
     }
 
-    @RepeatedTest(1)
+    @Test
     public void testSimpleInvocation() throws InterruptedException {
         List<ChatMessage> messages = new ArrayList<>();
         messages.add(new SystemMessage(
diff --git 
a/components/camel-ai/camel-langchain4j-tools/src/test/java/org/apache/camel/component/langchain4j/tools/LangChain4jToolNoToolsToBeCalledTest.java
 
b/components/camel-ai/camel-langchain4j-tools/src/test/java/org/apache/camel/component/langchain4j/tools/LangChain4jToolNoToolsToBeCalledTest.java
index 61858405493c..80dc463a6c00 100644
--- 
a/components/camel-ai/camel-langchain4j-tools/src/test/java/org/apache/camel/component/langchain4j/tools/LangChain4jToolNoToolsToBeCalledTest.java
+++ 
b/components/camel-ai/camel-langchain4j-tools/src/test/java/org/apache/camel/component/langchain4j/tools/LangChain4jToolNoToolsToBeCalledTest.java
@@ -29,7 +29,7 @@ import org.apache.camel.builder.RouteBuilder;
 import org.apache.camel.test.infra.openai.mock.OpenAIMock;
 import org.apache.camel.test.junit5.CamelTestSupport;
 import org.assertj.core.api.Assertions;
-import org.junit.jupiter.api.RepeatedTest;
+import org.junit.jupiter.api.Test;
 import org.junit.jupiter.api.extension.RegisterExtension;
 
 public class LangChain4jToolNoToolsToBeCalledTest extends CamelTestSupport {
@@ -90,7 +90,7 @@ public class LangChain4jToolNoToolsToBeCalledTest extends 
CamelTestSupport {
         };
     }
 
-    @RepeatedTest(1)
+    @Test
     public void testSimpleInvocation() throws InterruptedException {
         List<ChatMessage> messages = new ArrayList<>();
         messages.add(new SystemMessage(
diff --git 
a/components/camel-ai/camel-langchain4j-tools/src/test/java/org/apache/camel/component/langchain4j/tools/LangChain4jToolParameterValueTypeConversionTest.java
 
b/components/camel-ai/camel-langchain4j-tools/src/test/java/org/apache/camel/component/langchain4j/tools/LangChain4jToolParameterValueTypeConversionTest.java
index be03fae61f60..9115879d84dc 100644
--- 
a/components/camel-ai/camel-langchain4j-tools/src/test/java/org/apache/camel/component/langchain4j/tools/LangChain4jToolParameterValueTypeConversionTest.java
+++ 
b/components/camel-ai/camel-langchain4j-tools/src/test/java/org/apache/camel/component/langchain4j/tools/LangChain4jToolParameterValueTypeConversionTest.java
@@ -30,7 +30,7 @@ import org.apache.camel.builder.RouteBuilder;
 import org.apache.camel.test.infra.openai.mock.OpenAIMock;
 import org.apache.camel.test.junit5.CamelTestSupport;
 import org.assertj.core.api.Assertions;
-import org.junit.jupiter.api.RepeatedTest;
+import org.junit.jupiter.api.Test;
 import org.junit.jupiter.api.extension.RegisterExtension;
 
 class LangChain4jToolParameterValueTypeConversionTest extends CamelTestSupport 
{
@@ -82,7 +82,7 @@ class LangChain4jToolParameterValueTypeConversionTest extends 
CamelTestSupport {
         };
     }
 
-    @RepeatedTest(1)
+    @Test
     void parameterValueTypeConversion() {
         List<ChatMessage> messages = new ArrayList<>();
         messages.add(new SystemMessage(
diff --git 
a/components/camel-ai/camel-langchain4j-tools/src/test/java/org/apache/camel/component/langchain4j/tools/LangChain4jToolTest.java
 
b/components/camel-ai/camel-langchain4j-tools/src/test/java/org/apache/camel/component/langchain4j/tools/LangChain4jToolTest.java
index 82047da2ea60..6894fe5bef2f 100644
--- 
a/components/camel-ai/camel-langchain4j-tools/src/test/java/org/apache/camel/component/langchain4j/tools/LangChain4jToolTest.java
+++ 
b/components/camel-ai/camel-langchain4j-tools/src/test/java/org/apache/camel/component/langchain4j/tools/LangChain4jToolTest.java
@@ -30,7 +30,7 @@ import org.apache.camel.builder.RouteBuilder;
 import org.apache.camel.test.infra.openai.mock.OpenAIMock;
 import org.apache.camel.test.junit5.CamelTestSupport;
 import org.assertj.core.api.Assertions;
-import org.junit.jupiter.api.RepeatedTest;
+import org.junit.jupiter.api.Test;
 import org.junit.jupiter.api.extension.RegisterExtension;
 
 public class LangChain4jToolTest extends CamelTestSupport {
@@ -86,7 +86,7 @@ public class LangChain4jToolTest extends CamelTestSupport {
         };
     }
 
-    @RepeatedTest(1)
+    @Test
     public void testSimpleInvocation() {
         List<ChatMessage> messages = new ArrayList<>();
         messages.add(new SystemMessage(
diff --git 
a/components/camel-ai/camel-langchain4j-tools/src/test/java/org/apache/camel/component/langchain4j/tools/ToolsHelper.java
 
b/components/camel-ai/camel-langchain4j-tools/src/test/java/org/apache/camel/component/langchain4j/tools/ToolsHelper.java
index 074dec5b3b90..356c4c43c74c 100644
--- 
a/components/camel-ai/camel-langchain4j-tools/src/test/java/org/apache/camel/component/langchain4j/tools/ToolsHelper.java
+++ 
b/components/camel-ai/camel-langchain4j-tools/src/test/java/org/apache/camel/component/langchain4j/tools/ToolsHelper.java
@@ -34,7 +34,7 @@ public final class ToolsHelper {
         return OpenAiChatModel.builder()
                 .apiKey(apiKey)
                 .modelName(modelName)
-                .baseUrl(baseUrl)
+                .baseUrl(baseUrl + "/v1")
                 .temperature(0.0)
                 .timeout(ofSeconds(60))
                 .logRequests(true)
@@ -43,6 +43,6 @@ public final class ToolsHelper {
     }
 
     public static String modelName() {
-        return System.getProperty("langchain4j.tools.model.name", 
"llama3.1:latest");
+        return System.getProperty("langchain4j.tools.model.name", 
"granite4:tiny-h");
     }
 }
diff --git 
a/components/camel-ai/camel-langchain4j-tools/src/test/java/org/apache/camel/component/langchain4j/tools/integration/LangChain4jToolIT.java
 
b/components/camel-ai/camel-langchain4j-tools/src/test/java/org/apache/camel/component/langchain4j/tools/integration/LangChain4jToolIT.java
index 1c3875cb7b1e..45b5c288d7a8 100644
--- 
a/components/camel-ai/camel-langchain4j-tools/src/test/java/org/apache/camel/component/langchain4j/tools/integration/LangChain4jToolIT.java
+++ 
b/components/camel-ai/camel-langchain4j-tools/src/test/java/org/apache/camel/component/langchain4j/tools/integration/LangChain4jToolIT.java
@@ -27,7 +27,7 @@ import org.junit.jupiter.api.extension.RegisterExtension;
 public class LangChain4jToolIT extends LangChain4jToolTest {
 
     @RegisterExtension
-    static OllamaService OLLAMA = 
OllamaServiceFactory.createServiceWithConfiguration(() -> 
ToolsHelper.modelName());
+    static OllamaService OLLAMA = 
OllamaServiceFactory.createSingletonServiceWithConfiguration(() -> 
ToolsHelper.modelName());
 
     @Override
     protected void setupResources() throws Exception {
diff --git 
a/components/camel-ai/camel-langchain4j-tools/src/test/java/org/apache/camel/component/langchain4j/tools/integration/LangChain4jToolMultipleCallsIT.java
 
b/components/camel-ai/camel-langchain4j-tools/src/test/java/org/apache/camel/component/langchain4j/tools/integration/LangChain4jToolMultipleCallsIT.java
index 0c9532a043c4..98e67b5c31ed 100644
--- 
a/components/camel-ai/camel-langchain4j-tools/src/test/java/org/apache/camel/component/langchain4j/tools/integration/LangChain4jToolMultipleCallsIT.java
+++ 
b/components/camel-ai/camel-langchain4j-tools/src/test/java/org/apache/camel/component/langchain4j/tools/integration/LangChain4jToolMultipleCallsIT.java
@@ -27,7 +27,7 @@ import org.junit.jupiter.api.extension.RegisterExtension;
 public class LangChain4jToolMultipleCallsIT extends 
LangChain4jToolMultipleCallsTest {
 
     @RegisterExtension
-    static OllamaService OLLAMA = 
OllamaServiceFactory.createServiceWithConfiguration(() -> 
ToolsHelper.modelName());
+    static OllamaService OLLAMA = 
OllamaServiceFactory.createSingletonServiceWithConfiguration(() -> 
ToolsHelper.modelName());
 
     @Override
     protected void setupResources() throws Exception {
diff --git 
a/components/camel-ai/camel-langchain4j-tools/src/test/java/org/apache/camel/component/langchain4j/tools/integration/LangChain4jToolMultipleGroupsIT.java
 
b/components/camel-ai/camel-langchain4j-tools/src/test/java/org/apache/camel/component/langchain4j/tools/integration/LangChain4jToolMultipleGroupsIT.java
index 9759ffacbf9e..c8c4d3158a9b 100644
--- 
a/components/camel-ai/camel-langchain4j-tools/src/test/java/org/apache/camel/component/langchain4j/tools/integration/LangChain4jToolMultipleGroupsIT.java
+++ 
b/components/camel-ai/camel-langchain4j-tools/src/test/java/org/apache/camel/component/langchain4j/tools/integration/LangChain4jToolMultipleGroupsIT.java
@@ -27,7 +27,7 @@ import org.junit.jupiter.api.extension.RegisterExtension;
 public class LangChain4jToolMultipleGroupsIT extends 
LangChain4jToolMultipleGroupsTest {
 
     @RegisterExtension
-    static OllamaService OLLAMA = 
OllamaServiceFactory.createServiceWithConfiguration(() -> 
ToolsHelper.modelName());
+    static OllamaService OLLAMA = 
OllamaServiceFactory.createSingletonServiceWithConfiguration(() -> 
ToolsHelper.modelName());
 
     @Override
     protected void setupResources() throws Exception {
diff --git 
a/components/camel-ai/camel-langchain4j-tools/src/test/java/org/apache/camel/component/langchain4j/tools/integration/LangChain4jToolMultipleMatchingGroupsIT.java
 
b/components/camel-ai/camel-langchain4j-tools/src/test/java/org/apache/camel/component/langchain4j/tools/integration/LangChain4jToolMultipleMatchingGroupsIT.java
index 339d64492ff8..792fc096e846 100644
--- 
a/components/camel-ai/camel-langchain4j-tools/src/test/java/org/apache/camel/component/langchain4j/tools/integration/LangChain4jToolMultipleMatchingGroupsIT.java
+++ 
b/components/camel-ai/camel-langchain4j-tools/src/test/java/org/apache/camel/component/langchain4j/tools/integration/LangChain4jToolMultipleMatchingGroupsIT.java
@@ -27,7 +27,7 @@ import org.junit.jupiter.api.extension.RegisterExtension;
 public class LangChain4jToolMultipleMatchingGroupsIT extends 
LangChain4jToolMultipleMatchingGroupsTest {
 
     @RegisterExtension
-    static OllamaService OLLAMA = 
OllamaServiceFactory.createServiceWithConfiguration(() -> 
ToolsHelper.modelName());
+    static OllamaService OLLAMA = 
OllamaServiceFactory.createSingletonServiceWithConfiguration(() -> 
ToolsHelper.modelName());
 
     @Override
     protected void setupResources() throws Exception {
diff --git 
a/components/camel-ai/camel-langchain4j-tools/src/test/java/org/apache/camel/component/langchain4j/tools/integration/LangChain4jToolNoToolsExistIT.java
 
b/components/camel-ai/camel-langchain4j-tools/src/test/java/org/apache/camel/component/langchain4j/tools/integration/LangChain4jToolNoToolsExistIT.java
index 4541fda1e77e..b9273f38073b 100644
--- 
a/components/camel-ai/camel-langchain4j-tools/src/test/java/org/apache/camel/component/langchain4j/tools/integration/LangChain4jToolNoToolsExistIT.java
+++ 
b/components/camel-ai/camel-langchain4j-tools/src/test/java/org/apache/camel/component/langchain4j/tools/integration/LangChain4jToolNoToolsExistIT.java
@@ -27,7 +27,7 @@ import org.junit.jupiter.api.extension.RegisterExtension;
 public class LangChain4jToolNoToolsExistIT extends 
LangChain4jToolNoToolsExistTest {
 
     @RegisterExtension
-    static OllamaService OLLAMA = 
OllamaServiceFactory.createServiceWithConfiguration(() -> 
ToolsHelper.modelName());
+    static OllamaService OLLAMA = 
OllamaServiceFactory.createSingletonServiceWithConfiguration(() -> 
ToolsHelper.modelName());
 
     @Override
     protected void setupResources() throws Exception {
diff --git 
a/components/camel-ai/camel-langchain4j-tools/src/test/java/org/apache/camel/component/langchain4j/tools/integration/LangChain4jToolNoToolsToBeCalledIT.java
 
b/components/camel-ai/camel-langchain4j-tools/src/test/java/org/apache/camel/component/langchain4j/tools/integration/LangChain4jToolNoToolsToBeCalledIT.java
index b0c478ad77e8..591721a93576 100644
--- 
a/components/camel-ai/camel-langchain4j-tools/src/test/java/org/apache/camel/component/langchain4j/tools/integration/LangChain4jToolNoToolsToBeCalledIT.java
+++ 
b/components/camel-ai/camel-langchain4j-tools/src/test/java/org/apache/camel/component/langchain4j/tools/integration/LangChain4jToolNoToolsToBeCalledIT.java
@@ -27,7 +27,7 @@ import org.junit.jupiter.api.extension.RegisterExtension;
 public class LangChain4jToolNoToolsToBeCalledIT extends 
LangChain4jToolNoToolsToBeCalledTest {
 
     @RegisterExtension
-    static OllamaService OLLAMA = 
OllamaServiceFactory.createServiceWithConfiguration(() -> 
ToolsHelper.modelName());
+    static OllamaService OLLAMA = 
OllamaServiceFactory.createSingletonServiceWithConfiguration(() -> 
ToolsHelper.modelName());
 
     @Override
     protected void setupResources() throws Exception {
diff --git a/parent/pom.xml b/parent/pom.xml
index c08b5b386dd2..2a0840f79998 100644
--- a/parent/pom.xml
+++ b/parent/pom.xml
@@ -335,7 +335,7 @@
         <keycloak-client-version>26.0.7</keycloak-client-version>
         <kubernetes-client-version>7.4.0</kubernetes-client-version>
         <kudu-version>1.18.0</kudu-version>
-        <langchain4j-version>1.6.0</langchain4j-version>
+        <langchain4j-version>1.7.1</langchain4j-version>
         <!-- remove this one when all langchain4j artifacts are made final -->
         <langchain4j-beta-version>1.6.0-beta12</langchain4j-beta-version> <!-- 
dependencies in beta version are still in tech preview mode in the Langchain4j 
project -->
         
<langchain4j-community-version>1.6.0-beta12</langchain4j-community-version> 
<!-- version for Langchain4j community dependencies : 
https://github.com/langchain4j/langchain4j-community-->
diff --git 
a/test-infra/camel-test-infra-ollama/src/main/java/org/apache/camel/test/infra/ollama/services/OllamaLocalContainerInfraService.java
 
b/test-infra/camel-test-infra-ollama/src/main/java/org/apache/camel/test/infra/ollama/services/OllamaLocalContainerInfraService.java
index 4d2d93cb23c8..2315ba322631 100644
--- 
a/test-infra/camel-test-infra-ollama/src/main/java/org/apache/camel/test/infra/ollama/services/OllamaLocalContainerInfraService.java
+++ 
b/test-infra/camel-test-infra-ollama/src/main/java/org/apache/camel/test/infra/ollama/services/OllamaLocalContainerInfraService.java
@@ -89,7 +89,7 @@ public class OllamaLocalContainerInfraService implements 
OllamaInfraService, Con
 
     @Override
     public void registerProperties() {
-        System.setProperty(OllamaProperties.ENDPOINT, container.getEndpoint());
+        System.setProperty(OllamaProperties.ENDPOINT, getEndpoint());
     }
 
     @Override
diff --git 
a/test-infra/camel-test-infra-ollama/src/main/resources/org/apache/camel/test/infra/ollama/services/container.properties
 
b/test-infra/camel-test-infra-ollama/src/main/resources/org/apache/camel/test/infra/ollama/services/container.properties
index 0774247a7ade..6d794a33c33c 100644
--- 
a/test-infra/camel-test-infra-ollama/src/main/resources/org/apache/camel/test/infra/ollama/services/container.properties
+++ 
b/test-infra/camel-test-infra-ollama/src/main/resources/org/apache/camel/test/infra/ollama/services/container.properties
@@ -14,5 +14,5 @@
 ## See the License for the specific language governing permissions and
 ## limitations under the License.
 ## ---------------------------------------------------------------------------
-ollama.container=mirror.gcr.io/ollama/ollama:0.3.5
-ollama.model=orca-mini
\ No newline at end of file
+ollama.container=mirror.gcr.io/ollama/ollama:0.12.5
+ollama.model=granite4:tiny-h
\ No newline at end of file
diff --git 
a/test-infra/camel-test-infra-ollama/src/test/java/org/apache/camel/test/infra/ollama/services/OllamaServiceFactory.java
 
b/test-infra/camel-test-infra-ollama/src/test/java/org/apache/camel/test/infra/ollama/services/OllamaServiceFactory.java
index 2f87a9c11f45..b13523f74fd1 100644
--- 
a/test-infra/camel-test-infra-ollama/src/test/java/org/apache/camel/test/infra/ollama/services/OllamaServiceFactory.java
+++ 
b/test-infra/camel-test-infra-ollama/src/test/java/org/apache/camel/test/infra/ollama/services/OllamaServiceFactory.java
@@ -17,9 +17,37 @@
 package org.apache.camel.test.infra.ollama.services;
 
 import org.apache.camel.test.infra.common.services.SimpleTestServiceBuilder;
+import org.apache.camel.test.infra.common.services.SingletonService;
+import org.junit.jupiter.api.extension.ExtensionContext;
 
 public final class OllamaServiceFactory {
 
+    static class SingletonOllamaService extends 
SingletonService<OllamaService> implements OllamaService {
+        public SingletonOllamaService(OllamaService service, String name) {
+            super(service, name);
+        }
+
+        @Override
+        public String getEndpoint() {
+            return getService().getEndpoint();
+        }
+
+        @Override
+        public String getModel() {
+            return getService().getModel();
+        }
+
+        @Override
+        public final void beforeAll(ExtensionContext extensionContext) {
+            super.beforeAll(extensionContext);
+        }
+
+        @Override
+        public final void afterAll(ExtensionContext extensionContext) {
+            // NO-OP
+        }
+    }
+
     private OllamaServiceFactory() {
 
     }
@@ -41,4 +69,35 @@ public final class OllamaServiceFactory {
                 .addRemoteMapping(() -> new 
OllamaRemoteService(serviceConfiguration))
                 .build();
     }
+
+    public static OllamaService createSingletonService() {
+        return SingletonServiceHolder.INSTANCE;
+    }
+
+    public static OllamaService 
createSingletonServiceWithConfiguration(OllamaServiceConfiguration 
serviceConfiguration) {
+        return 
SingletonServiceWithConfigurationHolder.getInstance(serviceConfiguration);
+    }
+
+    private static class SingletonServiceHolder {
+        static final OllamaService INSTANCE;
+        static {
+            SimpleTestServiceBuilder<OllamaService> instance = builder();
+
+            instance.addLocalMapping(() -> new SingletonOllamaService(new 
OllamaLocalContainerService(), "ollama"))
+                    .addRemoteMapping(OllamaRemoteService::new);
+
+            INSTANCE = instance.build();
+        }
+    }
+
+    private static class SingletonServiceWithConfigurationHolder {
+        private static volatile OllamaService INSTANCE;
+
+        static synchronized OllamaService 
getInstance(OllamaServiceConfiguration serviceConfiguration) {
+            if (INSTANCE == null) {
+                INSTANCE = new SingletonOllamaService(new 
OllamaLocalContainerService(serviceConfiguration), "ollama");
+            }
+            return INSTANCE;
+        }
+    }
 }

Reply via email to