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

Function TestModelFallbackManager_BasicFallback

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

Source from the content-addressed store, hash-verified

127}
128
129func TestModelFallbackManager_BasicFallback(t *testing.T) {
130 // 创建 mock factory
131 factory := NewMockProviderFactory()
132
133 // 设置第一个模型失败
134 factory.SetProvider("openai/gpt-4", &MockProvider{
135 name: "openai/gpt-4",
136 shouldFail: true,
137 failCount: 999, // 总是失败
138 })
139
140 // 第二个模型成功
141 factory.SetProvider("anthropic/claude-3", &MockProvider{
142 name: "anthropic/claude-3",
143 })
144
145 deps := &Dependencies{
146 ProviderFactory: factory,
147 }
148
149 // 创建降级配置
150 fallbacks := []*ModelFallback{
151 {
152 Config: &types.ModelConfig{
153 Provider: "openai",
154 Model: "gpt-4",
155 },
156 MaxRetries: 1,
157 Enabled: true,
158 Priority: 1,
159 },
160 {
161 Config: &types.ModelConfig{
162 Provider: "anthropic",
163 Model: "claude-3",
164 },
165 MaxRetries: 0,
166 Enabled: true,
167 Priority: 2,
168 },
169 }
170
171 manager, err := NewModelFallbackManager(fallbacks, deps)
172 if err != nil {
173 t.Fatalf("Failed to create manager: %v", err)
174 }
175
176 // 执行请求
177 ctx := context.Background()
178 messages := []types.Message{
179 {Role: "user", Content: "Hello"},
180 }
181
182 resp, err := manager.Complete(ctx, messages, nil)
183 if err != nil {
184 t.Fatalf("Complete failed: %v", err)
185 }
186

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