返回 DeepSeek-Reasonix
admission_benchmark_test.go
根目录 / internal / sessioninbox / admission_benchmark_test.go
1 package sessioninbox
2
3 import (
4 "errors"
5 "os"
6 "path/filepath"
7 "runtime"
8 "strings"
9 "testing"
10 )
11
12 func TestAdmittedItemsRejectUserCRUD(t *testing.T) {
13 dir := t.TempDir()
14 session := filepath.Join(dir, "s.jsonl")
15 _ = os.WriteFile(session, []byte("{}\n"), 0o644)
16 s, err := Open(session, Limits{})
17 if err != nil {
18 t.Fatal(err)
19 }
20 defer s.Close()
21 rec, _ := s.Enqueue(EnqueueRequest{Envelope: PromptEnvelope{SubmitText: "running"}})
22 if err := s.SetState(rec.ItemID, StateRunning, ""); err != nil {
23 t.Fatal(err)
24 }
25 if _, err := s.UpdateItem(rec.ItemID, PromptEnvelope{SubmitText: "changed"}); !errors.Is(err, ErrInvalidState) {
26 t.Fatalf("update running item error = %v, want ErrInvalidState", err)
27 }
28 if err := s.MoveItem(rec.ItemID, 0); !errors.Is(err, ErrInvalidState) {
29 t.Fatalf("move running item error = %v, want ErrInvalidState", err)
30 }
31 if err := s.DeleteItem(rec.ItemID); !errors.Is(err, ErrInvalidState) {
32 t.Fatalf("delete running item error = %v, want ErrInvalidState", err)
33 }
34 if err := s.RetryItem(rec.ItemID); !errors.Is(err, ErrInvalidState) {
35 t.Fatalf("retry running item error = %v, want ErrInvalidState", err)
36 }
37 if err := s.AckDequeue(rec.ItemID); err != nil {
38 t.Fatalf("durable completion could not ack running item: %v", err)
39 }
40 }
41
42 func BenchmarkThirtyOneMiBItemsRetainedHeap(b *testing.B) {
43 body := strings.Repeat("x", 1<<20)
44 var retainedTotal uint64
45 for range b.N {
46 b.StopTimer()
47 session := filepath.Join(b.TempDir(), "s.jsonl")
48 s, err := Open(session, Limits{})
49 if err != nil {
50 b.Fatal(err)
51 }
52 runtime.GC()
53 var before runtime.MemStats
54 runtime.ReadMemStats(&before)
55
56 b.StartTimer()
57 for range 30 {
58 if _, err := s.Enqueue(EnqueueRequest{
59 Intent: IntentFollowup,
60 Envelope: PromptEnvelope{
61 DisplayText: "one MiB body",
62 SubmitText: body,
63 },
64 }); err != nil {
65 b.Fatal(err)
66 }
67 }
68 b.StopTimer()
69
70 runtime.GC()
71 var after runtime.MemStats
72 runtime.ReadMemStats(&after)
73 if after.HeapAlloc > before.HeapAlloc {
74 retainedTotal += after.HeapAlloc - before.HeapAlloc
75 }
76 s.Close()
77 }
78 b.ReportMetric(float64(retainedTotal)/float64(b.N), "B/retained-op")
79 }
80
80 lines GO