Skip to content

Commit 12a4b11

Browse files
authored
fix: fix TestWorkspaceAutobuild/InactiveTTLOK flake (#10965)
1 parent d016f93 commit 12a4b11

File tree

1 file changed

+33
-19
lines changed

1 file changed

+33
-19
lines changed

enterprise/coderd/workspaces_test.go

Lines changed: 33 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -239,7 +239,7 @@ func TestWorkspaceAutobuild(t *testing.T) {
239239
require.Len(t, stats.Transitions, 0)
240240
})
241241

242-
t.Run("InactiveTTLOK", func(t *testing.T) {
242+
t.Run("DormancyThresholdOK", func(t *testing.T) {
243243
t.Parallel()
244244

245245
var (
@@ -274,8 +274,8 @@ func TestWorkspaceAutobuild(t *testing.T) {
274274
coderdtest.AwaitTemplateVersionJobCompleted(t, client, version.ID)
275275

276276
ws := coderdtest.CreateWorkspace(t, client, user.OrganizationID, template.ID)
277-
build := coderdtest.AwaitWorkspaceBuildJobCompleted(t, client, ws.LatestBuild.ID)
278-
require.Equal(t, codersdk.WorkspaceStatusRunning, build.Status)
277+
278+
coderdtest.AwaitWorkspaceBuildJobCompleted(t, client, ws.LatestBuild.ID)
279279

280280
// Reset the audit log so we can verify a log is generated.
281281
auditRecorder.ResetLogs()
@@ -287,29 +287,43 @@ func TestWorkspaceAutobuild(t *testing.T) {
287287
// failure TTL.
288288
require.Len(t, stats.Transitions, 1)
289289
require.Equal(t, stats.Transitions[ws.ID], database.WorkspaceTransitionStop)
290-
require.Len(t, auditRecorder.AuditLogs(), 1)
291-
292-
auditLog := auditRecorder.AuditLogs()[0]
293-
require.Equal(t, auditLog.Action, database.AuditActionWrite)
294-
295-
var fields audit.AdditionalFields
296-
err := json.Unmarshal(auditLog.AdditionalFields, &fields)
297-
require.NoError(t, err)
298-
require.Equal(t, ws.Name, fields.WorkspaceName)
299-
require.Equal(t, database.BuildReasonAutolock, fields.BuildReason)
300290

301-
// The workspace should be dormant.
302291
ws = coderdtest.MustWorkspace(t, client, ws.ID)
303292
require.NotNil(t, ws.DormantAt)
304-
lastUsedAt := ws.LastUsedAt
305293

306-
err = client.UpdateWorkspaceDormancy(ctx, ws.ID, codersdk.UpdateWorkspaceDormancy{Dormant: false})
294+
coderdtest.AwaitWorkspaceBuildJobCompleted(t, client, ws.LatestBuild.ID)
295+
// We should get 2 audit logs, one for stopping the workspace, and one for
296+
// making it dormant.
297+
alogs := auditRecorder.AuditLogs()
298+
require.Len(t, alogs, 2)
299+
300+
for _, alog := range alogs {
301+
require.Equal(t, int32(http.StatusOK), alog.StatusCode)
302+
303+
switch alog.Action {
304+
case database.AuditActionWrite:
305+
require.Equal(t, database.ResourceTypeWorkspace, alog.ResourceType)
306+
case database.AuditActionStop:
307+
var fields audit.AdditionalFields
308+
err := json.Unmarshal(alog.AdditionalFields, &fields)
309+
require.NoError(t, err)
310+
require.Equal(t, ws.Name, fields.WorkspaceName)
311+
require.Equal(t, database.BuildReasonAutolock, fields.BuildReason)
312+
313+
default:
314+
t.Fatalf("unexpected audit log (%+v)", alog)
315+
}
316+
}
317+
318+
dormantLastUsedAt := ws.LastUsedAt
319+
// nolint:gocritic // this test is not testing RBAC.
320+
err := client.UpdateWorkspaceDormancy(ctx, ws.ID, codersdk.UpdateWorkspaceDormancy{Dormant: false})
307321
require.NoError(t, err)
308322

309323
// Assert that we updated our last_used_at so that we don't immediately
310324
// retrigger another lock action.
311325
ws = coderdtest.MustWorkspace(t, client, ws.ID)
312-
require.True(t, ws.LastUsedAt.After(lastUsedAt))
326+
require.True(t, ws.LastUsedAt.After(dormantLastUsedAt))
313327
})
314328

315329
// This test serves as a regression prevention for generating
@@ -390,7 +404,7 @@ func TestWorkspaceAutobuild(t *testing.T) {
390404
}
391405
})
392406

393-
t.Run("InactiveTTLTooEarly", func(t *testing.T) {
407+
t.Run("DormancyThresholdTooEarly", func(t *testing.T) {
394408
t.Parallel()
395409

396410
var (
@@ -473,7 +487,7 @@ func TestWorkspaceAutobuild(t *testing.T) {
473487

474488
// Assert that a stopped workspace that breaches the inactivity threshold
475489
// does not trigger a build transition but is still placed in the
476-
// lock state.
490+
// dormant state.
477491
t.Run("InactiveStoppedWorkspaceNoTransition", func(t *testing.T) {
478492
t.Parallel()
479493

0 commit comments

Comments
 (0)