MCPcopy Index your code
hub / github.com/docker/docker-agent / TestExtractMessages

Function TestExtractMessages

pkg/runtime/compactor/compactor_test.go:36–149  ·  view source on GitHub ↗
(t *testing.T)

Source from the content-addressed store, hash-verified

34}
35
36func TestExtractMessages(t *testing.T) {
37 t.Parallel()
38
39 newMsg := func(role chat.MessageRole, content string) session.Item {
40 return session.NewMessageItem(&session.Message{
41 Message: chat.Message{Role: role, Content: content},
42 })
43 }
44
45 tests := []struct {
46 name string
47 messages []session.Item
48 contextLimit int64
49 additionalPrompt string
50 wantConversationMsgCount int
51 }{
52 {
53 name: "empty session returns system and user prompt only",
54 messages: nil,
55 contextLimit: 100_000,
56 wantConversationMsgCount: 0,
57 },
58 {
59 name: "system messages are filtered out",
60 messages: []session.Item{
61 newMsg(chat.MessageRoleSystem, "system instruction"),
62 newMsg(chat.MessageRoleUser, "hello"),
63 newMsg(chat.MessageRoleAssistant, "hi"),
64 },
65 contextLimit: 100_000,
66 wantConversationMsgCount: 2,
67 },
68 {
69 name: "messages fit within context limit",
70 messages: []session.Item{
71 newMsg(chat.MessageRoleUser, "msg1"),
72 newMsg(chat.MessageRoleAssistant, "msg2"),
73 newMsg(chat.MessageRoleUser, "msg3"),
74 newMsg(chat.MessageRoleAssistant, "msg4"),
75 },
76 contextLimit: 100_000,
77 wantConversationMsgCount: 4,
78 },
79 {
80 name: "older messages dropped when they exceed the summarization budget",
81 messages: []session.Item{
82 newMsg(chat.MessageRoleUser, strings.Repeat("a", 80_000)), // ~20k tokens
83 newMsg(chat.MessageRoleAssistant, strings.Repeat("b", 80_000)), // ~20k tokens
84 newMsg(chat.MessageRoleUser, "second message"),
85 newMsg(chat.MessageRoleAssistant, "second response"),
86 },
87 // The two small messages form the kept tail (keep budget
88 // 32k/5). Of the two ~20k-token compact candidates only the
89 // newest fits contextAvailable ≈ 0.75×32k − prompts ≈ 23.8k;
90 // the older one is dropped from the summarizer's input.
91 contextLimit: 32_000,
92 wantConversationMsgCount: 1,
93 },

Callers

nothing calls this directly

Calls 7

NewMessageItemFunction · 0.92
NewFunction · 0.92
WithMessagesFunction · 0.92
NewFunction · 0.92
extractMessagesFunction · 0.85
RunMethod · 0.65
LenMethod · 0.65

Tested by

no test coverage detected