diff --git a/sdk/openai/azure-ai-openai/src/test/java/com/azure/ai/openai/NonAzureOpenAIAsyncClientTest.java b/sdk/openai/azure-ai-openai/src/test/java/com/azure/ai/openai/NonAzureOpenAIAsyncClientTest.java index ab344d00c380..0e86bd1e3452 100644 --- a/sdk/openai/azure-ai-openai/src/test/java/com/azure/ai/openai/NonAzureOpenAIAsyncClientTest.java +++ b/sdk/openai/azure-ai-openai/src/test/java/com/azure/ai/openai/NonAzureOpenAIAsyncClientTest.java @@ -17,6 +17,7 @@ import com.azure.ai.openai.models.ChatCompletionsFunctionToolSelection; import com.azure.ai.openai.models.ChatCompletionsNamedFunctionToolSelection; import com.azure.ai.openai.models.ChatCompletionsOptions; +import com.azure.ai.openai.models.ChatCompletionStreamOptions; import com.azure.ai.openai.models.ChatCompletionsToolCall; import com.azure.ai.openai.models.ChatCompletionsToolSelection; import com.azure.ai.openai.models.ChatCompletionsToolSelectionPreset; @@ -2131,4 +2132,32 @@ public void testListBatchesFailure(HttpClient httpClient, OpenAIServiceVersion s assertNotNull(httpResponseException.getMessage()); }); } + + @ParameterizedTest(name = DISPLAY_NAME_WITH_ARGUMENTS) + @MethodSource("com.azure.ai.openai.TestUtils#getTestParameters") + public void testGetCompletionsStreamEmitsValues(HttpClient httpClient, OpenAIServiceVersion serviceVersion) { + client = getNonAzureOpenAIAsyncClient(httpClient); + + getCompletionsRunnerForNonAzure((deploymentId, prompt) -> { + StepVerifier.create(client.getCompletionsStream(deploymentId, new CompletionsOptions(prompt), + new ChatCompletionStreamOptions())).recordWith(ArrayList::new).thenConsumeWhile(completion -> { + assertNotNull(completion); + return true; + }).consumeRecordedWith(messageList -> assertFalse(messageList.isEmpty())).verifyComplete(); + }); + } + + @ParameterizedTest(name = DISPLAY_NAME_WITH_ARGUMENTS) + @MethodSource("com.azure.ai.openai.TestUtils#getTestParameters") + public void testGetChatCompletionsStreamEmitsValues(HttpClient httpClient, OpenAIServiceVersion serviceVersion) { + client = getNonAzureOpenAIAsyncClient(httpClient); + + getChatCompletionsRunnerForNonAzure((deploymentId, prompt) -> { + StepVerifier.create(client.getChatCompletionsStream(deploymentId, new ChatCompletionsOptions(prompt), + new ChatCompletionStreamOptions())).recordWith(ArrayList::new).thenConsumeWhile(chatCompletion -> { + assertNotNull(chatCompletion); + return true; + }).consumeRecordedWith(messageList -> assertFalse(messageList.isEmpty())).verifyComplete(); + }); + } } diff --git a/sdk/openai/azure-ai-openai/src/test/java/com/azure/ai/openai/NonAzureOpenAISyncClientTest.java b/sdk/openai/azure-ai-openai/src/test/java/com/azure/ai/openai/NonAzureOpenAISyncClientTest.java index 6b32ca738151..d5086081d859 100644 --- a/sdk/openai/azure-ai-openai/src/test/java/com/azure/ai/openai/NonAzureOpenAISyncClientTest.java +++ b/sdk/openai/azure-ai-openai/src/test/java/com/azure/ai/openai/NonAzureOpenAISyncClientTest.java @@ -19,6 +19,7 @@ import com.azure.ai.openai.models.ChatCompletionsFunctionToolSelection; import com.azure.ai.openai.models.ChatCompletionsNamedFunctionToolSelection; import com.azure.ai.openai.models.ChatCompletionsOptions; +import com.azure.ai.openai.models.ChatCompletionStreamOptions; import com.azure.ai.openai.models.ChatCompletionsToolCall; import com.azure.ai.openai.models.ChatCompletionsToolSelection; import com.azure.ai.openai.models.ChatCompletionsToolSelectionPreset; @@ -52,6 +53,7 @@ import com.azure.core.util.BinaryData; import com.azure.core.util.CoreUtils; import com.azure.core.util.IterableStream; +import org.junit.jupiter.api.Assertions; import org.junit.jupiter.params.ParameterizedTest; import org.junit.jupiter.params.provider.MethodSource; @@ -1796,4 +1798,30 @@ public void testListBatchesFailure(HttpClient httpClient, OpenAIServiceVersion s assertEquals(400, exception.getResponse().getStatusCode()); assertNotNull(exception.getMessage()); } + + @ParameterizedTest(name = DISPLAY_NAME_WITH_ARGUMENTS) + @MethodSource("com.azure.ai.openai.TestUtils#getTestParameters") + public void testGetCompletionsStreamEmitsValues(HttpClient httpClient, OpenAIServiceVersion serviceVersion) { + client = getNonAzureOpenAISyncClient(httpClient); + + getCompletionsRunnerForNonAzure((deploymentId, prompt) -> { + IterableStream completionsList = client.getCompletionsStream(deploymentId, + new CompletionsOptions(prompt), new ChatCompletionStreamOptions()); + + completionsList.forEach(Assertions::assertNotNull); + }); + } + + @ParameterizedTest(name = DISPLAY_NAME_WITH_ARGUMENTS) + @MethodSource("com.azure.ai.openai.TestUtils#getTestParameters") + public void testGetChatCompletionsEmitsValues(HttpClient httpClient, OpenAIServiceVersion serviceVersion) { + client = getNonAzureOpenAISyncClient(httpClient); + + getChatCompletionsRunnerForNonAzure((deploymentId, prompt) -> { + IterableStream chatCompletionsList = client.getChatCompletionsStream(deploymentId, + new ChatCompletionsOptions(prompt), new ChatCompletionStreamOptions()); + + chatCompletionsList.forEach(Assertions::assertNotNull); + }); + } } diff --git a/sdk/openai/azure-ai-openai/src/test/java/com/azure/ai/openai/OpenAIAsyncClientTest.java b/sdk/openai/azure-ai-openai/src/test/java/com/azure/ai/openai/OpenAIAsyncClientTest.java index 02c9f8c87477..54f3cdc0b109 100644 --- a/sdk/openai/azure-ai-openai/src/test/java/com/azure/ai/openai/OpenAIAsyncClientTest.java +++ b/sdk/openai/azure-ai-openai/src/test/java/com/azure/ai/openai/OpenAIAsyncClientTest.java @@ -30,6 +30,7 @@ import com.azure.ai.openai.models.Completions; import com.azure.ai.openai.models.CompletionsFinishReason; import com.azure.ai.openai.models.CompletionsOptions; +import com.azure.ai.openai.models.ChatCompletionStreamOptions; import com.azure.ai.openai.models.CompletionsUsage; import com.azure.ai.openai.models.Embeddings; import com.azure.ai.openai.models.FileDeletionStatus; @@ -2323,4 +2324,32 @@ public void testListBatchesFailure(HttpClient httpClient, OpenAIServiceVersion s assertNotNull(httpResponseException.getMessage()); }); } + + @ParameterizedTest(name = DISPLAY_NAME_WITH_ARGUMENTS) + @MethodSource("com.azure.ai.openai.TestUtils#getTestParameters") + public void testGetCompletionsStreamEmitsValues(HttpClient httpClient, OpenAIServiceVersion serviceVersion) { + client = getOpenAIAsyncClient(httpClient, serviceVersion); + + getCompletionsRunner((deploymentId, prompt) -> { + StepVerifier.create(client.getCompletionsStream(deploymentId, new CompletionsOptions(prompt), + new ChatCompletionStreamOptions())).recordWith(ArrayList::new).thenConsumeWhile(completion -> { + assertNotNull(completion); + return true; + }).consumeRecordedWith(messageList -> assertFalse(messageList.isEmpty())).verifyComplete(); + }); + } + + @ParameterizedTest(name = DISPLAY_NAME_WITH_ARGUMENTS) + @MethodSource("com.azure.ai.openai.TestUtils#getTestParameters") + public void testGetChatCompletionsStreamEmitsValues(HttpClient httpClient, OpenAIServiceVersion serviceVersion) { + client = getOpenAIAsyncClient(httpClient, serviceVersion); + + getChatCompletionsRunner((deploymentId, prompt) -> { + StepVerifier.create(client.getChatCompletionsStream(deploymentId, new ChatCompletionsOptions(prompt), + new ChatCompletionStreamOptions())).recordWith(ArrayList::new).thenConsumeWhile(chatCompletion -> { + assertNotNull(chatCompletion); + return true; + }).consumeRecordedWith(messageList -> assertFalse(messageList.isEmpty())).verifyComplete(); + }); + } } diff --git a/sdk/openai/azure-ai-openai/src/test/java/com/azure/ai/openai/OpenAISyncClientTest.java b/sdk/openai/azure-ai-openai/src/test/java/com/azure/ai/openai/OpenAISyncClientTest.java index 7c8a880b8e84..b9a6ed1d88af 100644 --- a/sdk/openai/azure-ai-openai/src/test/java/com/azure/ai/openai/OpenAISyncClientTest.java +++ b/sdk/openai/azure-ai-openai/src/test/java/com/azure/ai/openai/OpenAISyncClientTest.java @@ -21,6 +21,7 @@ import com.azure.ai.openai.models.ChatCompletionsFunctionToolSelection; import com.azure.ai.openai.models.ChatCompletionsNamedFunctionToolSelection; import com.azure.ai.openai.models.ChatCompletionsOptions; +import com.azure.ai.openai.models.ChatCompletionStreamOptions; import com.azure.ai.openai.models.ChatCompletionsToolCall; import com.azure.ai.openai.models.ChatCompletionsToolSelection; import com.azure.ai.openai.models.ChatCompletionsToolSelectionPreset; @@ -56,6 +57,7 @@ import com.azure.core.util.BinaryData; import com.azure.core.util.CoreUtils; import com.azure.core.util.IterableStream; +import org.junit.jupiter.api.Assertions; import org.junit.jupiter.api.Disabled; import org.junit.jupiter.params.ParameterizedTest; import org.junit.jupiter.params.provider.MethodSource; @@ -1981,4 +1983,30 @@ public void testListBatchesFailure(HttpClient httpClient, OpenAIServiceVersion s assertEquals(400, exception.getResponse().getStatusCode()); assertNotNull(exception.getMessage()); } + + @ParameterizedTest(name = DISPLAY_NAME_WITH_ARGUMENTS) + @MethodSource("com.azure.ai.openai.TestUtils#getTestParameters") + public void testGetCompletionsStreamEmitsValues(HttpClient httpClient, OpenAIServiceVersion serviceVersion) { + client = getOpenAIClient(httpClient, serviceVersion); + + getCompletionsRunner((deploymentId, prompt) -> { + IterableStream completionsList = client.getCompletionsStream(deploymentId, + new CompletionsOptions(prompt), new ChatCompletionStreamOptions()); + + completionsList.forEach(Assertions::assertNotNull); + }); + } + + @ParameterizedTest(name = DISPLAY_NAME_WITH_ARGUMENTS) + @MethodSource("com.azure.ai.openai.TestUtils#getTestParameters") + public void testGetChatCompletionsEmitsValues(HttpClient httpClient, OpenAIServiceVersion serviceVersion) { + client = getOpenAIClient(httpClient, serviceVersion); + + getChatCompletionsRunner((deploymentId, prompt) -> { + IterableStream chatCompletionsList = client.getChatCompletionsStream(deploymentId, + new ChatCompletionsOptions(prompt), new ChatCompletionStreamOptions()); + + chatCompletionsList.forEach(Assertions::assertNotNull); + }); + } }