Update intg test class

This commit is contained in:
Amith Koujalgi 2024-02-10 10:41:53 +05:30
parent 24674ea483
commit 9832caf503
2 changed files with 41 additions and 26 deletions

View File

@ -5,7 +5,6 @@ import static org.junit.jupiter.api.Assertions.*;
import io.github.amithkoujalgi.ollama4j.core.OllamaAPI; import io.github.amithkoujalgi.ollama4j.core.OllamaAPI;
import io.github.amithkoujalgi.ollama4j.core.exceptions.OllamaBaseException; import io.github.amithkoujalgi.ollama4j.core.exceptions.OllamaBaseException;
import io.github.amithkoujalgi.ollama4j.core.models.OllamaResult; import io.github.amithkoujalgi.ollama4j.core.models.OllamaResult;
import io.github.amithkoujalgi.ollama4j.core.types.OllamaModelType;
import io.github.amithkoujalgi.ollama4j.core.utils.OptionsBuilder; import io.github.amithkoujalgi.ollama4j.core.utils.OptionsBuilder;
import java.io.File; import java.io.File;
import java.io.IOException; import java.io.IOException;
@ -16,26 +15,14 @@ import java.net.http.HttpConnectTimeoutException;
import java.util.List; import java.util.List;
import java.util.Objects; import java.util.Objects;
import java.util.Properties; import java.util.Properties;
import lombok.Data;
import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Order; import org.junit.jupiter.api.Order;
import org.junit.jupiter.api.Test; import org.junit.jupiter.api.Test;
class TestRealAPIs { class TestRealAPIs {
OllamaAPI ollamaAPI; OllamaAPI ollamaAPI;
Config config;
private Properties loadProperties() {
Properties properties = new Properties();
try (InputStream input =
getClass().getClassLoader().getResourceAsStream("test-config.properties")) {
if (input == null) {
throw new RuntimeException("Sorry, unable to find test-config.properties");
}
properties.load(input);
return properties;
} catch (IOException e) {
throw new RuntimeException("Error loading properties", e);
}
}
private File getImageFileFromClasspath(String fileName) { private File getImageFileFromClasspath(String fileName) {
ClassLoader classLoader = getClass().getClassLoader(); ClassLoader classLoader = getClass().getClassLoader();
@ -44,9 +31,9 @@ class TestRealAPIs {
@BeforeEach @BeforeEach
void setUp() { void setUp() {
Properties properties = loadProperties(); config = new Config();
ollamaAPI = new OllamaAPI(properties.getProperty("ollama.api.url")); ollamaAPI = new OllamaAPI(config.getOllamaURL());
ollamaAPI.setRequestTimeoutSeconds(20); ollamaAPI.setRequestTimeoutSeconds(config.getRequestTimeoutSeconds());
} }
@Test @Test
@ -85,10 +72,10 @@ class TestRealAPIs {
void testPullModel() { void testPullModel() {
testEndpointReachability(); testEndpointReachability();
try { try {
ollamaAPI.pullModel(OllamaModelType.LLAMA2); ollamaAPI.pullModel(config.getModel());
boolean found = boolean found =
ollamaAPI.listModels().stream() ollamaAPI.listModels().stream()
.anyMatch(model -> model.getModelName().equals(OllamaModelType.LLAMA2)); .anyMatch(model -> model.getModel().equalsIgnoreCase(config.getModel()));
assertTrue(found); assertTrue(found);
} catch (IOException | OllamaBaseException | InterruptedException | URISyntaxException e) { } catch (IOException | OllamaBaseException | InterruptedException | URISyntaxException e) {
throw new RuntimeException(e); throw new RuntimeException(e);
@ -102,7 +89,7 @@ class TestRealAPIs {
try { try {
OllamaResult result = OllamaResult result =
ollamaAPI.generate( ollamaAPI.generate(
OllamaModelType.LLAMA2, config.getModel(),
"What is the capital of France? And what's France's connection with Mona Lisa?", "What is the capital of France? And what's France's connection with Mona Lisa?",
new OptionsBuilder().build()); new OptionsBuilder().build());
assertNotNull(result); assertNotNull(result);
@ -120,7 +107,7 @@ class TestRealAPIs {
try { try {
OllamaResult result = OllamaResult result =
ollamaAPI.generate( ollamaAPI.generate(
OllamaModelType.LLAMA2, config.getModel(),
"What is the capital of France? And what's France's connection with Mona Lisa?", "What is the capital of France? And what's France's connection with Mona Lisa?",
new OptionsBuilder().setTemperature(0.9f).build()); new OptionsBuilder().setTemperature(0.9f).build());
assertNotNull(result); assertNotNull(result);
@ -139,7 +126,7 @@ class TestRealAPIs {
try { try {
OllamaResult result = OllamaResult result =
ollamaAPI.generateWithImageFiles( ollamaAPI.generateWithImageFiles(
OllamaModelType.LLAVA, config.getImageModel(),
"What is in this image?", "What is in this image?",
List.of(imageFile), List.of(imageFile),
new OptionsBuilder().build()); new OptionsBuilder().build());
@ -158,7 +145,7 @@ class TestRealAPIs {
try { try {
OllamaResult result = OllamaResult result =
ollamaAPI.generateWithImageURLs( ollamaAPI.generateWithImageURLs(
OllamaModelType.LLAVA, config.getImageModel(),
"What is in this image?", "What is in this image?",
List.of( List.of(
"https://t3.ftcdn.net/jpg/02/96/63/80/360_F_296638053_0gUVA4WVBKceGsIr7LNqRWSnkusi07dq.jpg"), "https://t3.ftcdn.net/jpg/02/96/63/80/360_F_296638053_0gUVA4WVBKceGsIr7LNqRWSnkusi07dq.jpg"),
@ -171,3 +158,29 @@ class TestRealAPIs {
} }
} }
} }
@Data
class Config {
private String ollamaURL;
private String model;
private String imageModel;
private int requestTimeoutSeconds;
public Config() {
Properties properties = new Properties();
try (InputStream input =
getClass().getClassLoader().getResourceAsStream("test-config.properties")) {
if (input == null) {
throw new RuntimeException("Sorry, unable to find test-config.properties");
}
properties.load(input);
this.ollamaURL = properties.getProperty("ollama.url");
this.model = properties.getProperty("ollama.model");
this.imageModel = properties.getProperty("ollama.model.image");
this.requestTimeoutSeconds =
Integer.parseInt(properties.getProperty("ollama.request-timeout-seconds"));
} catch (IOException e) {
throw new RuntimeException("Error loading properties", e);
}
}
}

View File

@ -1,2 +1,4 @@
ollama.api.url=http://192.168.29.223:11434 ollama.url=http://localhost:11434
ollama.model=llava ollama.model=qwen:0.5b
ollama.model.image=llava
ollama.request-timeout-seconds=120