MCPcopy Index your code
hub / github.com/coder/coder / testAutoPromoteQueuedMessageFallback

Function testAutoPromoteQueuedMessageFallback

coderd/x/chatd/chatd_test.go:2915–3013  ·  view source on GitHub ↗
(t *testing.T, queuedModelConfigID uuid.NullUUID)

Source from the content-addressed store, hash-verified

2913}
2914
2915func testAutoPromoteQueuedMessageFallback(t *testing.T, queuedModelConfigID uuid.NullUUID) {
2916 db, ps := dbtestutil.NewDB(t)
2917 ctx := testutil.Context(t, testutil.WaitSuperLong)
2918
2919 firstRunStarted := make(chan struct{})
2920 secondRunStarted := make(chan struct{}, 1)
2921 allowFirstRunFinish := make(chan struct{})
2922 var requestCount atomic.Int32
2923 openAIURL := chattest.NewOpenAI(t, func(req *chattest.OpenAIRequest) chattest.OpenAIResponse {
2924 if !req.Stream {
2925 return chattest.OpenAINonStreamingResponse("title")
2926 }
2927
2928 switch requestCount.Add(1) {
2929 case 1:
2930 chunks := make(chan chattest.OpenAIChunk, 1)
2931 go func() {
2932 defer close(chunks)
2933 chunks <- chattest.OpenAITextChunks("first run partial")[0]
2934 select {
2935 case <-firstRunStarted:
2936 default:
2937 close(firstRunStarted)
2938 }
2939 <-allowFirstRunFinish
2940 }()
2941 return chattest.OpenAIResponse{StreamingChunks: chunks}
2942 default:
2943 select {
2944 case secondRunStarted <- struct{}{}:
2945 default:
2946 }
2947 return chattest.OpenAIStreamingResponse(chattest.OpenAITextChunks("fallback run done")...)
2948 }
2949 })
2950
2951 server := newActiveTestServer(t, db, ps, func(cfg *chatd.Config) {
2952 // Disable periodic polling so only signalWake can
2953 // trigger the next processing run.
2954 cfg.PendingChatAcquireInterval = time.Hour
2955 })
2956 user, org, modelConfig := seedChatDependenciesWithProvider(t, db, "openai-compat", openAIURL)
2957 chat, err := server.CreateChat(ctx, chatd.CreateOptions{
2958 OrganizationID: org.ID,
2959 OwnerID: user.ID,
2960 Title: "auto-promote queued fallback",
2961 ModelConfigID: modelConfig.ID,
2962 InitialUserContent: []codersdk.ChatMessagePart{codersdk.ChatMessageText("hello")},
2963 })
2964 require.NoError(t, err)
2965
2966 testutil.TryReceive(ctx, t, firstRunStarted)
2967
2968 queuedContent, err := json.Marshal([]codersdk.ChatMessagePart{codersdk.ChatMessageText("legacy queued row")})
2969 require.NoError(t, err)
2970 _, err = db.InsertChatQueuedMessage(ctx, database.InsertChatQueuedMessageParams{
2971 ChatID: chat.ID,
2972 Content: queuedContent,

Calls 15

NewDBFunction · 0.92
ContextFunction · 0.92
NewOpenAIFunction · 0.92
OpenAITextChunksFunction · 0.92
OpenAIStreamingResponseFunction · 0.92
ChatMessageTextFunction · 0.92
TryReceiveFunction · 0.92
WaitUntilIdleForTestFunction · 0.92
ChatMessageFunction · 0.92
newActiveTestServerFunction · 0.85

Tested by

no test coverage detected