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

Commitaa0b769

Browse files
tests: refactor
1 parent3394644 commitaa0b769

File tree

2 files changed

+254
-149
lines changed

2 files changed

+254
-149
lines changed

‎coderd/schedule/template_test.go

Lines changed: 111 additions & 40 deletions
Original file line numberDiff line numberDiff line change
@@ -18,56 +18,127 @@ import (
1818
funcTestTemplateTTL(t*testing.T) {
1919
t.Parallel()
2020

21-
t.Run("ModifiesWorkspaceTTL",func(t*testing.T) {
22-
t.Parallel()
21+
tests:= []struct {
22+
namestring
23+
fromTTL time.Duration
24+
toTTL time.Duration
25+
expected sql.NullInt64
26+
}{
27+
{
28+
name:"ModifyTTLDurationDown",
29+
fromTTL:24*time.Hour,
30+
toTTL:1*time.Hour,
31+
expected: sql.NullInt64{Valid:true,Int64:int64(1*time.Hour)},
32+
},
33+
{
34+
name:"ModifyTTLDurationUp",
35+
fromTTL:24*time.Hour,
36+
toTTL:36*time.Hour,
37+
expected: sql.NullInt64{Valid:true,Int64:int64(36*time.Hour)},
38+
},
39+
{
40+
name:"DisableTTL",
41+
fromTTL:24*time.Hour,
42+
toTTL:0,
43+
expected: sql.NullInt64{},
44+
},
45+
}
2346

24-
var (
25-
db,_=dbtestutil.NewDB(t)
26-
ctx=testutil.Context(t,testutil.WaitLong)
27-
user=dbgen.User(t,db, database.User{})
28-
file=dbgen.File(t,db, database.File{CreatedBy:user.ID})
29-
templateJob=dbgen.ProvisionerJob(t,db,nil, database.ProvisionerJob{
30-
FileID:file.ID,
31-
InitiatorID:user.ID,
32-
Tags: database.StringMap{"foo":"bar"},
33-
})
34-
defaultTTL=24*time.Hour
35-
templateVersion=dbgen.TemplateVersion(t,db, database.TemplateVersion{
36-
CreatedBy:user.ID,
37-
JobID:templateJob.ID,
38-
OrganizationID:templateJob.OrganizationID,
47+
for_,tt:=rangetests {
48+
tt:=tt
49+
50+
t.Run(tt.name,func(t*testing.T) {
51+
t.Parallel()
52+
53+
var (
54+
db,_=dbtestutil.NewDB(t)
55+
ctx=testutil.Context(t,testutil.WaitLong)
56+
user=dbgen.User(t,db, database.User{})
57+
file=dbgen.File(t,db, database.File{CreatedBy:user.ID})
58+
// Create first template
59+
templateJob=dbgen.ProvisionerJob(t,db,nil, database.ProvisionerJob{
60+
FileID:file.ID,
61+
InitiatorID:user.ID,
62+
Tags: database.StringMap{"foo":"bar"},
63+
})
64+
templateVersion=dbgen.TemplateVersion(t,db, database.TemplateVersion{
65+
CreatedBy:user.ID,
66+
JobID:templateJob.ID,
67+
OrganizationID:templateJob.OrganizationID,
68+
})
69+
template=dbgen.Template(t,db, database.Template{
70+
ActiveVersionID:templateVersion.ID,
71+
CreatedBy:user.ID,
72+
OrganizationID:templateJob.OrganizationID,
73+
})
74+
// Create second template
75+
otherTTL=tt.fromTTL+6*time.Hour
76+
otherTemplateJob=dbgen.ProvisionerJob(t,db,nil, database.ProvisionerJob{
77+
FileID:file.ID,
78+
InitiatorID:user.ID,
79+
Tags: database.StringMap{"foo":"bar"},
80+
})
81+
otherTemplateVersion=dbgen.TemplateVersion(t,db, database.TemplateVersion{
82+
CreatedBy:user.ID,
83+
JobID:otherTemplateJob.ID,
84+
OrganizationID:otherTemplateJob.OrganizationID,
85+
})
86+
otherTemplate=dbgen.Template(t,db, database.Template{
87+
ActiveVersionID:otherTemplateVersion.ID,
88+
CreatedBy:user.ID,
89+
OrganizationID:otherTemplateJob.OrganizationID,
90+
})
91+
)
92+
93+
templateScheduleStore:=schedule.NewAGPLTemplateScheduleStore()
94+
95+
// Set both template's default TTL
96+
template,err:=templateScheduleStore.Set(ctx,db,template, schedule.TemplateScheduleOptions{
97+
DefaultTTL:tt.fromTTL,
3998
})
40-
template=dbgen.Template(t,db, database.Template{
41-
ActiveVersionID:templateVersion.ID,
42-
CreatedBy:user.ID,
43-
OrganizationID:templateJob.OrganizationID,
44-
DefaultTTL:int64(defaultTTL),
99+
require.NoError(t,err)
100+
otherTemplate,err=templateScheduleStore.Set(ctx,db,otherTemplate, schedule.TemplateScheduleOptions{
101+
DefaultTTL:otherTTL,
45102
})
46-
workspace=dbgen.Workspace(t,db, database.WorkspaceTable{
103+
require.NoError(t,err)
104+
105+
// We create two workspaces here, one with the template we're modifying, the
106+
// other with a different template. We want to ensure we only modify one
107+
// of the workspaces.
108+
workspace:=dbgen.Workspace(t,db, database.WorkspaceTable{
47109
OwnerID:user.ID,
48110
TemplateID:template.ID,
49111
OrganizationID:templateJob.OrganizationID,
50112
LastUsedAt:dbtime.Now(),
51-
Ttl: sql.NullInt64{Valid:true,Int64:int64(defaultTTL)},
113+
Ttl: sql.NullInt64{Valid:true,Int64:int64(tt.fromTTL)},
114+
})
115+
otherWorkspace:=dbgen.Workspace(t,db, database.WorkspaceTable{
116+
OwnerID:user.ID,
117+
TemplateID:otherTemplate.ID,
118+
OrganizationID:otherTemplateJob.OrganizationID,
119+
LastUsedAt:dbtime.Now(),
120+
Ttl: sql.NullInt64{Valid:true,Int64:int64(otherTTL)},
52121
})
53-
)
54122

55-
templateScheduleStore:=schedule.NewAGPLTemplateScheduleStore()
123+
// Ensure the workspace's start with the correct TTLs
124+
require.Equal(t, sql.NullInt64{Valid:true,Int64:int64(tt.fromTTL)},workspace.Ttl)
125+
require.Equal(t, sql.NullInt64{Valid:true,Int64:int64(otherTTL)},otherWorkspace.Ttl)
56126

57-
// We've created a template with a TTL of 24 hours, so we expect our
58-
// workspace to have a TTL of 24 hours.
59-
require.Equal(t, sql.NullInt64{Valid:true,Int64:int64(defaultTTL)},workspace.Ttl)
127+
// Update _only_ the primary template's TTL
128+
_,err=templateScheduleStore.Set(ctx,db,template, schedule.TemplateScheduleOptions{
129+
DefaultTTL:tt.toTTL,
130+
})
131+
require.NoError(t,err)
60132

61-
// We expect an AGPL template schedule store to always update
62-
// the TTL of existing workspaces.
63-
_,err:=templateScheduleStore.Set(ctx,db,template, schedule.TemplateScheduleOptions{
64-
DefaultTTL:1*time.Hour,
65-
})
66-
require.NoError(t,err)
133+
// Verify the primary workspace's TTL has been updated.
134+
ws,err:=db.GetWorkspaceByID(ctx,workspace.ID)
135+
require.NoError(t,err)
136+
require.Equal(t,tt.expected,ws.Ttl)
67137

68-
// Verify that the workspace's TTL has been updated.
69-
ws,err:=db.GetWorkspaceByID(ctx,workspace.ID)
70-
require.NoError(t,err)
71-
require.Equal(t, sql.NullInt64{Valid:true,Int64:int64(1*time.Hour)},ws.Ttl)
72-
})
138+
// Verify that the other workspace's TTL has not been touched.
139+
ws,err=db.GetWorkspaceByID(ctx,otherWorkspace.ID)
140+
require.NoError(t,err)
141+
require.Equal(t, sql.NullInt64{Valid:true,Int64:int64(otherTTL)},ws.Ttl)
142+
})
143+
}
73144
}

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp