/ internal / client / gateway_cachedebug_test.go
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  }