test(source/cloud-sql-mysql): create MCP integration tests#2922
test(source/cloud-sql-mysql): create MCP integration tests#2922dishaprakash wants to merge 10 commits intoanubhav-feat-native-mcp-alloydbfrom
Conversation
There was a problem hiding this comment.
Code Review
This pull request introduces comprehensive integration tests for the Model Context Protocol (MCP) across various data sources, including AlloyDB, Cloud SQL MySQL, and HTTP. It also adds modular helper functions in tests/mcp_tool.go to facilitate standardized MCP tool testing. Several issues were identified in the review: a critical flaw in the Cloud SQL MySQL instance creation test where mocking http.DefaultClient fails to affect the separate toolbox process, and multiple violations of the repository style guide regarding tool naming conventions (snake_case and product name exclusion). Additionally, the use of time.Sleep in MySQL tests was flagged as a potential source of flakiness, and some error assertions were noted as being too weak.
tests/cloudsqlmysql/cloud_sql_mysql_create_instance_mcp_integration_test.go
Show resolved
Hide resolved
db1827c to
7c651a9
Compare
69bb59b to
d81edf8
Compare
94d7fce to
e3fa5a6
Compare
d81edf8 to
4c21e3f
Compare
0019b41 to
0a48e1c
Compare
Description
This PR migrates the Cloud SQL MySQL integration tests to use the /mcp endpoint on the MCP Toolbox Server.
Key Changes
tests/mcp_tool.go:cloud_sql_mysql_mcp_test.go: Migrated legacy/apitests to/mcp. Added negative parameter validation.cloud_sql_mysql_create_instance_mcp_test.go: Migrated create-instance tests to validate MCP JSON-RPC handling.tests/source.go: Added aWithMCP()option to RunSourceConnectionTest to verify database connections natively during MCP server init.tests/tool.go: IntroducedToolExecOptionand theWithMCPExec()functional option to the prebuilt tool test harnesses. This enables the reuse of complex test cases, data structs, and assertions across both legacy /api and new /mcp endpoints by toggling the request routing and response parsing logic.PR Checklist
CONTRIBUTING.md
bug/issue
before writing your code! That way we can discuss the change, evaluate
designs, and agree on the general idea
!if this involve a breaking change🛠️ Fixes #<issue_number_goes_here>