mirror of https://github.com/dapr/java-sdk.git
Add better tests
Signed-off-by: siri-varma <siri.varma@outlook.com>
This commit is contained in:
parent
57fad34c1a
commit
7946fee3c1
|
|
@ -1715,6 +1715,10 @@ public class DaprClientImpl extends AbstractDaprClient {
|
||||||
throw new IllegalArgumentException("LLM name cannot be null or empty.");
|
throw new IllegalArgumentException("LLM name cannot be null or empty.");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (conversationRequestAlpha2.getInputs() == null || conversationRequestAlpha2.getInputs().isEmpty()) {
|
||||||
|
throw new IllegalArgumentException("Conversation Inputs cannot be null or empty.");
|
||||||
|
}
|
||||||
|
|
||||||
DaprProtos.ConversationRequestAlpha2.Builder builder = DaprProtos.ConversationRequestAlpha2
|
DaprProtos.ConversationRequestAlpha2.Builder builder = DaprProtos.ConversationRequestAlpha2
|
||||||
.newBuilder()
|
.newBuilder()
|
||||||
.setTemperature(conversationRequestAlpha2.getTemperature())
|
.setTemperature(conversationRequestAlpha2.getTemperature())
|
||||||
|
|
@ -1776,21 +1780,19 @@ public class DaprClientImpl extends AbstractDaprClient {
|
||||||
builder.putAllParameters(parameters);
|
builder.putAllParameters(parameters);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (request.getInputs() != null) {
|
for (ConversationInputAlpha2 input : request.getInputs()) {
|
||||||
for (ConversationInputAlpha2 input : request.getInputs()) {
|
DaprProtos.ConversationInputAlpha2.Builder inputBuilder = DaprProtos.ConversationInputAlpha2
|
||||||
DaprProtos.ConversationInputAlpha2.Builder inputBuilder = DaprProtos.ConversationInputAlpha2
|
.newBuilder()
|
||||||
.newBuilder()
|
.setScrubPii(input.isScrubPii());
|
||||||
.setScrubPii(input.isScrubPii());
|
|
||||||
|
|
||||||
if (input.getMessages() != null) {
|
if (input.getMessages() != null) {
|
||||||
for (ConversationMessage message : input.getMessages()) {
|
for (ConversationMessage message : input.getMessages()) {
|
||||||
DaprProtos.ConversationMessage protoMessage = buildConversationMessage(message);
|
DaprProtos.ConversationMessage protoMessage = buildConversationMessage(message);
|
||||||
inputBuilder.addMessages(protoMessage);
|
inputBuilder.addMessages(protoMessage);
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
builder.addInputs(inputBuilder.build());
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
builder.addInputs(inputBuilder.build());
|
||||||
}
|
}
|
||||||
|
|
||||||
return builder.build();
|
return builder.build();
|
||||||
|
|
@ -1945,9 +1947,7 @@ public class DaprClientImpl extends AbstractDaprClient {
|
||||||
toolCalls.add(conversationToolCalls);
|
toolCalls.add(conversationToolCalls);
|
||||||
}
|
}
|
||||||
|
|
||||||
return new ConversationResultMessage(
|
return new ConversationResultMessage(protoChoice.getMessage().getContent(), toolCalls
|
||||||
protoChoice.getMessage().getContent(),
|
|
||||||
toolCalls
|
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -31,8 +31,8 @@ public class AssistantMessage implements ConversationMessage {
|
||||||
* @param toolCalls the tool calls requested by the assistant.
|
* @param toolCalls the tool calls requested by the assistant.
|
||||||
*/
|
*/
|
||||||
public AssistantMessage(List<ConversationMessageContent> content, List<ConversationToolCalls> toolCalls) {
|
public AssistantMessage(List<ConversationMessageContent> content, List<ConversationToolCalls> toolCalls) {
|
||||||
this.content = content != null ? List.copyOf(content) : null;
|
this.content = List.copyOf(content);
|
||||||
this.toolCalls = toolCalls != null ? List.copyOf(toolCalls) : null;
|
this.toolCalls = List.copyOf(toolCalls);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|
|
||||||
|
|
@ -30,7 +30,7 @@ public class DeveloperMessage implements ConversationMessage {
|
||||||
* @param content the content of the developer message
|
* @param content the content of the developer message
|
||||||
*/
|
*/
|
||||||
public DeveloperMessage(List<ConversationMessageContent> content) {
|
public DeveloperMessage(List<ConversationMessageContent> content) {
|
||||||
this.content = content != null ? List.copyOf(content) : null;
|
this.content = List.copyOf(content);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|
|
||||||
|
|
@ -30,7 +30,7 @@ public class SystemMessage implements ConversationMessage {
|
||||||
* @param content the content of the system message
|
* @param content the content of the system message
|
||||||
*/
|
*/
|
||||||
public SystemMessage(List<ConversationMessageContent> content) {
|
public SystemMessage(List<ConversationMessageContent> content) {
|
||||||
this.content = content != null ? List.copyOf(content) : null;
|
this.content = List.copyOf(content);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|
|
||||||
|
|
@ -31,7 +31,7 @@ public class ToolMessage implements ConversationMessage {
|
||||||
* @param content the content containing the tool execution result
|
* @param content the content containing the tool execution result
|
||||||
*/
|
*/
|
||||||
public ToolMessage(List<ConversationMessageContent> content) {
|
public ToolMessage(List<ConversationMessageContent> content) {
|
||||||
this.content = content != null ? List.copyOf(content) : null;
|
this.content = List.copyOf(content);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|
|
||||||
|
|
@ -30,7 +30,7 @@ public class UserMessage implements ConversationMessage {
|
||||||
* @param content the content of the user message
|
* @param content the content of the user message
|
||||||
*/
|
*/
|
||||||
public UserMessage(List<ConversationMessageContent> content) {
|
public UserMessage(List<ConversationMessageContent> content) {
|
||||||
this.content = content != null ? List.copyOf(content) : null;
|
this.content = List.copyOf(content);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|
|
||||||
|
|
@ -16,6 +16,7 @@ package io.dapr.client;
|
||||||
|
|
||||||
import com.fasterxml.jackson.core.JsonProcessingException;
|
import com.fasterxml.jackson.core.JsonProcessingException;
|
||||||
import com.fasterxml.jackson.databind.ObjectMapper;
|
import com.fasterxml.jackson.databind.ObjectMapper;
|
||||||
|
import com.google.common.collect.Lists;
|
||||||
import com.google.protobuf.Any;
|
import com.google.protobuf.Any;
|
||||||
import com.google.protobuf.ByteString;
|
import com.google.protobuf.ByteString;
|
||||||
import io.dapr.client.domain.AssistantMessage;
|
import io.dapr.client.domain.AssistantMessage;
|
||||||
|
|
@ -1347,7 +1348,14 @@ public class DaprPreviewClientGrpcTest {
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void converseAlpha2ShouldThrowIllegalArgumentExceptionWhenNameIsNull() {
|
public void converseAlpha2ShouldThrowIllegalArgumentExceptionWhenNameIsNull() {
|
||||||
ConversationRequestAlpha2 request = new ConversationRequestAlpha2(null, null);
|
List<ConversationMessage> messages = new ArrayList<>();
|
||||||
|
SystemMessage systemMsg = new SystemMessage(List.of(new ConversationMessageContent("System info")));
|
||||||
|
systemMsg.setName("system");
|
||||||
|
messages.add(systemMsg);
|
||||||
|
|
||||||
|
ConversationInputAlpha2 input = new ConversationInputAlpha2(messages);
|
||||||
|
|
||||||
|
ConversationRequestAlpha2 request = new ConversationRequestAlpha2(null, List.of(input));
|
||||||
|
|
||||||
IllegalArgumentException exception = assertThrows(IllegalArgumentException.class, () ->
|
IllegalArgumentException exception = assertThrows(IllegalArgumentException.class, () ->
|
||||||
previewClient.converseAlpha2(request).block());
|
previewClient.converseAlpha2(request).block());
|
||||||
|
|
@ -1356,7 +1364,14 @@ public class DaprPreviewClientGrpcTest {
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void converseAlpha2ShouldThrowIllegalArgumentExceptionWhenNameIsEmpty() {
|
public void converseAlpha2ShouldThrowIllegalArgumentExceptionWhenNameIsEmpty() {
|
||||||
ConversationRequestAlpha2 request = new ConversationRequestAlpha2("", null);
|
List<ConversationMessage> messages = new ArrayList<>();
|
||||||
|
SystemMessage systemMsg = new SystemMessage(List.of(new ConversationMessageContent("System info")));
|
||||||
|
systemMsg.setName("system");
|
||||||
|
messages.add(systemMsg);
|
||||||
|
|
||||||
|
ConversationInputAlpha2 input = new ConversationInputAlpha2(messages);
|
||||||
|
|
||||||
|
ConversationRequestAlpha2 request = new ConversationRequestAlpha2("", List.of(input));
|
||||||
|
|
||||||
IllegalArgumentException exception = assertThrows(IllegalArgumentException.class, () ->
|
IllegalArgumentException exception = assertThrows(IllegalArgumentException.class, () ->
|
||||||
previewClient.converseAlpha2(request).block());
|
previewClient.converseAlpha2(request).block());
|
||||||
|
|
@ -1365,6 +1380,13 @@ public class DaprPreviewClientGrpcTest {
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void converseAlpha2ShouldThrowIllegalArgumentExceptionWhenNameIsWhitespace() {
|
public void converseAlpha2ShouldThrowIllegalArgumentExceptionWhenNameIsWhitespace() {
|
||||||
|
List<ConversationMessage> messages = new ArrayList<>();
|
||||||
|
SystemMessage systemMsg = new SystemMessage(List.of(new ConversationMessageContent("System info")));
|
||||||
|
systemMsg.setName("system");
|
||||||
|
messages.add(systemMsg);
|
||||||
|
|
||||||
|
ConversationInputAlpha2 input = new ConversationInputAlpha2(messages);
|
||||||
|
|
||||||
ConversationRequestAlpha2 request = new ConversationRequestAlpha2(" ", null);
|
ConversationRequestAlpha2 request = new ConversationRequestAlpha2(" ", null);
|
||||||
|
|
||||||
IllegalArgumentException exception = assertThrows(IllegalArgumentException.class, () ->
|
IllegalArgumentException exception = assertThrows(IllegalArgumentException.class, () ->
|
||||||
|
|
@ -1372,6 +1394,24 @@ public class DaprPreviewClientGrpcTest {
|
||||||
assertEquals("LLM name cannot be null or empty.", exception.getMessage());
|
assertEquals("LLM name cannot be null or empty.", exception.getMessage());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void converseAlpha2ShouldThrowIllegalArgumentExceptionWhenInputIsNull() {
|
||||||
|
ConversationRequestAlpha2 request = new ConversationRequestAlpha2("abc", null);
|
||||||
|
|
||||||
|
IllegalArgumentException exception = assertThrows(IllegalArgumentException.class, () ->
|
||||||
|
previewClient.converseAlpha2(request).block());
|
||||||
|
assertEquals("LLM name cannot be null or empty.", exception.getMessage());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void converseAlpha2ShouldThrowIllegalArgumentExceptionWhenInputIsEmpty() {
|
||||||
|
ConversationRequestAlpha2 request = new ConversationRequestAlpha2("abc", new ArrayList<>());
|
||||||
|
|
||||||
|
IllegalArgumentException exception = assertThrows(IllegalArgumentException.class, () ->
|
||||||
|
previewClient.converseAlpha2(request).block());
|
||||||
|
assertEquals("LLM name cannot be null or empty.", exception.getMessage());
|
||||||
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void converseAlpha2ExceptionThrownTest() {
|
public void converseAlpha2ExceptionThrownTest() {
|
||||||
doAnswer((Answer<Void>) invocation -> {
|
doAnswer((Answer<Void>) invocation -> {
|
||||||
|
|
@ -1380,11 +1420,7 @@ public class DaprPreviewClientGrpcTest {
|
||||||
|
|
||||||
ConversationRequestAlpha2 request = new ConversationRequestAlpha2("openai", null);
|
ConversationRequestAlpha2 request = new ConversationRequestAlpha2("openai", null);
|
||||||
|
|
||||||
assertThrowsDaprException(
|
assertThrows(IllegalArgumentException.class, () -> previewClient.converseAlpha2(request).block());
|
||||||
StatusRuntimeException.class,
|
|
||||||
"INVALID_ARGUMENT",
|
|
||||||
"INVALID_ARGUMENT: bad argument",
|
|
||||||
() -> previewClient.converseAlpha2(request).block());
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
|
|
@ -1396,7 +1432,14 @@ public class DaprPreviewClientGrpcTest {
|
||||||
return null;
|
return null;
|
||||||
}).when(daprStub).converseAlpha2(any(DaprProtos.ConversationRequestAlpha2.class), any());
|
}).when(daprStub).converseAlpha2(any(DaprProtos.ConversationRequestAlpha2.class), any());
|
||||||
|
|
||||||
ConversationRequestAlpha2 request = new ConversationRequestAlpha2("openai", null);
|
List<ConversationMessage> messages = new ArrayList<>();
|
||||||
|
SystemMessage systemMsg = new SystemMessage(List.of(new ConversationMessageContent("System info")));
|
||||||
|
systemMsg.setName("system");
|
||||||
|
messages.add(systemMsg);
|
||||||
|
|
||||||
|
ConversationInputAlpha2 input = new ConversationInputAlpha2(messages);
|
||||||
|
|
||||||
|
ConversationRequestAlpha2 request = new ConversationRequestAlpha2("openai", List.of(input));
|
||||||
Mono<ConversationResponseAlpha2> result = previewClient.converseAlpha2(request);
|
Mono<ConversationResponseAlpha2> result = previewClient.converseAlpha2(request);
|
||||||
|
|
||||||
assertThrowsDaprException(
|
assertThrowsDaprException(
|
||||||
|
|
@ -1429,7 +1472,14 @@ public class DaprPreviewClientGrpcTest {
|
||||||
return null;
|
return null;
|
||||||
}).when(daprStub).converseAlpha2(any(DaprProtos.ConversationRequestAlpha2.class), any());
|
}).when(daprStub).converseAlpha2(any(DaprProtos.ConversationRequestAlpha2.class), any());
|
||||||
|
|
||||||
ConversationRequestAlpha2 request = new ConversationRequestAlpha2("openai", null);
|
List<ConversationMessage> messages = new ArrayList<>();
|
||||||
|
DeveloperMessage devMsg = new DeveloperMessage(List.of(new ConversationMessageContent("Debug info")));
|
||||||
|
devMsg.setName("developer");
|
||||||
|
messages.add(devMsg);
|
||||||
|
|
||||||
|
ConversationInputAlpha2 input = new ConversationInputAlpha2(messages);
|
||||||
|
|
||||||
|
ConversationRequestAlpha2 request = new ConversationRequestAlpha2("openai", List.of(input));
|
||||||
ConversationResponseAlpha2 response = previewClient.converseAlpha2(request).block();
|
ConversationResponseAlpha2 response = previewClient.converseAlpha2(request).block();
|
||||||
|
|
||||||
assertNotNull(response);
|
assertNotNull(response);
|
||||||
|
|
@ -1618,42 +1668,16 @@ public class DaprPreviewClientGrpcTest {
|
||||||
assertTrue(capturedMessages.get(4).hasOfDeveloper());
|
assertTrue(capturedMessages.get(4).hasOfDeveloper());
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
|
||||||
public void converseAlpha2EmptyInputsTest() {
|
|
||||||
ConversationRequestAlpha2 request = new ConversationRequestAlpha2("openai", new ArrayList<>());
|
|
||||||
|
|
||||||
DaprProtos.ConversationResponseAlpha2 grpcResponse = DaprProtos.ConversationResponseAlpha2.newBuilder()
|
|
||||||
.addOutputs(DaprProtos.ConversationResultAlpha2.newBuilder()
|
|
||||||
.addChoices(DaprProtos.ConversationResultChoices.newBuilder()
|
|
||||||
.setFinishReason("stop")
|
|
||||||
.setIndex(0)
|
|
||||||
.build())
|
|
||||||
.build())
|
|
||||||
.build();
|
|
||||||
|
|
||||||
doAnswer((Answer<Void>) invocation -> {
|
|
||||||
StreamObserver<DaprProtos.ConversationResponseAlpha2> observer =
|
|
||||||
(StreamObserver<DaprProtos.ConversationResponseAlpha2>) invocation.getArguments()[1];
|
|
||||||
observer.onNext(grpcResponse);
|
|
||||||
observer.onCompleted();
|
|
||||||
return null;
|
|
||||||
}).when(daprStub).converseAlpha2(any(DaprProtos.ConversationRequestAlpha2.class), any());
|
|
||||||
|
|
||||||
ConversationResponseAlpha2 response = previewClient.converseAlpha2(request).block();
|
|
||||||
|
|
||||||
assertNotNull(response);
|
|
||||||
|
|
||||||
ArgumentCaptor<DaprProtos.ConversationRequestAlpha2> captor =
|
|
||||||
ArgumentCaptor.forClass(DaprProtos.ConversationRequestAlpha2.class);
|
|
||||||
verify(daprStub).converseAlpha2(captor.capture(), any());
|
|
||||||
|
|
||||||
DaprProtos.ConversationRequestAlpha2 capturedRequest = captor.getValue();
|
|
||||||
assertEquals(0, capturedRequest.getInputsCount());
|
|
||||||
}
|
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void converseAlpha2ResponseWithoutMessageTest() {
|
public void converseAlpha2ResponseWithoutMessageTest() {
|
||||||
ConversationRequestAlpha2 request = new ConversationRequestAlpha2("openai", null);
|
List<ConversationMessage> messages = new ArrayList<>();
|
||||||
|
DeveloperMessage devMsg = new DeveloperMessage(List.of(new ConversationMessageContent("Debug info")));
|
||||||
|
devMsg.setName("developer");
|
||||||
|
messages.add(devMsg);
|
||||||
|
|
||||||
|
ConversationInputAlpha2 input = new ConversationInputAlpha2(messages);
|
||||||
|
|
||||||
|
ConversationRequestAlpha2 request = new ConversationRequestAlpha2("openai", List.of(input));
|
||||||
|
|
||||||
DaprProtos.ConversationResponseAlpha2 grpcResponse = DaprProtos.ConversationResponseAlpha2.newBuilder()
|
DaprProtos.ConversationResponseAlpha2 grpcResponse = DaprProtos.ConversationResponseAlpha2.newBuilder()
|
||||||
.addOutputs(DaprProtos.ConversationResultAlpha2.newBuilder()
|
.addOutputs(DaprProtos.ConversationResultAlpha2.newBuilder()
|
||||||
|
|
@ -1684,7 +1708,14 @@ public class DaprPreviewClientGrpcTest {
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void converseAlpha2MultipleResultsTest() {
|
public void converseAlpha2MultipleResultsTest() {
|
||||||
ConversationRequestAlpha2 request = new ConversationRequestAlpha2("openai", null);
|
List<ConversationMessage> messages = new ArrayList<>();
|
||||||
|
DeveloperMessage devMsg = new DeveloperMessage(List.of(new ConversationMessageContent("Debug info")));
|
||||||
|
devMsg.setName("developer");
|
||||||
|
messages.add(devMsg);
|
||||||
|
|
||||||
|
ConversationInputAlpha2 input = new ConversationInputAlpha2(messages);
|
||||||
|
|
||||||
|
ConversationRequestAlpha2 request = new ConversationRequestAlpha2("openai", List.of(input));
|
||||||
|
|
||||||
DaprProtos.ConversationResponseAlpha2 grpcResponse = DaprProtos.ConversationResponseAlpha2.newBuilder()
|
DaprProtos.ConversationResponseAlpha2 grpcResponse = DaprProtos.ConversationResponseAlpha2.newBuilder()
|
||||||
.addOutputs(DaprProtos.ConversationResultAlpha2.newBuilder()
|
.addOutputs(DaprProtos.ConversationResultAlpha2.newBuilder()
|
||||||
|
|
@ -1741,8 +1772,14 @@ public class DaprPreviewClientGrpcTest {
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void converseAlpha2ToolCallWithoutFunctionTest() {
|
public void converseAlpha2ToolCallWithoutFunctionTest() {
|
||||||
ConversationRequestAlpha2 request = new ConversationRequestAlpha2("openai", null);
|
List<ConversationMessage> messages = new ArrayList<>();
|
||||||
|
UserMessage userMsg = new UserMessage(List.of(new ConversationMessageContent("Debug info")));
|
||||||
|
userMsg.setName("developer");
|
||||||
|
messages.add(userMsg);
|
||||||
|
|
||||||
|
ConversationInputAlpha2 input = new ConversationInputAlpha2(messages);
|
||||||
|
|
||||||
|
ConversationRequestAlpha2 request = new ConversationRequestAlpha2("openai", List.of(input));
|
||||||
DaprProtos.ConversationResponseAlpha2 grpcResponse = DaprProtos.ConversationResponseAlpha2.newBuilder()
|
DaprProtos.ConversationResponseAlpha2 grpcResponse = DaprProtos.ConversationResponseAlpha2.newBuilder()
|
||||||
.addOutputs(DaprProtos.ConversationResultAlpha2.newBuilder()
|
.addOutputs(DaprProtos.ConversationResultAlpha2.newBuilder()
|
||||||
.addChoices(DaprProtos.ConversationResultChoices.newBuilder()
|
.addChoices(DaprProtos.ConversationResultChoices.newBuilder()
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue