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

Function TestSessionFromEventsWithPerMessageUsage

pkg/evaluation/save_test.go:599–645  ·  view source on GitHub ↗
(t *testing.T)

Source from the content-addressed store, hash-verified

597}
598
599func TestSessionFromEventsWithPerMessageUsage(t *testing.T) {
600 t.Parallel()
601
602 events := []map[string]any{
603 {"type": "agent_choice", "content": "Hello!", "agent_name": "root"},
604 {
605 "type": "token_usage",
606 "usage": map[string]any{
607 "input_tokens": float64(100),
608 "output_tokens": float64(50),
609 "cost": 0.005,
610 "last_message": map[string]any{
611 "input_tokens": float64(100),
612 "output_tokens": float64(50),
613 "cached_input_tokens": float64(25),
614 "Model": "gpt-4o",
615 "Cost": 0.005,
616 },
617 },
618 },
619 {"type": "stream_stopped"},
620 }
621
622 sess := SessionFromEvents(events, "test", []string{"hi"})
623
624 // Check session-level usage
625 assert.Equal(t, int64(100), sess.InputTokens)
626 assert.Equal(t, int64(50), sess.OutputTokens)
627 assert.InDelta(t, 0.005, sess.Cost, 0.0001)
628
629 // Find the assistant message
630 var assistantMsg *session.Message
631 for _, item := range sess.Messages {
632 if item.Message != nil && item.Message.Message.Role == chat.MessageRoleAssistant {
633 assistantMsg = item.Message
634 break
635 }
636 }
637
638 require.NotNil(t, assistantMsg, "should have assistant message")
639 assert.Equal(t, "gpt-4o", assistantMsg.Message.Model)
640 assert.InDelta(t, 0.005, assistantMsg.Message.Cost, 0.0001)
641 require.NotNil(t, assistantMsg.Message.Usage)
642 assert.Equal(t, int64(100), assistantMsg.Message.Usage.InputTokens)
643 assert.Equal(t, int64(50), assistantMsg.Message.Usage.OutputTokens)
644 assert.Equal(t, int64(25), assistantMsg.Message.Usage.CachedInputTokens)
645}
646
647func TestSessionFromEventsWithError(t *testing.T) {
648 t.Parallel()

Callers

nothing calls this directly

Calls 1

SessionFromEventsFunction · 0.85

Tested by

no test coverage detected