From 5d0eb772da9f3ae9aa85e73289045e0458331c31 Mon Sep 17 00:00:00 2001 From: Michael Suchacz <203725896+ibetitsmike@users.noreply.github.com> Date: Tue, 17 Mar 2026 09:08:22 +0100 Subject: [PATCH] fix(cored): fix flaky TestInterruptAutoPromotionIgnoresLaterUsageLimitIncrease (#23147) --- coderd/chatd/chatd_test.go | 21 +++++++++++++-------- 1 file changed, 13 insertions(+), 8 deletions(-) diff --git a/coderd/chatd/chatd_test.go b/coderd/chatd/chatd_test.go index ced3eb00e7..081fcdaf60 100644 --- a/coderd/chatd/chatd_test.go +++ b/coderd/chatd/chatd_test.go @@ -867,6 +867,19 @@ func TestInterruptAutoPromotionIgnoresLaterUsageLimitIncrease(t *testing.T) { require.True(t, queuedResult.Queued) require.NotNil(t, queuedResult.QueuedMessage) + // Send "later queued" immediately after "queued" while the first + // message is still in chat_queued_messages. The existing backlog + // (len(existingQueued) > 0) guarantees this is queued regardless + // of chat status, avoiding a race where the auto-promoted "queued" + // message finishes processing before we can send this. + laterQueuedResult, err := server.SendMessage(ctx, chatd.SendMessageOptions{ + ChatID: chat.ID, + Content: []codersdk.ChatMessagePart{codersdk.ChatMessageText("later queued")}, + }) + require.NoError(t, err) + require.True(t, laterQueuedResult.Queued) + require.NotNil(t, laterQueuedResult.QueuedMessage) + require.Eventually(t, func() bool { select { case <-interrupted: @@ -876,14 +889,6 @@ func TestInterruptAutoPromotionIgnoresLaterUsageLimitIncrease(t *testing.T) { } }, testutil.WaitMedium, testutil.IntervalFast) - laterQueuedResult, err := server.SendMessage(ctx, chatd.SendMessageOptions{ - ChatID: chat.ID, - Content: []codersdk.ChatMessagePart{codersdk.ChatMessageText("later queued")}, - }) - require.NoError(t, err) - require.True(t, laterQueuedResult.Queued) - require.NotNil(t, laterQueuedResult.QueuedMessage) - spendChat, err := db.InsertChat(ctx, database.InsertChatParams{ OwnerID: user.ID, WorkspaceID: uuid.NullUUID{},