feat: automatically activate dormant workspaces when manually started (#11655)

This commit is contained in:
Jon Ayers
2024-01-16 16:42:04 -06:00
committed by GitHub
parent d74aae7a4a
commit 1196f83ebd
2 changed files with 51 additions and 0 deletions
+42
View File
@@ -167,4 +167,46 @@ func TestStart(t *testing.T) {
})
}
})
t.Run("StartActivatesDormant", func(t *testing.T) {
t.Parallel()
ctx := testutil.Context(t, testutil.WaitMedium)
ownerClient, owner := coderdenttest.New(t, &coderdenttest.Options{
Options: &coderdtest.Options{
IncludeProvisionerDaemon: true,
},
LicenseOptions: &coderdenttest.LicenseOptions{
Features: license.Features{
codersdk.FeatureAdvancedTemplateScheduling: 1,
},
},
})
version := coderdtest.CreateTemplateVersion(t, ownerClient, owner.OrganizationID, nil)
_ = coderdtest.AwaitTemplateVersionJobCompleted(t, ownerClient, version.ID)
template := coderdtest.CreateTemplate(t, ownerClient, owner.OrganizationID, version.ID)
memberClient, _ := coderdtest.CreateAnotherUser(t, ownerClient, owner.OrganizationID)
workspace := coderdtest.CreateWorkspace(t, memberClient, owner.OrganizationID, template.ID)
_ = coderdtest.AwaitWorkspaceBuildJobCompleted(t, memberClient, workspace.LatestBuild.ID)
_ = coderdtest.MustTransitionWorkspace(t, memberClient, workspace.ID, database.WorkspaceTransitionStart, database.WorkspaceTransitionStop)
err := memberClient.UpdateWorkspaceDormancy(ctx, workspace.ID, codersdk.UpdateWorkspaceDormancy{
Dormant: true,
})
require.NoError(t, err)
inv, root := newCLI(t, "start", workspace.Name)
clitest.SetupConfig(t, memberClient, root)
var buf bytes.Buffer
inv.Stdout = &buf
err = inv.Run()
require.NoError(t, err)
require.Contains(t, buf.String(), "Activating dormant workspace...")
workspace = coderdtest.MustWorkspace(t, memberClient, workspace.ID)
require.Equal(t, codersdk.WorkspaceTransitionStart, workspace.LatestBuild.Transition)
})
}