MCPcopy Create free account
hub / github.com/astercloud/aster / TestModelFallbackManager_RetrySuccess

Function TestModelFallbackManager_RetrySuccess

pkg/agent/model_fallback_test.go:265–315  ·  view source on GitHub ↗
(t *testing.T)

Source from the content-addressed store, hash-verified

263}
264
265func TestModelFallbackManager_RetrySuccess(t *testing.T) {
266 factory := NewMockProviderFactory()
267
268 // 第一次失败,第二次成功
269 factory.SetProvider("openai/gpt-4", &MockProvider{
270 name: "openai/gpt-4",
271 shouldFail: true,
272 failCount: 1, // 只失败一次
273 })
274
275 deps := &Dependencies{
276 ProviderFactory: factory,
277 }
278
279 fallbacks := []*ModelFallback{
280 {
281 Config: &types.ModelConfig{
282 Provider: "openai",
283 Model: "gpt-4",
284 },
285 MaxRetries: 2,
286 Enabled: true,
287 Priority: 1,
288 },
289 }
290
291 manager, err := NewModelFallbackManager(fallbacks, deps)
292 if err != nil {
293 t.Fatalf("Failed to create manager: %v", err)
294 }
295
296 ctx := context.Background()
297 messages := []types.Message{
298 {Role: "user", Content: "Hello"},
299 }
300
301 resp, err := manager.Complete(ctx, messages, nil)
302 if err != nil {
303 t.Fatalf("Complete failed: %v", err)
304 }
305
306 if resp.Message.Content != "mock response from openai/gpt-4" {
307 t.Errorf("Expected response from gpt-4, got: %s", resp.Message.Content)
308 }
309
310 // 检查统计信息
311 stats := manager.GetStats()
312 if stats.FallbackCount != 0 {
313 t.Errorf("Expected 0 fallbacks (retry succeeded), got: %d", stats.FallbackCount)
314 }
315}
316
317func TestModelFallbackManager_EnableDisableModel(t *testing.T) {
318 factory := NewMockProviderFactory()

Callers

nothing calls this directly

Calls 5

SetProviderMethod · 0.95
CompleteMethod · 0.95
GetStatsMethod · 0.95
NewModelFallbackManagerFunction · 0.85
NewMockProviderFactoryFunction · 0.70

Tested by

no test coverage detected