Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit cebd5db

Browse files
committed
add an integration test for prebuilt workspace agent reinitialization
1 parent efff5d9 commit cebd5db

7 files changed

Lines changed: 1841 additions & 1666 deletions

File tree

cli/agent_test.go

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@ import (
2222
"github.com/coder/coder/v2/coderd/database"
2323
"github.com/coder/coder/v2/coderd/database/dbfake"
2424
"github.com/coder/coder/v2/coderd/database/dbtestutil"
25+
"github.com/coder/coder/v2/coderd/prebuilds"
2526
"github.com/coder/coder/v2/codersdk"
2627
"github.com/coder/coder/v2/codersdk/agentsdk"
2728
"github.com/coder/coder/v2/codersdk/workspacesdk"
@@ -332,14 +333,21 @@ func TestAgent_Prebuild(t *testing.T) {
332333
Pubsub: pubsub,
333334
})
334335
user := coderdtest.CreateFirstUser(t, client)
335-
r := dbfake.WorkspaceBuild(t, db, database.WorkspaceTable{
336+
presetID := uuid.New()
337+
tv := dbfake.TemplateVersion(t, db).Seed(database.TemplateVersion{
336338
OrganizationID: user.OrganizationID,
337-
OwnerID: user.UserID,
339+
CreatedBy: user.UserID,
340+
}).Preset(database.TemplateVersionPreset{
341+
ID: presetID,
342+
}).Do()
343+
r := dbfake.WorkspaceBuild(t, db, database.WorkspaceTable{
344+
OwnerID: prebuilds.SystemUserID,
345+
TemplateID: tv.Template.ID,
338346
}).WithAgent(func(a []*proto.Agent) []*proto.Agent {
339347
a[0].Scripts = []*proto.Script{
340348
{
341349
DisplayName: "Prebuild Test Script",
342-
Script: "sleep 5", // Make reinitiazation take long enough to assert that it happened
350+
Script: "sleep 5", // Make reinitialization take long enough to assert that it happened
343351
RunOnStart: true,
344352
},
345353
}

coderd/database/dbfake/dbfake.go

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -294,6 +294,8 @@ type TemplateVersionBuilder struct {
294294
ps pubsub.Pubsub
295295
resources []*sdkproto.Resource
296296
params []database.TemplateVersionParameter
297+
presets []database.TemplateVersionPreset
298+
presetParams []database.TemplateVersionPresetParameter
297299
promote bool
298300
autoCreateTemplate bool
299301
}
@@ -339,6 +341,13 @@ func (t TemplateVersionBuilder) Params(ps ...database.TemplateVersionParameter)
339341
return t
340342
}
341343

344+
func (t TemplateVersionBuilder) Preset(preset database.TemplateVersionPreset, params ...database.TemplateVersionPresetParameter) TemplateVersionBuilder {
345+
// nolint: revive // returns modified struct
346+
t.presets = append(t.presets, preset)
347+
t.presetParams = append(t.presetParams, params...)
348+
return t
349+
}
350+
342351
func (t TemplateVersionBuilder) SkipCreateTemplate() TemplateVersionBuilder {
343352
// nolint: revive // returns modified struct
344353
t.autoCreateTemplate = false
@@ -378,6 +387,25 @@ func (t TemplateVersionBuilder) Do() TemplateVersionResponse {
378387
require.NoError(t.t, err)
379388
}
380389

390+
for _, preset := range t.presets {
391+
dbgen.Preset(t.t, t.db, database.InsertPresetParams{
392+
ID: preset.ID,
393+
TemplateVersionID: version.ID,
394+
Name: preset.Name,
395+
CreatedAt: version.CreatedAt,
396+
DesiredInstances: preset.DesiredInstances,
397+
InvalidateAfterSecs: preset.InvalidateAfterSecs,
398+
})
399+
}
400+
401+
for _, presetParam := range t.presetParams {
402+
dbgen.PresetParameter(t.t, t.db, database.InsertPresetParametersParams{
403+
TemplateVersionPresetID: presetParam.TemplateVersionPresetID,
404+
Names: []string{presetParam.Name},
405+
Values: []string{presetParam.Value},
406+
})
407+
}
408+
381409
payload, err := json.Marshal(provisionerdserver.TemplateVersionImportJob{
382410
TemplateVersionID: t.seed.ID,
383411
})

coderd/database/dbgen/dbgen.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1198,6 +1198,7 @@ func TelemetryItem(t testing.TB, db database.Store, seed database.TelemetryItem)
11981198

11991199
func Preset(t testing.TB, db database.Store, seed database.InsertPresetParams) database.TemplateVersionPreset {
12001200
preset, err := db.InsertPreset(genCtx, database.InsertPresetParams{
1201+
ID: takeFirst(seed.ID, uuid.New()),
12011202
TemplateVersionID: takeFirst(seed.TemplateVersionID, uuid.New()),
12021203
Name: takeFirst(seed.Name, testutil.GetRandomName(t)),
12031204
CreatedAt: takeFirst(seed.CreatedAt, dbtime.Now()),

coderd/database/queries.sql.go

Lines changed: 16 additions & 5 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

coderd/database/queries/presets.sql

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,14 @@
11
-- name: InsertPreset :one
22
INSERT INTO template_version_presets (
3+
id,
34
template_version_id,
45
name,
56
created_at,
67
desired_instances,
78
invalidate_after_secs
89
)
910
VALUES (
11+
@id,
1012
@template_version_id,
1113
@name,
1214
@created_at,
@@ -16,8 +18,9 @@ VALUES (
1618

1719
-- name: InsertPresetParameters :many
1820
INSERT INTO
19-
template_version_preset_parameters (template_version_preset_id, name, value)
21+
template_version_preset_parameters (id, template_version_preset_id, name, value)
2022
SELECT
23+
@id,
2124
@template_version_preset_id,
2225
unnest(@names :: TEXT[]),
2326
unnest(@values :: TEXT[])

0 commit comments

Comments
 (0)