46 lines
1.8 KiB
Go
46 lines
1.8 KiB
Go
package store
|
|
|
|
import (
|
|
"testing"
|
|
"time"
|
|
)
|
|
|
|
func TestRetryPolicyForError(t *testing.T) {
|
|
tests := []struct {
|
|
name string
|
|
code string
|
|
retryable bool
|
|
delay time.Duration
|
|
}{
|
|
{name: "provider unavailable", code: "provider_unavailable", retryable: true, delay: 30 * time.Second},
|
|
{name: "model unavailable", code: "model_unavailable", retryable: true, delay: 30 * time.Second},
|
|
{name: "provider error", code: "provider_error", retryable: true, delay: 30 * time.Second},
|
|
{name: "dependency error", code: "dependency_error", retryable: true, delay: 30 * time.Second},
|
|
{name: "timeout", code: "timeout", retryable: true, delay: 30 * time.Second},
|
|
{name: "storage", code: "storage_error", retryable: true, delay: 30 * time.Second},
|
|
{name: "stale worker", code: "stale_worker", retryable: true, delay: 30 * time.Second},
|
|
{name: "bad response", code: "bad_response", retryable: true, delay: 2 * time.Minute},
|
|
{name: "transcript hallucination", code: "transcript_hallucination", retryable: true, delay: 2 * time.Minute},
|
|
{name: "transcript incomplete", code: "transcript_incomplete", retryable: true, delay: 2 * time.Minute},
|
|
{name: "internal error", code: "internal_error", retryable: true, delay: 2 * time.Minute},
|
|
{name: "unknown", code: "unknown", retryable: true, delay: 2 * time.Minute},
|
|
{name: "bad audio", code: "bad_audio"},
|
|
{name: "bad input", code: "bad_input"},
|
|
{name: "context length", code: "context_length"},
|
|
{name: "unsupported task", code: "unsupported_task"},
|
|
{name: "cancelled", code: "cancelled"},
|
|
}
|
|
|
|
for _, tt := range tests {
|
|
t.Run(tt.name, func(t *testing.T) {
|
|
got := retryPolicyForError(tt.code)
|
|
if got.Retryable != tt.retryable {
|
|
t.Fatalf("Retryable = %v, want %v", got.Retryable, tt.retryable)
|
|
}
|
|
if got.Delay != tt.delay {
|
|
t.Fatalf("Delay = %s, want %s", got.Delay, tt.delay)
|
|
}
|
|
})
|
|
}
|
|
}
|