From 37bf313c06e7860dc29c1c6e0415faf013b625e1 Mon Sep 17 00:00:00 2001 From: Mathias Fredriksson Date: Tue, 7 Nov 2023 15:27:04 +0200 Subject: [PATCH] test(codersdk/agentsdk): fix context cancel flush test This change tests that the patch request is cancelled instead of hoping that there's no race between context cancellations leading to patch never being called. --- codersdk/agentsdk/logs_test.go | 17 ++++++++++++----- 1 file changed, 12 insertions(+), 5 deletions(-) diff --git a/codersdk/agentsdk/logs_test.go b/codersdk/agentsdk/logs_test.go index e411e6e7213e4..894cdf7cea58f 100644 --- a/codersdk/agentsdk/logs_test.go +++ b/codersdk/agentsdk/logs_test.go @@ -338,9 +338,12 @@ func TestStartupLogsSender(t *testing.T) { ctx, cancel := context.WithTimeout(context.Background(), testutil.WaitShort) defer cancel() - var want, got []agentsdk.Log - patchLogs := func(_ context.Context, req agentsdk.PatchLogs) error { - got = append(got, req.Logs...) + patchStart := make(chan struct{}) + patchDone := make(chan struct{}) + patchLogs := func(ctx context.Context, _ agentsdk.PatchLogs) error { + close(patchStart) + <-ctx.Done() + close(patchDone) return nil } @@ -358,10 +361,14 @@ func TestStartupLogsSender(t *testing.T) { }) require.NoError(t, err) - cancel() + go func() { + <-patchStart + cancel() + }() err = flushAndClose(ctx) require.Error(t, err) - require.Equal(t, want, got) + <-patchDone + // The patch request should have been canceled if it was active. }) }