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

Function TestWorkspaceLock

enterprise/coderd/workspaces_test.go:4048–4111  ·  view source on GitHub ↗
(t *testing.T)

Source from the content-addressed store, hash-verified

4046}
4047
4048func TestWorkspaceLock(t *testing.T) {
4049 t.Parallel()
4050
4051 t.Run("TemplateTimeTilDormantAutoDelete", func(t *testing.T) {
4052 t.Parallel()
4053 var (
4054 client, user = coderdenttest.New(t, &coderdenttest.Options{
4055 Options: &coderdtest.Options{
4056 IncludeProvisionerDaemon: true,
4057 TemplateScheduleStore: &schedule.EnterpriseTemplateScheduleStore{Clock: quartz.NewReal()},
4058 },
4059 LicenseOptions: &coderdenttest.LicenseOptions{
4060 Features: license.Features{
4061 codersdk.FeatureAdvancedTemplateScheduling: 1,
4062 },
4063 },
4064 })
4065
4066 version = coderdtest.CreateTemplateVersion(t, client, user.OrganizationID, nil)
4067 _ = coderdtest.AwaitTemplateVersionJobCompleted(t, client, version.ID)
4068 dormantTTL = time.Minute
4069 )
4070
4071 template := coderdtest.CreateTemplate(t, client, user.OrganizationID, version.ID, func(ctr *codersdk.CreateTemplateRequest) {
4072 ctr.TimeTilDormantAutoDeleteMillis = ptr.Ref[int64](dormantTTL.Milliseconds())
4073 })
4074
4075 workspace := coderdtest.CreateWorkspace(t, client, template.ID)
4076 _ = coderdtest.AwaitWorkspaceBuildJobCompleted(t, client, workspace.LatestBuild.ID)
4077
4078 ctx, cancel := context.WithTimeout(context.Background(), testutil.WaitLong)
4079 defer cancel()
4080
4081 lastUsedAt := workspace.LastUsedAt
4082 err := client.UpdateWorkspaceDormancy(ctx, workspace.ID, codersdk.UpdateWorkspaceDormancy{
4083 Dormant: true,
4084 })
4085 require.NoError(t, err)
4086
4087 workspace = coderdtest.MustWorkspace(t, client, workspace.ID)
4088 require.NoError(t, err, "fetch provisioned workspace")
4089 require.NotNil(t, workspace.DeletingAt)
4090 require.NotNil(t, workspace.DormantAt)
4091 require.Equal(t, workspace.DormantAt.Add(dormantTTL), *workspace.DeletingAt)
4092 require.WithinRange(t, *workspace.DormantAt, dbtime.Now().Add(-time.Second), dbtime.Now())
4093 // Locking a workspace shouldn't update the last_used_at.
4094 require.Equal(t, lastUsedAt, workspace.LastUsedAt)
4095
4096 workspace = coderdtest.MustWorkspace(t, client, workspace.ID)
4097 lastUsedAt = workspace.LastUsedAt
4098 err = client.UpdateWorkspaceDormancy(ctx, workspace.ID, codersdk.UpdateWorkspaceDormancy{
4099 Dormant: false,
4100 })
4101 require.NoError(t, err)
4102
4103 workspace, err = client.Workspace(ctx, workspace.ID)
4104 require.NoError(t, err, "fetch provisioned workspace")
4105 require.Nil(t, workspace.DormantAt)

Callers

nothing calls this directly

Calls 13

NewFunction · 0.92
CreateTemplateVersionFunction · 0.92
CreateTemplateFunction · 0.92
CreateWorkspaceFunction · 0.92
MustWorkspaceFunction · 0.92
NowFunction · 0.92
WorkspaceMethod · 0.80
RunMethod · 0.65
AddMethod · 0.65

Tested by

no test coverage detected