test(agent): move transient retry regression out of merge hotpath

This commit is contained in:
李龙 0668001470 2026-03-16 08:48:13 +08:00 committed by Alix-007
parent 382975a7af
commit c10a34604f

View file

@ -845,52 +845,6 @@ func TestAgentLoop_ContextExhaustionRetry(t *testing.T) {
}
}
func TestAgentLoop_TransientProviderRetry(t *testing.T) {
tmpDir, err := os.MkdirTemp("", "agent-test-*")
if err != nil {
t.Fatalf("Failed to create temp dir: %v", err)
}
defer os.RemoveAll(tmpDir)
cfg := &config.Config{
Agents: config.AgentsConfig{
Defaults: config.AgentDefaults{
Workspace: tmpDir,
Model: "test-model",
MaxTokens: 4096,
MaxToolIterations: 10,
},
},
}
msgBus := bus.NewMessageBus()
provider := &failFirstMockProvider{
failures: 1,
failError: fmt.Errorf("API error: status: 500 temporary upstream failure"),
successResp: "Recovered after transient provider failure",
}
al := NewAgentLoop(cfg, msgBus, provider)
response, err := al.ProcessDirectWithChannel(
context.Background(),
"retry this request",
"test-session-transient",
"cli",
"direct",
)
if err != nil {
t.Fatalf("Expected success after transient retry, got error: %v", err)
}
if response != "Recovered after transient provider failure" {
t.Fatalf("response = %q, want %q", response, "Recovered after transient provider failure")
}
if provider.currentCall != 2 {
t.Fatalf("expected 2 calls (1 fail + 1 success), got %d", provider.currentCall)
}
}
// TestProcessDirectWithChannel_TriggersMCPInitialization verifies that
// ProcessDirectWithChannel triggers MCP initialization when MCP is enabled.
// Note: Manager is only initialized when at least one MCP server is configured
@ -1189,6 +1143,52 @@ func TestHandleReasoning(t *testing.T) {
})
}
func TestAgentLoop_TransientProviderRetry(t *testing.T) {
tmpDir, err := os.MkdirTemp("", "agent-test-*")
if err != nil {
t.Fatalf("Failed to create temp dir: %v", err)
}
defer os.RemoveAll(tmpDir)
cfg := &config.Config{
Agents: config.AgentsConfig{
Defaults: config.AgentDefaults{
Workspace: tmpDir,
Model: "test-model",
MaxTokens: 4096,
MaxToolIterations: 10,
},
},
}
msgBus := bus.NewMessageBus()
provider := &failFirstMockProvider{
failures: 1,
failError: fmt.Errorf("API error: status: 500 temporary upstream failure"),
successResp: "Recovered after transient provider failure",
}
al := NewAgentLoop(cfg, msgBus, provider)
response, err := al.ProcessDirectWithChannel(
context.Background(),
"retry this request",
"test-session-transient",
"cli",
"direct",
)
if err != nil {
t.Fatalf("Expected success after transient retry, got error: %v", err)
}
if response != "Recovered after transient provider failure" {
t.Fatalf("response = %q, want %q", response, "Recovered after transient provider failure")
}
if provider.currentCall != 2 {
t.Fatalf("expected 2 calls (1 fail + 1 success), got %d", provider.currentCall)
}
}
func TestResolveMediaRefs_ResolvesToBase64(t *testing.T) {
store := media.NewFileMediaStore()
dir := t.TempDir()