mirror of
https://github.com/Ed1s0nZ/CyberStrikeAI.git
synced 2026-08-15 07:30:53 +02:00
50 lines
1.6 KiB
Go
50 lines
1.6 KiB
Go
package multiagent
|
|
|
|
import (
|
|
"context"
|
|
"errors"
|
|
"testing"
|
|
"time"
|
|
|
|
"github.com/cloudwego/eino/adk"
|
|
"github.com/cloudwego/eino/schema"
|
|
)
|
|
|
|
func TestEinoRunRecoveryHandlerRoutesContextOverflowBeforeTransient(t *testing.T) {
|
|
baseMsgs := []adk.Message{schema.UserMessage("base")}
|
|
overflow := newEinoContextOverflowRetryHandler(einoContextOverflowRetryConfig{
|
|
Context: context.Background(),
|
|
Args: &einoADKRunLoopArgs{},
|
|
BaseMsgs: baseMsgs,
|
|
})
|
|
transient := newEinoTransientRunRetryHandler(einoTransientRunRetryHandlerConfig{
|
|
Args: &einoADKRunLoopArgs{},
|
|
BaseMsgs: baseMsgs,
|
|
Policy: einoTransientRunRetryPolicy{maxAttempts: 1, maxBackoff: time.Nanosecond},
|
|
})
|
|
handler := newEinoRunRecoveryHandler(einoRunRecoveryHandlerConfig{
|
|
ContextOverflow: overflow,
|
|
Transient: transient,
|
|
BaseMsgs: baseMsgs,
|
|
})
|
|
|
|
result := handler.Handle(errors.New("context length exceeded: upstream returned 503"), nil, 0)
|
|
if !result.Handled || !result.Restarted || result.Fatal != nil {
|
|
t.Fatalf("result = %+v, want context overflow restart", result)
|
|
}
|
|
second := handler.Handle(errors.New("upstream returned 503"), nil, 0)
|
|
if !second.Handled || !second.Restarted || second.Fatal != nil {
|
|
t.Fatalf("second result = %+v, want transient restart", second)
|
|
}
|
|
}
|
|
|
|
func TestEinoRunRecoveryHandlerRoutesFatalFallback(t *testing.T) {
|
|
handler := newEinoRunRecoveryHandler(einoRunRecoveryHandlerConfig{
|
|
RunError: newEinoRunErrorHandler(einoRunErrorHandlerConfig{}),
|
|
})
|
|
result := handler.Handle(errors.New("invalid api key"), nil, 0)
|
|
if !result.Handled || result.Restarted || result.Fatal == nil {
|
|
t.Fatalf("result = %+v, want fatal fallback", result)
|
|
}
|
|
}
|