feat: add runner failover rules and cache affinity
This commit is contained in:
@@ -0,0 +1,42 @@
|
||||
package runner
|
||||
|
||||
import "testing"
|
||||
|
||||
func TestBuildCacheAffinityKeyUsesExplicitKeyFirst(t *testing.T) {
|
||||
body := map[string]any{
|
||||
"cacheAffinityKey": "session-a",
|
||||
"sessionId": "session-b",
|
||||
"messages": []any{map[string]any{"role": "user", "content": "hello"}},
|
||||
}
|
||||
|
||||
got := buildCacheAffinityKey("chat.completions", "text_generate", body)
|
||||
if got == "" || got[:9] != "explicit:" {
|
||||
t.Fatalf("expected explicit cache affinity key, got %q", got)
|
||||
}
|
||||
}
|
||||
|
||||
func TestBuildCacheAffinityKeyUsesSessionContinuity(t *testing.T) {
|
||||
got := buildCacheAffinityKey("chat.completions", "text_generate", map[string]any{
|
||||
"session_id": "conversation-1",
|
||||
})
|
||||
|
||||
if got == "" || got[:11] != "session_id:" {
|
||||
t.Fatalf("expected session cache affinity key, got %q", got)
|
||||
}
|
||||
}
|
||||
|
||||
func TestBuildCacheAffinityKeyFallsBackToPromptHash(t *testing.T) {
|
||||
body := map[string]any{
|
||||
"messages": []any{
|
||||
map[string]any{"role": "system", "content": "stable"},
|
||||
map[string]any{"role": "user", "content": "hello"},
|
||||
},
|
||||
"tools": []any{map[string]any{"type": "function", "function": map[string]any{"name": "lookup"}}},
|
||||
}
|
||||
|
||||
first := buildCacheAffinityKey("chat.completions", "text_generate", body)
|
||||
second := buildCacheAffinityKey("chat.completions", "text_generate", body)
|
||||
if first == "" || first != second || first[:7] != "prompt:" {
|
||||
t.Fatalf("expected stable prompt hash cache affinity key, first=%q second=%q", first, second)
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user