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:
AgentSchmecker 2024-05-20 11:08:49 +00:00
parent 54edba144c
commit 9c6a55f7b0
4 changed files with 35 additions and 35 deletions

View File

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

View File

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

View File

@ -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"));
} }

View File

@ -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);