feat: use message LCP cache affinity keys
This commit is contained in:
@@ -1,6 +1,9 @@
|
||||
package runner
|
||||
|
||||
import "testing"
|
||||
import (
|
||||
"strings"
|
||||
"testing"
|
||||
)
|
||||
|
||||
func TestBuildCacheAffinityKeyUsesExplicitKeyFirst(t *testing.T) {
|
||||
body := map[string]any{
|
||||
@@ -10,7 +13,7 @@ func TestBuildCacheAffinityKeyUsesExplicitKeyFirst(t *testing.T) {
|
||||
}
|
||||
|
||||
got := buildCacheAffinityKey("chat.completions", "text_generate", body)
|
||||
if got == "" || got[:9] != "explicit:" {
|
||||
if !strings.HasPrefix(got, "explicit:") {
|
||||
t.Fatalf("expected explicit cache affinity key, got %q", got)
|
||||
}
|
||||
}
|
||||
@@ -20,7 +23,7 @@ func TestBuildCacheAffinityKeyUsesSessionContinuity(t *testing.T) {
|
||||
"session_id": "conversation-1",
|
||||
})
|
||||
|
||||
if got == "" || got[:11] != "session_id:" {
|
||||
if !strings.HasPrefix(got, "session_id:") {
|
||||
t.Fatalf("expected session cache affinity key, got %q", got)
|
||||
}
|
||||
}
|
||||
@@ -36,7 +39,35 @@ func TestBuildCacheAffinityKeyFallsBackToPromptHash(t *testing.T) {
|
||||
|
||||
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)
|
||||
if first == "" || first != second || !strings.HasPrefix(first, "prompt_lcp:") {
|
||||
t.Fatalf("expected stable prompt LCP cache affinity key, first=%q second=%q", first, second)
|
||||
}
|
||||
}
|
||||
|
||||
func TestBuildCacheAffinityKeysUsesMessagePrefixLCPKeys(t *testing.T) {
|
||||
first := buildCacheAffinityKeys("chat.completions", "text_generate", map[string]any{
|
||||
"messageHashes": []any{"system-hash", "user-hash"},
|
||||
"tools": []any{map[string]any{"type": "function", "function": map[string]any{"name": "lookup"}}},
|
||||
})
|
||||
next := buildCacheAffinityKeys("chat.completions", "text_generate", map[string]any{
|
||||
"messageHashes": []any{"system-hash", "user-hash", "assistant-hash", "tool-hash"},
|
||||
"tools": []any{map[string]any{"type": "function", "function": map[string]any{"name": "lookup"}}},
|
||||
})
|
||||
|
||||
if !strings.HasPrefix(first.Primary, "prompt_lcp:") {
|
||||
t.Fatalf("expected LCP prompt key, got %+v", first)
|
||||
}
|
||||
if len(first.Record) != 2 || len(next.Lookup) != 4 {
|
||||
t.Fatalf("expected per-message prefix keys, first=%+v next=%+v", first, next)
|
||||
}
|
||||
found := false
|
||||
for _, key := range next.Lookup {
|
||||
if key == first.Primary {
|
||||
found = true
|
||||
break
|
||||
}
|
||||
}
|
||||
if !found {
|
||||
t.Fatalf("next lookup keys should include first request prefix key, first=%+v next=%+v", first, next)
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user