Skip to content

Commit 9e1afcf

Browse files
committed
improve coverage for mcp tool call
1 parent c25c3e9 commit 9e1afcf

3 files changed

Lines changed: 355 additions & 0 deletions

File tree

dd-java-agent/instrumentation/openai-java/openai-java-3.0/src/test/groovy/OpenAiTest.groovy

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ import com.openai.client.OpenAIClient
44
import com.openai.client.okhttp.OkHttpClient
55
import com.openai.client.okhttp.OpenAIOkHttpClient
66
import com.openai.core.ClientOptions
7+
import com.openai.core.ObjectMappers
78
import com.openai.credential.BearerTokenCredential
89
import com.openai.core.JsonValue
910
import com.openai.models.ChatModel
@@ -24,6 +25,7 @@ import com.openai.models.responses.ResponseInputItem
2425
import com.openai.models.responses.ResponsePrompt
2526
import com.openai.models.responses.FunctionTool
2627
import com.openai.models.responses.CustomTool
28+
import com.openai.models.responses.Tool
2729
import com.openai.models.responses.ToolChoiceCustom
2830
import datadog.trace.agent.test.InstrumentationSpecification
2931
import datadog.trace.agent.test.server.http.TestHttpServer
@@ -466,6 +468,21 @@ Alice Johnson majors in mathematics at UCLA.""")
466468
params
467469
}
468470

471+
ResponseCreateParams responseCreateParamsWithMcpToolCall() {
472+
def mcpTool = Tool.Mcp.builder()
473+
.serverLabel("openai_docs")
474+
.serverDescription("OpenAI documentation MCP server.")
475+
.serverUrl("https://developers.openai.com/mcp")
476+
.requireApproval(Tool.Mcp.RequireApproval.McpToolApprovalSetting.NEVER)
477+
.build()
478+
479+
ResponseCreateParams.builder()
480+
.model(ChatModel.GPT_5)
481+
.input("Use the OpenAI docs MCP server to find the Responses API MCP tool documentation and summarize the require_approval option.")
482+
.addTool(mcpTool)
483+
.build()
484+
}
485+
469486
ChatCompletionCreateParams chatCompletionCreateParamsMultiChoice(boolean json) {
470487
if (json) {
471488
ChatCompletionCreateParams.builder()

dd-java-agent/instrumentation/openai-java/openai-java-3.0/src/test/groovy/ResponseServiceTest.groovy

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -318,6 +318,31 @@ class ResponseServiceTest extends OpenAiTest {
318318
toolDefinitions[0].schema.required == ["name"]
319319
}
320320
321+
def "create response with mcp tool call"() {
322+
Response resp = runUnderTrace("parent") {
323+
openAiClient.responses().create(responseCreateParamsWithMcpToolCall())
324+
}
325+
326+
expect:
327+
resp != null
328+
and:
329+
List<LLMObs.LLMMessage> outputTags = []
330+
Map<String, Object> metadata = [:]
331+
assertResponseTrace(false, "gpt-5", String, null, null, outputTags, metadata)
332+
and:
333+
metadata.stream == false
334+
outputTags.any {
335+
it.toolCalls?.any { toolCall ->
336+
toolCall.type == "mcp_call" && toolCall.name
337+
}
338+
}
339+
outputTags.any {
340+
it.toolResults?.any { toolResult ->
341+
toolResult.type == "mcp_tool_result" && toolResult.name
342+
}
343+
}
344+
}
345+
321346
def "create response error sets model_name and placeholder output"() {
322347
setup:
323348
def errorBackend = TestHttpServer.httpServer {

dd-java-agent/instrumentation/openai-java/openai-java-3.0/src/test/resources/http-records/responses/39590e9b44463dcf+68f287a23bcd52c3.POST.rec

Lines changed: 313 additions & 0 deletions
Large diffs are not rendered by default.

0 commit comments

Comments
 (0)