gateway_cachedebug_test.go
1 package client 2 3 import ( 4 "os" 5 "path/filepath" 6 "strings" 7 "testing" 8 ) 9 10 func TestCacheDebug_DefaultOff(t *testing.T) { 11 os.Unsetenv("SHANNON_CACHE_DEBUG") 12 tmp := t.TempDir() 13 t.Setenv("HOME", tmp) 14 15 req := CompletionRequest{Messages: []Message{{Role: "user", Content: NewTextContent("hi")}}} 16 _ = logCacheDebug(req, "complete") 17 18 path := filepath.Join(tmp, ".shannon", "logs", "cache-debug.log") 19 if _, err := os.Stat(path); !os.IsNotExist(err) { 20 t.Fatalf("expected no cache-debug.log without env flag, got err=%v", err) 21 } 22 } 23 24 func TestCacheDebug_EnabledByEnv(t *testing.T) { 25 tmp := t.TempDir() 26 t.Setenv("HOME", tmp) 27 t.Setenv("SHANNON_CACHE_DEBUG", "1") 28 29 req := CompletionRequest{Messages: []Message{{Role: "user", Content: NewTextContent("hi")}}} 30 reqID := logCacheDebug(req, "complete") 31 if reqID == "" { 32 t.Fatalf("expected non-empty reqID") 33 } 34 path := filepath.Join(tmp, ".shannon", "logs", "cache-debug.log") 35 if _, err := os.Stat(path); err != nil { 36 t.Fatalf("expected cache-debug.log to be written, got err=%v", err) 37 } 38 } 39 40 func TestCacheDebug_WritesSessionID(t *testing.T) { 41 tmp := t.TempDir() 42 t.Setenv("HOME", tmp) 43 t.Setenv("SHANNON_CACHE_DEBUG", "1") 44 45 req := CompletionRequest{ 46 Messages: []Message{{Role: "user", Content: NewTextContent("hi")}}, 47 SessionID: "sess-abc123", 48 } 49 reqID := logCacheDebug(req, "complete") 50 if reqID == "" { 51 t.Fatal("expected non-empty reqID") 52 } 53 54 data, err := os.ReadFile(filepath.Join(tmp, ".shannon", "logs", "cache-debug.log")) 55 if err != nil { 56 t.Fatal(err) 57 } 58 if !strings.Contains(string(data), `"session_id":"sess-abc123"`) { 59 t.Fatalf("session_id not written in log entry: %s", data) 60 } 61 } 62 63 func TestCacheDebug_ResponseCarriesSessionID(t *testing.T) { 64 tmp := t.TempDir() 65 t.Setenv("HOME", tmp) 66 t.Setenv("SHANNON_CACHE_DEBUG", "1") 67 68 resp := &CompletionResponse{ 69 RequestID: "gw-req-1", 70 Usage: Usage{InputTokens: 10, CacheReadTokens: 5, CacheCreationTokens: 0}, 71 } 72 logCacheResponse("abc123", "sess-xyz789", resp) 73 74 data, _ := os.ReadFile(filepath.Join(tmp, ".shannon", "logs", "cache-debug.log")) 75 if !strings.Contains(string(data), `"session_id":"sess-xyz789"`) { 76 t.Fatalf("session_id missing from resp entry: %s", data) 77 } 78 }