Skip to content

Commit e7a231e

Browse files
authored
fix: fix test flake introduced by #9264 (#9330)
* Fix test flake introduced by #9264 Signed-off-by: Spike Curtis <spike@coder.com> * change check to match suffix Signed-off-by: Spike Curtis <spike@coder.com> --------- Signed-off-by: Spike Curtis <spike@coder.com>
1 parent 058fb2e commit e7a231e

File tree

3 files changed

+22
-8
lines changed

3 files changed

+22
-8
lines changed

coderd/templateversions_test.go

+6-4
Original file line numberDiff line numberDiff line change
@@ -308,11 +308,13 @@ func TestPatchCancelTemplateVersion(t *testing.T) {
308308
require.Eventually(t, func() bool {
309309
var err error
310310
version, err = client.TemplateVersion(ctx, version.ID)
311+
// job gets marked Failed when there is an Error; in practice we never get to Status = Canceled
312+
// because provisioners report an Error when canceled. We check the Error string to ensure we don't mask
313+
// other errors in this test.
314+
t.Logf("got version %s | %s", version.Job.Error, version.Job.Status)
311315
return assert.NoError(t, err) &&
312-
// The job will never actually cancel successfully because it will never send a
313-
// provision complete response.
314-
assert.Empty(t, version.Job.Error) &&
315-
version.Job.Status == codersdk.ProvisionerJobCanceling
316+
strings.HasSuffix(version.Job.Error, "canceled") &&
317+
version.Job.Status == codersdk.ProvisionerJobFailed
316318
}, testutil.WaitShort, testutil.IntervalFast)
317319
})
318320
}

coderd/workspacebuilds_test.go

+6-1
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,8 @@ import (
1414
"github.com/stretchr/testify/require"
1515
"golang.org/x/xerrors"
1616

17+
"cdr.dev/slog"
18+
"cdr.dev/slog/sloggers/slogtest"
1719
"github.com/coder/coder/v2/coderd/audit"
1820
"github.com/coder/coder/v2/coderd/coderdtest"
1921
"github.com/coder/coder/v2/coderd/database"
@@ -412,7 +414,10 @@ func TestPatchCancelWorkspaceBuild(t *testing.T) {
412414
t.Run("User is not allowed to cancel", func(t *testing.T) {
413415
t.Parallel()
414416

415-
client := coderdtest.New(t, &coderdtest.Options{IncludeProvisionerDaemon: true})
417+
// need to include our own logger because the provisioner (rightly) drops error logs when we shut down the
418+
// test with a build in progress.
419+
logger := slogtest.Make(t, &slogtest.Options{IgnoreErrors: true}).Leveled(slog.LevelDebug)
420+
client := coderdtest.New(t, &coderdtest.Options{IncludeProvisionerDaemon: true, Logger: &logger})
416421
owner := coderdtest.CreateFirstUser(t, client)
417422
version := coderdtest.CreateTemplateVersion(t, client, owner.OrganizationID, &echo.Responses{
418423
Parse: echo.ParseComplete,

scaletest/createworkspaces/run_test.go

+10-3
Original file line numberDiff line numberDiff line change
@@ -163,8 +163,12 @@ func Test_Runner(t *testing.T) {
163163
ctx, cancel := context.WithTimeout(context.Background(), testutil.WaitLong)
164164
defer cancel()
165165

166+
// need to include our own logger because the provisioner (rightly) drops error logs when we shut down the
167+
// test with a build in progress.
168+
logger := slogtest.Make(t, &slogtest.Options{IgnoreErrors: true}).Leveled(slog.LevelDebug)
166169
client := coderdtest.New(t, &coderdtest.Options{
167170
IncludeProvisionerDaemon: true,
171+
Logger: &logger,
168172
})
169173
user := coderdtest.CreateFirstUser(t, client)
170174

@@ -251,14 +255,17 @@ func Test_Runner(t *testing.T) {
251255
if err != nil {
252256
return false
253257
}
254-
for _, build := range builds {
258+
for i, build := range builds {
259+
t.Logf("checking build #%d: %s | %s", i, build.Transition, build.Job.Status)
255260
// One of the builds should be for creating the workspace,
256261
if build.Transition != codersdk.WorkspaceTransitionStart {
257262
continue
258263
}
259264

260-
// And it should be either canceled or canceling
261-
if build.Job.Status == codersdk.ProvisionerJobCanceled || build.Job.Status == codersdk.ProvisionerJobCanceling {
265+
// And it should be either failed (Echo returns an error when job is canceled), canceling, or canceled.
266+
if build.Job.Status == codersdk.ProvisionerJobFailed ||
267+
build.Job.Status == codersdk.ProvisionerJobCanceling ||
268+
build.Job.Status == codersdk.ProvisionerJobCanceled {
262269
return true
263270
}
264271
}

0 commit comments

Comments
 (0)