Skip to content

Commit f32f7c6

Browse files
authored
test(enterprise/coderd): fix ctx init in multiple workspace tests (#16176)
1 parent 0697308 commit f32f7c6

File tree

1 file changed

+38
-26
lines changed

1 file changed

+38
-26
lines changed

enterprise/coderd/workspaces_test.go

Lines changed: 38 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -73,8 +73,7 @@ func TestCreateWorkspace(t *testing.T) {
7373

7474
other, _ := coderdtest.CreateAnotherUser(t, client, first.OrganizationID, rbac.RoleMember(), rbac.RoleOwner())
7575

76-
ctx, cancel := context.WithTimeout(context.Background(), testutil.WaitLong)
77-
defer cancel()
76+
ctx := testutil.Context(t, testutil.WaitLong)
7877

7978
org, err := other.CreateOrganization(ctx, codersdk.CreateOrganizationRequest{
8079
Name: "another",
@@ -83,6 +82,8 @@ func TestCreateWorkspace(t *testing.T) {
8382
version := coderdtest.CreateTemplateVersion(t, other, org.ID, nil)
8483
template := coderdtest.CreateTemplate(t, other, org.ID, version.ID)
8584

85+
ctx = testutil.Context(t, testutil.WaitLong) // Reset the context to avoid timeouts.
86+
8687
_, err = client.CreateWorkspace(ctx, first.OrganizationID, codersdk.Me, codersdk.CreateWorkspaceRequest{
8788
TemplateID: template.ID,
8889
Name: "workspace",
@@ -108,8 +109,7 @@ func TestCreateWorkspace(t *testing.T) {
108109
version := coderdtest.CreateTemplateVersion(t, client, user.OrganizationID, nil)
109110
template := coderdtest.CreateTemplate(t, client, user.OrganizationID, version.ID)
110111

111-
ctx, cancel := context.WithTimeout(context.Background(), testutil.WaitLong)
112-
defer cancel()
112+
ctx := testutil.Context(t, testutil.WaitLong)
113113

114114
acl, err := templateAdminClient.TemplateACL(ctx, template.ID)
115115
require.NoError(t, err)
@@ -163,8 +163,7 @@ func TestCreateWorkspace(t *testing.T) {
163163
coderdtest.AwaitTemplateVersionJobCompleted(t, templateAdmin, version.ID)
164164
template := coderdtest.CreateTemplate(t, templateAdmin, owner.OrganizationID, version.ID)
165165

166-
ctx, cancel := context.WithTimeout(context.Background(), testutil.WaitLong)
167-
defer cancel()
166+
ctx := testutil.Context(t, testutil.WaitLong)
168167

169168
// Remove everyone access
170169
err := templateAdmin.UpdateTemplateACL(ctx, template.ID, codersdk.UpdateTemplateACL{
@@ -213,8 +212,7 @@ func TestCreateUserWorkspace(t *testing.T) {
213212

214213
other, _ := coderdtest.CreateAnotherUser(t, client, first.OrganizationID, rbac.RoleMember(), rbac.RoleOwner())
215214

216-
ctx, cancel := context.WithTimeout(context.Background(), testutil.WaitLong)
217-
defer cancel()
215+
ctx := testutil.Context(t, testutil.WaitLong)
218216

219217
org, err := other.CreateOrganization(ctx, codersdk.CreateOrganizationRequest{
220218
Name: "another",
@@ -223,6 +221,8 @@ func TestCreateUserWorkspace(t *testing.T) {
223221
version := coderdtest.CreateTemplateVersion(t, other, org.ID, nil)
224222
template := coderdtest.CreateTemplate(t, other, org.ID, version.ID)
225223

224+
ctx = testutil.Context(t, testutil.WaitLong) // Reset the context to avoid timeouts.
225+
226226
_, err = client.CreateUserWorkspace(ctx, codersdk.Me, codersdk.CreateWorkspaceRequest{
227227
TemplateID: template.ID,
228228
Name: "workspace",
@@ -248,8 +248,7 @@ func TestCreateUserWorkspace(t *testing.T) {
248248
version := coderdtest.CreateTemplateVersion(t, client, user.OrganizationID, nil)
249249
template := coderdtest.CreateTemplate(t, client, user.OrganizationID, version.ID)
250250

251-
ctx, cancel := context.WithTimeout(context.Background(), testutil.WaitLong)
252-
defer cancel()
251+
ctx := testutil.Context(t, testutil.WaitLong)
253252

254253
acl, err := templateAdminClient.TemplateACL(ctx, template.ID)
255254
require.NoError(t, err)
@@ -431,7 +430,6 @@ func TestWorkspaceAutobuild(t *testing.T) {
431430
t.Parallel()
432431

433432
var (
434-
ctx = testutil.Context(t, testutil.WaitMedium)
435433
ticker = make(chan time.Time)
436434
statCh = make(chan autobuild.Stats)
437435
inactiveTTL = time.Minute
@@ -492,6 +490,8 @@ func TestWorkspaceAutobuild(t *testing.T) {
492490
require.Equal(t, database.AuditActionWrite, alog.Action)
493491
require.Equal(t, workspace.Name, alog.ResourceTarget)
494492

493+
ctx := testutil.Context(t, testutil.WaitMedium)
494+
495495
dormantLastUsedAt := ws.LastUsedAt
496496
// nolint:gocritic // this test is not testing RBAC.
497497
err := client.UpdateWorkspaceDormancy(ctx, ws.ID, codersdk.UpdateWorkspaceDormancy{Dormant: false})
@@ -861,7 +861,6 @@ func TestWorkspaceAutobuild(t *testing.T) {
861861
t.Parallel()
862862

863863
var (
864-
ctx = testutil.Context(t, testutil.WaitMedium)
865864
tickCh = make(chan time.Time)
866865
statsCh = make(chan autobuild.Stats)
867866
inactiveTTL = time.Minute
@@ -909,6 +908,8 @@ func TestWorkspaceAutobuild(t *testing.T) {
909908
ws = coderdtest.MustWorkspace(t, client, ws.ID)
910909
coderdtest.AwaitWorkspaceBuildJobCompleted(t, client, ws.LatestBuild.ID)
911910

911+
ctx := testutil.Context(t, testutil.WaitMedium)
912+
912913
// Now that we've validated that the workspace is eligible for autostart
913914
// lets cause it to become dormant.
914915
_, err = client.UpdateTemplateMeta(ctx, template.ID, codersdk.UpdateTemplateMeta{
@@ -944,7 +945,6 @@ func TestWorkspaceAutobuild(t *testing.T) {
944945
ticker = make(chan time.Time)
945946
statCh = make(chan autobuild.Stats)
946947
transitionTTL = time.Minute
947-
ctx = testutil.Context(t, testutil.WaitMedium)
948948
)
949949

950950
logger := slogtest.Make(t, &slogtest.Options{IgnoreErrors: true}).Leveled(slog.LevelDebug)
@@ -984,6 +984,8 @@ func TestWorkspaceAutobuild(t *testing.T) {
984984
})
985985
coderdtest.AwaitTemplateVersionJobCompleted(t, client, version.ID)
986986

987+
ctx := testutil.Context(t, testutil.WaitMedium)
988+
987989
// Try to delete the workspace. This simulates a "failed" autodelete.
988990
build, err := templateAdmin.CreateWorkspaceBuild(ctx, ws.ID, codersdk.CreateWorkspaceBuildRequest{
989991
Transition: codersdk.WorkspaceTransitionDelete,
@@ -994,6 +996,8 @@ func TestWorkspaceAutobuild(t *testing.T) {
994996
build = coderdtest.AwaitWorkspaceBuildJobCompleted(t, client, build.ID)
995997
require.NotEmpty(t, build.Job.Error)
996998

999+
ctx = testutil.Context(t, testutil.WaitLong) // Reset the context to avoid timeouts.
1000+
9971001
// Update our workspace to be dormant so that it qualifies for auto-deletion.
9981002
err = templateAdmin.UpdateWorkspaceDormancy(ctx, ws.ID, codersdk.UpdateWorkspaceDormancy{
9991003
Dormant: true,
@@ -1030,7 +1034,6 @@ func TestWorkspaceAutobuild(t *testing.T) {
10301034
var (
10311035
tickCh = make(chan time.Time)
10321036
statsCh = make(chan autobuild.Stats)
1033-
ctx = testutil.Context(t, testutil.WaitMedium)
10341037
)
10351038

10361039
logger := slogtest.Make(t, &slogtest.Options{IgnoreErrors: true}).Leveled(slog.LevelDebug)
@@ -1070,6 +1073,8 @@ func TestWorkspaceAutobuild(t *testing.T) {
10701073
})
10711074
coderdtest.AwaitTemplateVersionJobCompleted(t, client, version2.ID)
10721075

1076+
ctx := testutil.Context(t, testutil.WaitMedium)
1077+
10731078
// Make sure to promote it.
10741079
err = client.UpdateActiveTemplateVersion(ctx, template.ID, codersdk.UpdateActiveTemplateVersion{
10751080
ID: version2.ID,
@@ -1089,6 +1094,8 @@ func TestWorkspaceAutobuild(t *testing.T) {
10891094
firstBuild := coderdtest.AwaitWorkspaceBuildJobCompleted(t, client, started.LatestBuild.ID)
10901095
require.Equal(t, version1.ID, firstBuild.TemplateVersionID)
10911096

1097+
ctx = testutil.Context(t, testutil.WaitMedium) // Reset the context after workspace operations.
1098+
10921099
// Update the template to require the promoted version.
10931100
_, err = client.UpdateTemplateMeta(ctx, template.ID, codersdk.UpdateTemplateMeta{
10941101
RequireActiveVersion: true,
@@ -1538,9 +1545,6 @@ func TestWorkspaceTagsTerraform(t *testing.T) {
15381545
} {
15391546
tc := tc
15401547
t.Run(tc.name, func(t *testing.T) {
1541-
// This can take a while, so set a relatively long timeout.
1542-
ctx := testutil.Context(t, 2*testutil.WaitSuperLong)
1543-
15441548
client, owner := coderdenttest.New(t, &coderdenttest.Options{
15451549
Options: &coderdtest.Options{
15461550
// We intentionally do not run a built-in provisioner daemon here.
@@ -1557,6 +1561,9 @@ func TestWorkspaceTagsTerraform(t *testing.T) {
15571561

15581562
_ = coderdenttest.NewExternalProvisionerDaemonTerraform(t, client, owner.OrganizationID, tc.provisionerTags)
15591563

1564+
// This can take a while, so set a relatively long timeout.
1565+
ctx := testutil.Context(t, 2*testutil.WaitSuperLong)
1566+
15601567
// Creating a template as a template admin must succeed
15611568
templateFiles := map[string]string{"main.tf": fmt.Sprintf(mainTfTemplate, tc.tfWorkspaceTags)}
15621569
tarBytes := testutil.CreateTar(t, templateFiles)
@@ -1595,13 +1602,11 @@ func downloadProviders(t *testing.T, providersTf string) string {
15951602
t.Helper()
15961603
// We firstly write a Terraform CLI config file to a temporary directory:
15971604
var (
1598-
ctx, cancel = context.WithTimeout(context.Background(), testutil.WaitLong)
15991605
tempDir = t.TempDir()
16001606
cacheDir = filepath.Join(tempDir, ".cache")
16011607
providersTfPath = filepath.Join(tempDir, "providers.tf")
16021608
cliConfigPath = filepath.Join(tempDir, "local.tfrc")
16031609
)
1604-
defer cancel()
16051610

16061611
// Write files to disk
16071612
require.NoError(t, os.MkdirAll(cacheDir, os.ModePerm|os.ModeDir))
@@ -1619,6 +1624,8 @@ func downloadProviders(t *testing.T, providersTf string) string {
16191624
err := os.WriteFile(cliConfigPath, []byte(fmt.Sprintf(cliConfigTemplate, cacheDir)), os.ModePerm) // nolint:gosec
16201625
require.NoError(t, err, "failed to write %s", cliConfigPath)
16211626

1627+
ctx := testutil.Context(t, testutil.WaitLong)
1628+
16221629
// Run terraform providers mirror to mirror required providers to cacheDir
16231630
cmd := exec.CommandContext(ctx, "terraform", "providers", "mirror", cacheDir)
16241631
cmd.Env = os.Environ() // without this terraform may complain about path
@@ -1702,7 +1709,6 @@ func TestWorkspacesFiltering(t *testing.T) {
17021709
t.Run("Dormant", func(t *testing.T) {
17031710
t.Parallel()
17041711

1705-
ctx := testutil.Context(t, testutil.WaitMedium)
17061712
logger := slogtest.Make(t, &slogtest.Options{IgnoreErrors: true}).Leveled(slog.LevelDebug)
17071713
client, db, owner := coderdenttest.NewWithDatabase(t, &coderdenttest.Options{
17081714
Options: &coderdtest.Options{
@@ -1736,6 +1742,8 @@ func TestWorkspacesFiltering(t *testing.T) {
17361742
TemplateID: resp.Template.ID,
17371743
}).Do().Workspace
17381744

1745+
ctx := testutil.Context(t, testutil.WaitMedium)
1746+
17391747
err := templateAdminClient.UpdateWorkspaceDormancy(ctx, dormantWS1.ID, codersdk.UpdateWorkspaceDormancy{Dormant: true})
17401748
require.NoError(t, err)
17411749

@@ -2046,16 +2054,16 @@ func TestWorkspaceByOwnerAndName(t *testing.T) {
20462054
t.Run("No Matching Provisioner", func(t *testing.T) {
20472055
t.Parallel()
20482056

2049-
ctx, cancel := context.WithTimeout(context.Background(), testutil.WaitLong)
2050-
defer cancel()
2051-
20522057
client, db, userResponse := coderdenttest.NewWithDatabase(t, &coderdenttest.Options{
20532058
LicenseOptions: &coderdenttest.LicenseOptions{
20542059
Features: license.Features{
20552060
codersdk.FeatureExternalProvisionerDaemons: 1,
20562061
},
20572062
},
20582063
})
2064+
2065+
ctx := testutil.Context(t, testutil.WaitLong)
2066+
20592067
userSubject, _, err := httpmw.UserRBACSubject(ctx, db, userResponse.UserID, rbac.ExpandableScope(rbac.ScopeAll))
20602068
require.NoError(t, err)
20612069
user, err := client.User(ctx, userSubject.ID)
@@ -2070,6 +2078,8 @@ func TestWorkspaceByOwnerAndName(t *testing.T) {
20702078
coderdtest.AwaitTemplateVersionJobCompleted(t, client, version.ID)
20712079
template := coderdtest.CreateTemplate(t, client, userResponse.OrganizationID, version.ID)
20722080

2081+
ctx = testutil.Context(t, testutil.WaitLong) // Reset the context to avoid timeouts.
2082+
20732083
// nolint:gocritic // unit testing
20742084
daemons, err := db.GetProvisionerDaemons(dbauthz.AsSystemRestricted(ctx))
20752085
require.NoError(t, err)
@@ -2121,16 +2131,16 @@ func TestWorkspaceByOwnerAndName(t *testing.T) {
21212131
t.Run("Unavailable Provisioner", func(t *testing.T) {
21222132
t.Parallel()
21232133

2124-
ctx, cancel := context.WithTimeout(context.Background(), testutil.WaitLong)
2125-
defer cancel()
2126-
21272134
client, db, userResponse := coderdenttest.NewWithDatabase(t, &coderdenttest.Options{
21282135
LicenseOptions: &coderdenttest.LicenseOptions{
21292136
Features: license.Features{
21302137
codersdk.FeatureExternalProvisionerDaemons: 1,
21312138
},
21322139
},
21332140
})
2141+
2142+
ctx := testutil.Context(t, testutil.WaitLong)
2143+
21342144
userSubject, _, err := httpmw.UserRBACSubject(ctx, db, userResponse.UserID, rbac.ExpandableScope(rbac.ScopeAll))
21352145
require.NoError(t, err)
21362146
user, err := client.User(ctx, userSubject.ID)
@@ -2145,6 +2155,8 @@ func TestWorkspaceByOwnerAndName(t *testing.T) {
21452155
coderdtest.AwaitTemplateVersionJobCompleted(t, client, version.ID)
21462156
template := coderdtest.CreateTemplate(t, client, userResponse.OrganizationID, version.ID)
21472157

2158+
ctx = testutil.Context(t, testutil.WaitLong) // Reset the context to avoid timeouts.
2159+
21482160
// nolint:gocritic // unit testing
21492161
daemons, err := db.GetProvisionerDaemons(dbauthz.AsSystemRestricted(ctx))
21502162
require.NoError(t, err)

0 commit comments

Comments
 (0)