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

Function TestModelFallbackManager_Stream

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

Source from the content-addressed store, hash-verified

394}
395
396func TestModelFallbackManager_Stream(t *testing.T) {
397 factory := NewMockProviderFactory()
398
399 // 第一个模型失败
400 factory.SetProvider("openai/gpt-4", &MockProvider{
401 name: "openai/gpt-4",
402 shouldFail: true,
403 failCount: 999,
404 })
405
406 // 第二个模型成功
407 factory.SetProvider("anthropic/claude-3", &MockProvider{
408 name: "anthropic/claude-3",
409 })
410
411 deps := &Dependencies{
412 ProviderFactory: factory,
413 }
414
415 fallbacks := []*ModelFallback{
416 {
417 Config: &types.ModelConfig{
418 Provider: "openai",
419 Model: "gpt-4",
420 },
421 MaxRetries: 0,
422 Enabled: true,
423 Priority: 1,
424 },
425 {
426 Config: &types.ModelConfig{
427 Provider: "anthropic",
428 Model: "claude-3",
429 },
430 MaxRetries: 0,
431 Enabled: true,
432 Priority: 2,
433 },
434 }
435
436 manager, err := NewModelFallbackManager(fallbacks, deps)
437 if err != nil {
438 t.Fatalf("Failed to create manager: %v", err)
439 }
440
441 ctx := context.Background()
442 messages := []types.Message{
443 {Role: "user", Content: "Hello"},
444 }
445
446 stream, err := manager.Stream(ctx, messages, nil)
447 if err != nil {
448 t.Fatalf("Stream failed: %v", err)
449 }
450
451 // 读取流
452 var content string
453 var contentSb453 strings.Builder

Callers

nothing calls this directly

Calls 6

SetProviderMethod · 0.95
StreamMethod · 0.95
GetStatsMethod · 0.95
NewModelFallbackManagerFunction · 0.85
NewMockProviderFactoryFunction · 0.70
StringMethod · 0.45

Tested by

no test coverage detected