Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit5e49d8c

Browse files
authored
chore: reduce execution time of TestProvisionerJobs (#19475)
Note: this commit was partially authored by AI.- Replaces coderdtest.CreateTemplate/TemplateVersion() with direct dbgencalls. We do not need a fully functional template for these tests.- Removes provisioner daemon creation/cleanup. We do not need a runningprovisioner daemon here; this functionality is tested elsewhere. - Simplifies provisioner job creation test helpers.This reduces the test runtime by over 50%:Old:```time go test -count=100 ./cli -test.run=TestProvisionerJobsok github.com/coder/coder/v2/cli 50.149s```New:```time go test -count=100 ./cli -test.run=TestProvisionerJobsok github.com/coder/coder/v2/cli 21.898```
1 parent4970da4 commit5e49d8c

File tree

1 file changed

+52
-59
lines changed

1 file changed

+52
-59
lines changed

‎cli/provisionerjobs_test.go‎

Lines changed: 52 additions & 59 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,6 @@ import (
88
"testing"
99
"time"
1010

11-
"github.com/aws/smithy-go/ptr"
1211
"github.com/google/uuid"
1312
"github.com/stretchr/testify/assert"
1413
"github.com/stretchr/testify/require"
@@ -20,6 +19,7 @@ import (
2019
"github.com/coder/coder/v2/coderd/database/dbtestutil"
2120
"github.com/coder/coder/v2/coderd/rbac"
2221
"github.com/coder/coder/v2/codersdk"
22+
"github.com/coder/coder/v2/provisionersdk"
2323
"github.com/coder/coder/v2/testutil"
2424
)
2525

@@ -36,67 +36,43 @@ func TestProvisionerJobs(t *testing.T) {
3636
templateAdminClient,templateAdmin:=coderdtest.CreateAnotherUser(t,client,owner.OrganizationID,rbac.ScopedRoleOrgTemplateAdmin(owner.OrganizationID))
3737
memberClient,member:=coderdtest.CreateAnotherUser(t,client,owner.OrganizationID)
3838

39-
// Create initial resources with a running provisioner.
40-
firstProvisioner:=coderdtest.NewTaggedProvisionerDaemon(t,coderdAPI,"default-provisioner",map[string]string{"owner":"","scope":"organization"})
41-
t.Cleanup(func() {_=firstProvisioner.Close() })
42-
version:=coderdtest.CreateTemplateVersion(t,client,owner.OrganizationID,completeWithAgent())
43-
coderdtest.AwaitTemplateVersionJobCompleted(t,client,version.ID)
44-
template:=coderdtest.CreateTemplate(t,client,owner.OrganizationID,version.ID,func(req*codersdk.CreateTemplateRequest) {
45-
req.AllowUserCancelWorkspaceJobs=ptr.Bool(true)
39+
// These CLI tests are related to provisioner job CRUD operations and as such
40+
// do not require the overhead of starting a provisioner. Other provisioner job
41+
// functionalities (acquisition etc.) are tested elsewhere.
42+
template:=dbgen.Template(t,db, database.Template{
43+
OrganizationID:owner.OrganizationID,
44+
CreatedBy:owner.UserID,
45+
AllowUserCancelWorkspaceJobs:true,
46+
})
47+
version:=dbgen.TemplateVersion(t,db, database.TemplateVersion{
48+
OrganizationID:owner.OrganizationID,
49+
CreatedBy:owner.UserID,
50+
TemplateID: uuid.NullUUID{UUID:template.ID,Valid:true},
4651
})
47-
48-
// Stop the provisioner so it doesn't grab any more jobs.
49-
firstProvisioner.Close()
5052

5153
t.Run("Cancel",func(t*testing.T) {
5254
t.Parallel()
5355

54-
// Set up test helpers.
55-
typejobInputstruct {
56-
WorkspaceBuildIDstring`json:"workspace_build_id,omitempty"`
57-
TemplateVersionIDstring`json:"template_version_id,omitempty"`
58-
DryRunbool`json:"dry_run,omitempty"`
59-
}
60-
prepareJob:=func(t*testing.T,inputjobInput) database.ProvisionerJob {
56+
// Test helper to create a provisioner job of a given type with a given input.
57+
prepareJob:=func(t*testing.T,jobType database.ProvisionerJobType,input json.RawMessage) database.ProvisionerJob {
6158
t.Helper()
62-
63-
inputBytes,err:=json.Marshal(input)
64-
require.NoError(t,err)
65-
66-
vartyp database.ProvisionerJobType
67-
switch {
68-
caseinput.WorkspaceBuildID!="":
69-
typ=database.ProvisionerJobTypeWorkspaceBuild
70-
caseinput.TemplateVersionID!="":
71-
ifinput.DryRun {
72-
typ=database.ProvisionerJobTypeTemplateVersionDryRun
73-
}else {
74-
typ=database.ProvisionerJobTypeTemplateVersionImport
75-
}
76-
default:
77-
t.Fatal("invalid input")
78-
}
79-
80-
var (
81-
tags= database.StringMap{"owner":"","scope":"organization","foo":uuid.New().String()}
82-
_=dbgen.ProvisionerDaemon(t,db, database.ProvisionerDaemon{Tags:tags})
83-
job=dbgen.ProvisionerJob(t,db,coderdAPI.Pubsub, database.ProvisionerJob{
84-
InitiatorID:member.ID,
85-
Input:json.RawMessage(inputBytes),
86-
Type:typ,
87-
Tags:tags,
88-
StartedAt: sql.NullTime{Time:coderdAPI.Clock.Now().Add(-time.Minute),Valid:true},
89-
})
90-
)
91-
returnjob
59+
returndbgen.ProvisionerJob(t,db,coderdAPI.Pubsub, database.ProvisionerJob{
60+
InitiatorID:member.ID,
61+
Input:input,
62+
Type:jobType,
63+
StartedAt: sql.NullTime{Time:coderdAPI.Clock.Now().Add(-time.Minute),Valid:true},
64+
Tags: database.StringMap{provisionersdk.TagOwner:"",provisionersdk.TagScope:provisionersdk.ScopeOrganization,"foo":uuid.NewString()},
65+
})
9266
}
9367

68+
// Test helper to create a workspace build job with a predefined input.
9469
prepareWorkspaceBuildJob:=func(t*testing.T) database.ProvisionerJob {
9570
t.Helper()
9671
var (
97-
wbID=uuid.New()
98-
job=prepareJob(t,jobInput{WorkspaceBuildID:wbID.String()})
99-
w=dbgen.Workspace(t,db, database.WorkspaceTable{
72+
wbID=uuid.New()
73+
input,_=json.Marshal(map[string]string{"workspace_build_id":wbID.String()})
74+
job=prepareJob(t,database.ProvisionerJobTypeWorkspaceBuild,input)
75+
w=dbgen.Workspace(t,db, database.WorkspaceTable{
10076
OrganizationID:owner.OrganizationID,
10177
OwnerID:member.ID,
10278
TemplateID:template.ID,
@@ -112,12 +88,14 @@ func TestProvisionerJobs(t *testing.T) {
11288
returnjob
11389
}
11490

115-
prepareTemplateVersionImportJobBuilder:=func(t*testing.T,dryRunbool) database.ProvisionerJob {
91+
// Test helper to create a template version import job with a predefined input.
92+
prepareTemplateVersionImportJob:=func(t*testing.T) database.ProvisionerJob {
11693
t.Helper()
11794
var (
118-
tvID=uuid.New()
119-
job=prepareJob(t,jobInput{TemplateVersionID:tvID.String(),DryRun:dryRun})
120-
_=dbgen.TemplateVersion(t,db, database.TemplateVersion{
95+
tvID=uuid.New()
96+
input,_=json.Marshal(map[string]string{"template_version_id":tvID.String()})
97+
job=prepareJob(t,database.ProvisionerJobTypeTemplateVersionImport,input)
98+
_=dbgen.TemplateVersion(t,db, database.TemplateVersion{
12199
OrganizationID:owner.OrganizationID,
122100
CreatedBy:templateAdmin.ID,
123101
ID:tvID,
@@ -127,11 +105,26 @@ func TestProvisionerJobs(t *testing.T) {
127105
)
128106
returnjob
129107
}
130-
prepareTemplateVersionImportJob:=func(t*testing.T) database.ProvisionerJob {
131-
returnprepareTemplateVersionImportJobBuilder(t,false)
132-
}
108+
109+
// Test helper to create a template version import dry run job with a predefined input.
133110
prepareTemplateVersionImportJobDryRun:=func(t*testing.T) database.ProvisionerJob {
134-
returnprepareTemplateVersionImportJobBuilder(t,true)
111+
t.Helper()
112+
var (
113+
tvID=uuid.New()
114+
input,_=json.Marshal(map[string]interface{}{
115+
"template_version_id":tvID.String(),
116+
"dry_run":true,
117+
})
118+
job=prepareJob(t,database.ProvisionerJobTypeTemplateVersionDryRun,input)
119+
_=dbgen.TemplateVersion(t,db, database.TemplateVersion{
120+
OrganizationID:owner.OrganizationID,
121+
CreatedBy:templateAdmin.ID,
122+
ID:tvID,
123+
TemplateID: uuid.NullUUID{UUID:template.ID,Valid:true},
124+
JobID:job.ID,
125+
})
126+
)
127+
returnjob
135128
}
136129

137130
// Run the cancellation test suite.

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp