feat: add aibtest package for testing utilities#74
Closed
ibetitsmike wants to merge 1 commit intomainfrom
Closed
Conversation
This addresses the tech debt identified in issue #73 by: 1. Creating mockMCPServer struct that combines: - MCP server proxies (Proxies map) - Call tracking (previously separate callAccumulator) 2. Replacing setupMCPServerProxiesForTest with newMockMCPServer: - Returns single struct instead of multiple values - Integrates all MCP server setup into one place 3. Updating setupInjectedToolTest: - Returns 3 values instead of 4 (recorder, mcpMock, resp) - Callers use mcpMock.GetToolCalls() instead of separate accumulator 4. Adding createMockMCPSrvHandler for cases needing custom setup (e.g., custom server name in trace tests) The changes reduce cognitive overhead by keeping related data together and simplifying function signatures. Resolves #73
a4b35fd to
1728be9
Compare
Collaborator
|
Superseded by #98 |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
This PR creates a proper testing package to address the tech debt identified in #73. The package consolidates scattered test helpers and provides well-structured components that reduce boilerplate and improve test readability.
New Components
MockUpstreamServer
Simulates LLM provider API responses using txtar fixtures. Features:
MockMCPServer
Provides a mock MCP server with integrated call tracking. This addresses the
callAccumulatorissue mentioned in #73:GetToolCalls(toolName)returns all recorded invocationsTotalCallCount()returns total invocations across all toolsNewMCPManager()creates an initialized ServerProxyManager ready to useMockRecorder
Implements
aibridge.Recorderfor testing with convenient accessors:Interceptions(),TokenUsages(),ToolUsages(),PromptUsages()TotalInputTokens(),TotalOutputTokens()VerifyAllInterceptionsEnded(t)for validationTestBridge
The main orchestrator that combines everything:
DoAnthropicRequest(t, reqBody)andDoOpenAIRequest(t, reqBody)methodsExample Usage
Before (from bridge_integration_test.go):
After (with aibtest):
Issues Addressed from #73
callAccumulatoris now integrated into MockMCPServersetupMCPServerProxiesForTestreturn values are consolidatedproxiesreturn value complexity is eliminatedTesting
All existing tests continue to pass:
Resolves #73