30 lines
971 B
Go
30 lines
971 B
Go
package worker
|
|
|
|
import (
|
|
"errors"
|
|
"testing"
|
|
)
|
|
|
|
func TestClassifyLLMError(t *testing.T) {
|
|
tests := []struct {
|
|
name string
|
|
err error
|
|
want string
|
|
}{
|
|
{name: "timeout", err: errors.New("context deadline exceeded"), want: "timeout"},
|
|
{name: "unavailable", err: errors.New("llm HTTP 500: internal server error"), want: "model_unavailable"},
|
|
{name: "context length", err: errors.New("This model's maximum context length is 16384 tokens. input_tokens=16001"), want: "context_length"},
|
|
{name: "bad input", err: errors.New("llm HTTP 400: messages are required"), want: "bad_input"},
|
|
{name: "bad response", err: errors.New("llm decode: invalid character '<'"), want: "bad_response"},
|
|
{name: "unknown", err: errors.New("strange failure"), want: "unknown"},
|
|
}
|
|
|
|
for _, tt := range tests {
|
|
t.Run(tt.name, func(t *testing.T) {
|
|
if got := classifyLLMError(tt.err); got != tt.want {
|
|
t.Fatalf("classifyLLMError() = %q, want %q", got, tt.want)
|
|
}
|
|
})
|
|
}
|
|
}
|