forked from Mirror/ollama4j
Generalizes Abstract Serialization Test Class
Removes the "Request" naming context as this base class technically serves for general serialization purposes.
This commit is contained in:
parent
54edba144c
commit
9c6a55f7b0
@ -6,30 +6,30 @@ import com.fasterxml.jackson.core.JsonProcessingException;
|
|||||||
import com.fasterxml.jackson.databind.ObjectMapper;
|
import com.fasterxml.jackson.databind.ObjectMapper;
|
||||||
import io.github.amithkoujalgi.ollama4j.core.utils.Utils;
|
import io.github.amithkoujalgi.ollama4j.core.utils.Utils;
|
||||||
|
|
||||||
public abstract class AbstractRequestSerializationTest<T> {
|
public abstract class AbstractSerializationTest<T> {
|
||||||
|
|
||||||
protected ObjectMapper mapper = Utils.getObjectMapper();
|
protected ObjectMapper mapper = Utils.getObjectMapper();
|
||||||
|
|
||||||
protected String serializeRequest(T req) {
|
protected String serialize(T obj) {
|
||||||
try {
|
try {
|
||||||
return mapper.writeValueAsString(req);
|
return mapper.writeValueAsString(obj);
|
||||||
} catch (JsonProcessingException e) {
|
} catch (JsonProcessingException e) {
|
||||||
fail("Could not serialize request!", e);
|
fail("Could not serialize request!", e);
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
protected T deserializeRequest(String jsonRequest, Class<T> requestClass) {
|
protected T deserialize(String jsonObject, Class<T> deserializationClass) {
|
||||||
try {
|
try {
|
||||||
return mapper.readValue(jsonRequest, requestClass);
|
return mapper.readValue(jsonObject, deserializationClass);
|
||||||
} catch (JsonProcessingException e) {
|
} catch (JsonProcessingException e) {
|
||||||
fail("Could not deserialize jsonRequest!", e);
|
fail("Could not deserialize jsonObject!", e);
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
protected void assertEqualsAfterUnmarshalling(T unmarshalledRequest,
|
protected void assertEqualsAfterUnmarshalling(T unmarshalledObject,
|
||||||
T req) {
|
T req) {
|
||||||
assertEquals(req, unmarshalledRequest);
|
assertEquals(req, unmarshalledObject);
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -14,7 +14,7 @@ import io.github.amithkoujalgi.ollama4j.core.models.chat.OllamaChatRequestBuilde
|
|||||||
import io.github.amithkoujalgi.ollama4j.core.models.chat.OllamaChatRequestModel;
|
import io.github.amithkoujalgi.ollama4j.core.models.chat.OllamaChatRequestModel;
|
||||||
import io.github.amithkoujalgi.ollama4j.core.utils.OptionsBuilder;
|
import io.github.amithkoujalgi.ollama4j.core.utils.OptionsBuilder;
|
||||||
|
|
||||||
public class TestChatRequestSerialization extends AbstractRequestSerializationTest<OllamaChatRequestModel>{
|
public class TestChatRequestSerialization extends AbstractSerializationTest<OllamaChatRequestModel> {
|
||||||
|
|
||||||
private OllamaChatRequestBuilder builder;
|
private OllamaChatRequestBuilder builder;
|
||||||
|
|
||||||
@ -26,8 +26,8 @@ public class TestChatRequestSerialization extends AbstractRequestSerializationTe
|
|||||||
@Test
|
@Test
|
||||||
public void testRequestOnlyMandatoryFields() {
|
public void testRequestOnlyMandatoryFields() {
|
||||||
OllamaChatRequestModel req = builder.withMessage(OllamaChatMessageRole.USER, "Some prompt").build();
|
OllamaChatRequestModel req = builder.withMessage(OllamaChatMessageRole.USER, "Some prompt").build();
|
||||||
String jsonRequest = serializeRequest(req);
|
String jsonRequest = serialize(req);
|
||||||
assertEqualsAfterUnmarshalling(deserializeRequest(jsonRequest,OllamaChatRequestModel.class), req);
|
assertEqualsAfterUnmarshalling(deserialize(jsonRequest,OllamaChatRequestModel.class), req);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
@ -35,16 +35,16 @@ public class TestChatRequestSerialization extends AbstractRequestSerializationTe
|
|||||||
OllamaChatRequestModel req = builder.withMessage(OllamaChatMessageRole.SYSTEM, "System prompt")
|
OllamaChatRequestModel req = builder.withMessage(OllamaChatMessageRole.SYSTEM, "System prompt")
|
||||||
.withMessage(OllamaChatMessageRole.USER, "Some prompt")
|
.withMessage(OllamaChatMessageRole.USER, "Some prompt")
|
||||||
.build();
|
.build();
|
||||||
String jsonRequest = serializeRequest(req);
|
String jsonRequest = serialize(req);
|
||||||
assertEqualsAfterUnmarshalling(deserializeRequest(jsonRequest,OllamaChatRequestModel.class), req);
|
assertEqualsAfterUnmarshalling(deserialize(jsonRequest,OllamaChatRequestModel.class), req);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testRequestWithMessageAndImage() {
|
public void testRequestWithMessageAndImage() {
|
||||||
OllamaChatRequestModel req = builder.withMessage(OllamaChatMessageRole.USER, "Some prompt",
|
OllamaChatRequestModel req = builder.withMessage(OllamaChatMessageRole.USER, "Some prompt",
|
||||||
List.of(new File("src/test/resources/dog-on-a-boat.jpg"))).build();
|
List.of(new File("src/test/resources/dog-on-a-boat.jpg"))).build();
|
||||||
String jsonRequest = serializeRequest(req);
|
String jsonRequest = serialize(req);
|
||||||
assertEqualsAfterUnmarshalling(deserializeRequest(jsonRequest,OllamaChatRequestModel.class), req);
|
assertEqualsAfterUnmarshalling(deserialize(jsonRequest,OllamaChatRequestModel.class), req);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
@ -61,8 +61,8 @@ public class TestChatRequestSerialization extends AbstractRequestSerializationTe
|
|||||||
.withOptions(b.setTopP(1).build())
|
.withOptions(b.setTopP(1).build())
|
||||||
.build();
|
.build();
|
||||||
|
|
||||||
String jsonRequest = serializeRequest(req);
|
String jsonRequest = serialize(req);
|
||||||
OllamaChatRequestModel deserializeRequest = deserializeRequest(jsonRequest, OllamaChatRequestModel.class);
|
OllamaChatRequestModel deserializeRequest = deserialize(jsonRequest, OllamaChatRequestModel.class);
|
||||||
assertEqualsAfterUnmarshalling(deserializeRequest, req);
|
assertEqualsAfterUnmarshalling(deserializeRequest, req);
|
||||||
assertEquals(1, deserializeRequest.getOptions().get("mirostat"));
|
assertEquals(1, deserializeRequest.getOptions().get("mirostat"));
|
||||||
assertEquals(1.0, deserializeRequest.getOptions().get("temperature"));
|
assertEquals(1.0, deserializeRequest.getOptions().get("temperature"));
|
||||||
@ -79,7 +79,7 @@ public class TestChatRequestSerialization extends AbstractRequestSerializationTe
|
|||||||
OllamaChatRequestModel req = builder.withMessage(OllamaChatMessageRole.USER, "Some prompt")
|
OllamaChatRequestModel req = builder.withMessage(OllamaChatMessageRole.USER, "Some prompt")
|
||||||
.withGetJsonResponse().build();
|
.withGetJsonResponse().build();
|
||||||
|
|
||||||
String jsonRequest = serializeRequest(req);
|
String jsonRequest = serialize(req);
|
||||||
// no jackson deserialization as format property is not boolean ==> omit as deserialization
|
// no jackson deserialization as format property is not boolean ==> omit as deserialization
|
||||||
// of request is never used in real code anyways
|
// of request is never used in real code anyways
|
||||||
JSONObject jsonObject = new JSONObject(jsonRequest);
|
JSONObject jsonObject = new JSONObject(jsonRequest);
|
||||||
@ -91,15 +91,15 @@ public class TestChatRequestSerialization extends AbstractRequestSerializationTe
|
|||||||
public void testWithTemplate() {
|
public void testWithTemplate() {
|
||||||
OllamaChatRequestModel req = builder.withTemplate("System Template")
|
OllamaChatRequestModel req = builder.withTemplate("System Template")
|
||||||
.build();
|
.build();
|
||||||
String jsonRequest = serializeRequest(req);
|
String jsonRequest = serialize(req);
|
||||||
assertEqualsAfterUnmarshalling(deserializeRequest(jsonRequest, OllamaChatRequestModel.class), req);
|
assertEqualsAfterUnmarshalling(deserialize(jsonRequest, OllamaChatRequestModel.class), req);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testWithStreaming() {
|
public void testWithStreaming() {
|
||||||
OllamaChatRequestModel req = builder.withStreaming().build();
|
OllamaChatRequestModel req = builder.withStreaming().build();
|
||||||
String jsonRequest = serializeRequest(req);
|
String jsonRequest = serialize(req);
|
||||||
assertEquals(deserializeRequest(jsonRequest, OllamaChatRequestModel.class).isStream(), true);
|
assertEquals(deserialize(jsonRequest, OllamaChatRequestModel.class).isStream(), true);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
@ -107,7 +107,7 @@ public class TestChatRequestSerialization extends AbstractRequestSerializationTe
|
|||||||
String expectedKeepAlive = "5m";
|
String expectedKeepAlive = "5m";
|
||||||
OllamaChatRequestModel req = builder.withKeepAlive(expectedKeepAlive)
|
OllamaChatRequestModel req = builder.withKeepAlive(expectedKeepAlive)
|
||||||
.build();
|
.build();
|
||||||
String jsonRequest = serializeRequest(req);
|
String jsonRequest = serialize(req);
|
||||||
assertEquals(deserializeRequest(jsonRequest, OllamaChatRequestModel.class).getKeepAlive(), expectedKeepAlive);
|
assertEquals(deserialize(jsonRequest, OllamaChatRequestModel.class).getKeepAlive(), expectedKeepAlive);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -7,7 +7,7 @@ import io.github.amithkoujalgi.ollama4j.core.models.embeddings.OllamaEmbeddingsR
|
|||||||
import io.github.amithkoujalgi.ollama4j.core.models.embeddings.OllamaEmbeddingsRequestBuilder;
|
import io.github.amithkoujalgi.ollama4j.core.models.embeddings.OllamaEmbeddingsRequestBuilder;
|
||||||
import io.github.amithkoujalgi.ollama4j.core.utils.OptionsBuilder;
|
import io.github.amithkoujalgi.ollama4j.core.utils.OptionsBuilder;
|
||||||
|
|
||||||
public class TestEmbeddingsRequestSerialization extends AbstractRequestSerializationTest<OllamaEmbeddingsRequestModel>{
|
public class TestEmbeddingsRequestSerialization extends AbstractSerializationTest<OllamaEmbeddingsRequestModel> {
|
||||||
|
|
||||||
private OllamaEmbeddingsRequestBuilder builder;
|
private OllamaEmbeddingsRequestBuilder builder;
|
||||||
|
|
||||||
@ -19,8 +19,8 @@ public class TestEmbeddingsRequestSerialization extends AbstractRequestSerializa
|
|||||||
@Test
|
@Test
|
||||||
public void testRequestOnlyMandatoryFields() {
|
public void testRequestOnlyMandatoryFields() {
|
||||||
OllamaEmbeddingsRequestModel req = builder.build();
|
OllamaEmbeddingsRequestModel req = builder.build();
|
||||||
String jsonRequest = serializeRequest(req);
|
String jsonRequest = serialize(req);
|
||||||
assertEqualsAfterUnmarshalling(deserializeRequest(jsonRequest,OllamaEmbeddingsRequestModel.class), req);
|
assertEqualsAfterUnmarshalling(deserialize(jsonRequest,OllamaEmbeddingsRequestModel.class), req);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
@ -29,8 +29,8 @@ public class TestEmbeddingsRequestSerialization extends AbstractRequestSerializa
|
|||||||
OllamaEmbeddingsRequestModel req = builder
|
OllamaEmbeddingsRequestModel req = builder
|
||||||
.withOptions(b.setMirostat(1).build()).build();
|
.withOptions(b.setMirostat(1).build()).build();
|
||||||
|
|
||||||
String jsonRequest = serializeRequest(req);
|
String jsonRequest = serialize(req);
|
||||||
OllamaEmbeddingsRequestModel deserializeRequest = deserializeRequest(jsonRequest,OllamaEmbeddingsRequestModel.class);
|
OllamaEmbeddingsRequestModel deserializeRequest = deserialize(jsonRequest,OllamaEmbeddingsRequestModel.class);
|
||||||
assertEqualsAfterUnmarshalling(deserializeRequest, req);
|
assertEqualsAfterUnmarshalling(deserializeRequest, req);
|
||||||
assertEquals(1, deserializeRequest.getOptions().get("mirostat"));
|
assertEquals(1, deserializeRequest.getOptions().get("mirostat"));
|
||||||
}
|
}
|
||||||
|
@ -11,7 +11,7 @@ import io.github.amithkoujalgi.ollama4j.core.models.generate.OllamaGenerateReque
|
|||||||
import io.github.amithkoujalgi.ollama4j.core.models.generate.OllamaGenerateRequestModel;
|
import io.github.amithkoujalgi.ollama4j.core.models.generate.OllamaGenerateRequestModel;
|
||||||
import io.github.amithkoujalgi.ollama4j.core.utils.OptionsBuilder;
|
import io.github.amithkoujalgi.ollama4j.core.utils.OptionsBuilder;
|
||||||
|
|
||||||
public class TestGenerateRequestSerialization extends AbstractRequestSerializationTest<OllamaGenerateRequestModel>{
|
public class TestGenerateRequestSerialization extends AbstractSerializationTest<OllamaGenerateRequestModel> {
|
||||||
|
|
||||||
private OllamaGenerateRequestBuilder builder;
|
private OllamaGenerateRequestBuilder builder;
|
||||||
|
|
||||||
@ -24,8 +24,8 @@ public class TestGenerateRequestSerialization extends AbstractRequestSerializati
|
|||||||
public void testRequestOnlyMandatoryFields() {
|
public void testRequestOnlyMandatoryFields() {
|
||||||
OllamaGenerateRequestModel req = builder.withPrompt("Some prompt").build();
|
OllamaGenerateRequestModel req = builder.withPrompt("Some prompt").build();
|
||||||
|
|
||||||
String jsonRequest = serializeRequest(req);
|
String jsonRequest = serialize(req);
|
||||||
assertEqualsAfterUnmarshalling(deserializeRequest(jsonRequest, OllamaGenerateRequestModel.class), req);
|
assertEqualsAfterUnmarshalling(deserialize(jsonRequest, OllamaGenerateRequestModel.class), req);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
@ -34,8 +34,8 @@ public class TestGenerateRequestSerialization extends AbstractRequestSerializati
|
|||||||
OllamaGenerateRequestModel req =
|
OllamaGenerateRequestModel req =
|
||||||
builder.withPrompt("Some prompt").withOptions(b.setMirostat(1).build()).build();
|
builder.withPrompt("Some prompt").withOptions(b.setMirostat(1).build()).build();
|
||||||
|
|
||||||
String jsonRequest = serializeRequest(req);
|
String jsonRequest = serialize(req);
|
||||||
OllamaGenerateRequestModel deserializeRequest = deserializeRequest(jsonRequest, OllamaGenerateRequestModel.class);
|
OllamaGenerateRequestModel deserializeRequest = deserialize(jsonRequest, OllamaGenerateRequestModel.class);
|
||||||
assertEqualsAfterUnmarshalling(deserializeRequest, req);
|
assertEqualsAfterUnmarshalling(deserializeRequest, req);
|
||||||
assertEquals(1, deserializeRequest.getOptions().get("mirostat"));
|
assertEquals(1, deserializeRequest.getOptions().get("mirostat"));
|
||||||
}
|
}
|
||||||
@ -45,7 +45,7 @@ public class TestGenerateRequestSerialization extends AbstractRequestSerializati
|
|||||||
OllamaGenerateRequestModel req =
|
OllamaGenerateRequestModel req =
|
||||||
builder.withPrompt("Some prompt").withGetJsonResponse().build();
|
builder.withPrompt("Some prompt").withGetJsonResponse().build();
|
||||||
|
|
||||||
String jsonRequest = serializeRequest(req);
|
String jsonRequest = serialize(req);
|
||||||
// no jackson deserialization as format property is not boolean ==> omit as deserialization
|
// no jackson deserialization as format property is not boolean ==> omit as deserialization
|
||||||
// of request is never used in real code anyways
|
// of request is never used in real code anyways
|
||||||
JSONObject jsonObject = new JSONObject(jsonRequest);
|
JSONObject jsonObject = new JSONObject(jsonRequest);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user