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

Commit5cba737

Browse files
committed
add unit test for behaviour with an updated template
1 parent7d9b696 commit5cba737

File tree

2 files changed

+69
-0
lines changed

2 files changed

+69
-0
lines changed

‎coderd/autobuild/executor/lifecycle_executor_test.go

Lines changed: 52 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -57,6 +57,58 @@ func TestExecutorAutostartOK(t *testing.T) {
5757
require.Equal(t,database.WorkspaceTransitionStart,ws.LatestBuild.Transition,"expected latest transition to be start")
5858
}
5959

60+
funcTestExecutorAutostartTemplateUpdated(t*testing.T) {
61+
t.Parallel()
62+
63+
var (
64+
ctx=context.Background()
65+
errerror
66+
tickCh=make(chan time.Time)
67+
client=coderdtest.New(t,&coderdtest.Options{
68+
LifecycleTicker:tickCh,
69+
})
70+
// Given: we have a user with a workspace
71+
workspace=mustProvisionWorkspace(t,client)
72+
)
73+
// Given: workspace is stopped
74+
workspace=mustTransitionWorkspace(t,client,workspace.ID,database.WorkspaceTransitionStart,database.WorkspaceTransitionStop)
75+
76+
// Given: the workspace initially has autostart disabled
77+
require.Empty(t,workspace.AutostartSchedule)
78+
79+
// Given: the workspace template has been updated
80+
orgs,err:=client.OrganizationsByUser(ctx,workspace.OwnerID)
81+
require.NoError(t,err)
82+
require.Len(t,orgs,1)
83+
84+
newVersion:=coderdtest.UpdateTemplateVersion(t,client,orgs[0].ID,nil,workspace.TemplateID)
85+
coderdtest.AwaitTemplateVersionJob(t,client,newVersion.ID)
86+
require.NoError(t,client.UpdateActiveTemplateVersion(ctx,workspace.TemplateID, codersdk.UpdateActiveTemplateVersion{
87+
ID:newVersion.ID,
88+
}))
89+
90+
// When: we enable workspace autostart
91+
sched,err:=schedule.Weekly("* * * * *")
92+
require.NoError(t,err)
93+
require.NoError(t,client.UpdateWorkspaceAutostart(ctx,workspace.ID, codersdk.UpdateWorkspaceAutostartRequest{
94+
Schedule:sched.String(),
95+
}))
96+
97+
// When: the autobuild executor ticks
98+
gofunc() {
99+
tickCh<-time.Now().UTC().Add(time.Minute)
100+
close(tickCh)
101+
}()
102+
103+
// Then: the workspace should be started using the previous template version, and not the updated version.
104+
<-time.After(5*time.Second)
105+
ws:=mustWorkspace(t,client,workspace.ID)
106+
require.NotEqual(t,workspace.LatestBuild.ID,ws.LatestBuild.ID,"expected a workspace build to occur")
107+
require.Equal(t,codersdk.ProvisionerJobSucceeded,ws.LatestBuild.Job.Status,"expected provisioner job to have succeeded")
108+
require.Equal(t,database.WorkspaceTransitionStart,ws.LatestBuild.Transition,"expected latest transition to be start")
109+
require.Equal(t,workspace.LatestBuild.TemplateVersionID,ws.LatestBuild.TemplateVersionID,"expected workspace build to be using the old template version")
110+
}
111+
60112
funcTestExecutorAutostartAlreadyRunning(t*testing.T) {
61113
t.Parallel()
62114

‎coderd/coderdtest/coderdtest.go

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -261,6 +261,23 @@ func CreateTemplate(t *testing.T, client *codersdk.Client, organization uuid.UUI
261261
returntemplate
262262
}
263263

264+
// UpdateTemplateVersion creates a new template version with the "echo" provisioner
265+
// and associates it with the given templateID.
266+
funcUpdateTemplateVersion(t*testing.T,client*codersdk.Client,organizationID uuid.UUID,res*echo.Responses,templateID uuid.UUID) codersdk.TemplateVersion {
267+
data,err:=echo.Tar(res)
268+
require.NoError(t,err)
269+
file,err:=client.Upload(context.Background(),codersdk.ContentTypeTar,data)
270+
require.NoError(t,err)
271+
templateVersion,err:=client.CreateTemplateVersion(context.Background(),organizationID, codersdk.CreateTemplateVersionRequest{
272+
TemplateID:templateID,
273+
StorageSource:file.Hash,
274+
StorageMethod:database.ProvisionerStorageMethodFile,
275+
Provisioner:database.ProvisionerTypeEcho,
276+
})
277+
require.NoError(t,err)
278+
returntemplateVersion
279+
}
280+
264281
// AwaitTemplateImportJob awaits for an import job to reach completed status.
265282
funcAwaitTemplateVersionJob(t*testing.T,client*codersdk.Client,version uuid.UUID) codersdk.TemplateVersion {
266283
vartemplateVersion codersdk.TemplateVersion

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp