MCPcopy Create free account
hub / github.com/coder/coder / TestRunnerRunConversation

Function TestRunnerRunConversation

scaletest/chat/run_internal_test.go:22–216  ·  view source on GitHub ↗
(t *testing.T)

Source from the content-addressed store, hash-verified

20)
21
22func TestRunnerRunConversation(t *testing.T) {
23 t.Parallel()
24
25 chatID := uuid.MustParse("aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa")
26 noopMarkTurnStartReady := func() {}
27
28 t.Run("OneTurnHappyPath", func(t *testing.T) {
29 t.Parallel()
30
31 runner := newTestRunner(t, newRunConfig(t))
32 events := make(chan codersdk.ChatStreamEvent, 3)
33 events <- statusEvent(chatID, codersdk.ChatStatusRunning)
34 events <- messagePartEvent(chatID)
35 events <- statusEvent(chatID, codersdk.ChatStatusWaiting)
36 close(events)
37
38 err := runTestConversation(t, runner, chatID, events, noopMarkTurnStartReady)
39 require.NoError(t, err)
40 result := runner.result
41 require.Equal(t, string(codersdk.ChatStatusWaiting), result.finalStatus)
42 require.Empty(t, result.failureStage)
43 require.True(t, result.sawFirstOutput)
44 require.Equal(t, 1, result.turnsCompleted)
45 require.Equal(t, 3, result.eventCount)
46 })
47
48 t.Run("DuplicateWaitingDoesNotAdvanceTurn", func(t *testing.T) {
49 t.Parallel()
50
51 cfg := newRunConfig(t)
52 cfg.Turns = 2
53
54 events := make(chan codersdk.ChatStreamEvent, 7)
55 events <- statusEvent(chatID, codersdk.ChatStatusRunning)
56 events <- messagePartEvent(chatID)
57 events <- statusEvent(chatID, codersdk.ChatStatusWaiting)
58 events <- statusEvent(chatID, codersdk.ChatStatusWaiting)
59
60 var sendCount atomic.Int64
61 runner := newTestRunnerWithChatMessage(t, cfg, chatID, func() {
62 sendCount.Add(1)
63 events <- statusEvent(chatID, codersdk.ChatStatusRunning)
64 events <- messagePartEvent(chatID)
65 events <- statusEvent(chatID, codersdk.ChatStatusWaiting)
66 close(events)
67 })
68
69 err := runTestConversation(t, runner, chatID, events, noopMarkTurnStartReady)
70 require.NoError(t, err)
71 result := runner.result
72 require.Equal(t, int64(1), sendCount.Load())
73 require.Equal(t, 2, result.turnsCompleted)
74 require.Equal(t, 7, result.eventCount)
75 require.Equal(t, string(codersdk.ChatStatusWaiting), result.finalStatus)
76 })
77
78 t.Run("StaleWaitingAfterNextTurnRunningDoesNotAdvanceTurn", func(t *testing.T) {
79 t.Parallel()

Callers

nothing calls this directly

Calls 15

newTestRunnerFunction · 0.85
newRunConfigFunction · 0.85
statusEventFunction · 0.85
messagePartEventFunction · 0.85
runTestConversationFunction · 0.85
messageEventFunction · 0.85
resetConversationMethod · 0.80
runConversationMethod · 0.80
FatalMethod · 0.80
testLoggerFunction · 0.70
RunMethod · 0.65

Tested by

no test coverage detected