Skip to content

Commit b776b1b

Browse files
committed
fixup! test
1 parent 98f59b0 commit b776b1b

File tree

1 file changed

+91
-75
lines changed

1 file changed

+91
-75
lines changed

cli/provisioners_test.go

Lines changed: 91 additions & 75 deletions
Original file line numberDiff line numberDiff line change
@@ -20,82 +20,82 @@ import (
2020
func TestProvisioners(t *testing.T) {
2121
t.Parallel()
2222

23-
t.Run("List", func(t *testing.T) {
24-
t.Parallel()
23+
db, ps := dbtestutil.NewDB(t, dbtestutil.WithDumpOnFailure())
24+
client, _, coderdAPI := coderdtest.NewWithAPI(t, &coderdtest.Options{
25+
IncludeProvisionerDaemon: true,
26+
Database: db,
27+
Pubsub: ps,
28+
})
29+
owner := coderdtest.CreateFirstUser(t, client)
30+
member, memberUser := coderdtest.CreateAnotherUser(t, client, owner.OrganizationID)
31+
32+
version := coderdtest.CreateTemplateVersion(t, client, owner.OrganizationID, completeWithAgent())
33+
coderdtest.AwaitTemplateVersionJobCompleted(t, client, version.ID)
34+
template := coderdtest.CreateTemplate(t, client, owner.OrganizationID, version.ID)
35+
36+
workspace := coderdtest.CreateWorkspace(t, client, template.ID)
37+
coderdtest.AwaitWorkspaceBuildJobCompleted(t, client, workspace.LatestBuild.ID)
38+
39+
// Create a provisioner that's working on a job.
40+
pd1 := dbgen.ProvisionerDaemon(t, coderdAPI.Database, database.ProvisionerDaemon{
41+
Name: "provisioner-1",
42+
CreatedAt: timeParse(t, "2006-01-02", "2024-12-20"),
43+
KeyID: uuid.MustParse(codersdk.ProvisionerKeyIDBuiltIn),
44+
})
45+
w1 := dbgen.Workspace(t, coderdAPI.Database, database.WorkspaceTable{
46+
OwnerID: memberUser.ID,
47+
TemplateID: template.ID,
48+
})
49+
wb1ID := uuid.MustParse("00000000-0000-0000-bbbb-000000000001")
50+
job1 := dbgen.ProvisionerJob(t, db, coderdAPI.Pubsub, database.ProvisionerJob{
51+
ID: uuid.MustParse("00000000-0000-0000-cccc-000000000001"),
52+
WorkerID: uuid.NullUUID{UUID: pd1.ID, Valid: true},
53+
Input: json.RawMessage(`{"workspace_build_id":"` + wb1ID.String() + `"}`),
54+
StartedAt: sql.NullTime{Time: coderdAPI.Clock.Now(), Valid: true},
55+
})
56+
dbgen.WorkspaceBuild(t, coderdAPI.Database, database.WorkspaceBuild{
57+
ID: wb1ID,
58+
JobID: job1.ID,
59+
WorkspaceID: w1.ID,
60+
TemplateVersionID: version.ID,
61+
})
62+
63+
// Create another provisioner that completed a job and is offline.
64+
pd2 := dbgen.ProvisionerDaemon(t, coderdAPI.Database, database.ProvisionerDaemon{
65+
Name: "provisioner-2",
66+
CreatedAt: timeParse(t, "2006-01-02", "2024-12-20"),
67+
LastSeenAt: sql.NullTime{Time: coderdAPI.Clock.Now().Add(-time.Hour), Valid: true},
68+
KeyID: uuid.MustParse(codersdk.ProvisionerKeyIDBuiltIn),
69+
})
70+
w2 := dbgen.Workspace(t, coderdAPI.Database, database.WorkspaceTable{
71+
OwnerID: memberUser.ID,
72+
TemplateID: template.ID,
73+
})
74+
wb2ID := uuid.MustParse("00000000-0000-0000-bbbb-000000000002")
75+
job2 := dbgen.ProvisionerJob(t, db, coderdAPI.Pubsub, database.ProvisionerJob{
76+
ID: uuid.MustParse("00000000-0000-0000-cccc-000000000002"),
77+
WorkerID: uuid.NullUUID{UUID: pd2.ID, Valid: true},
78+
Input: json.RawMessage(`{"workspace_build_id":"` + wb2ID.String() + `"}`),
79+
StartedAt: sql.NullTime{Time: coderdAPI.Clock.Now().Add(-2 * time.Hour), Valid: true},
80+
CompletedAt: sql.NullTime{Time: coderdAPI.Clock.Now().Add(-time.Hour), Valid: true},
81+
})
82+
dbgen.WorkspaceBuild(t, coderdAPI.Database, database.WorkspaceBuild{
83+
ID: wb2ID,
84+
JobID: job2.ID,
85+
WorkspaceID: w2.ID,
86+
TemplateVersionID: version.ID,
87+
})
88+
89+
// Create a provisioner that is idle.
90+
pd3 := dbgen.ProvisionerDaemon(t, coderdAPI.Database, database.ProvisionerDaemon{
91+
Name: "provisioner-3",
92+
CreatedAt: timeParse(t, "2006-01-02", "2024-12-20"),
93+
KeyID: uuid.MustParse(codersdk.ProvisionerKeyIDBuiltIn),
94+
})
95+
_ = pd3
2596

26-
db, ps := dbtestutil.NewDB(t, dbtestutil.WithDumpOnFailure())
27-
client, _, coderdAPI := coderdtest.NewWithAPI(t, &coderdtest.Options{
28-
IncludeProvisionerDaemon: true,
29-
Database: db,
30-
Pubsub: ps,
31-
})
32-
owner := coderdtest.CreateFirstUser(t, client)
33-
member, memberUser := coderdtest.CreateAnotherUser(t, client, owner.OrganizationID)
34-
35-
version := coderdtest.CreateTemplateVersion(t, client, owner.OrganizationID, completeWithAgent())
36-
coderdtest.AwaitTemplateVersionJobCompleted(t, client, version.ID)
37-
template := coderdtest.CreateTemplate(t, client, owner.OrganizationID, version.ID)
38-
39-
workspace := coderdtest.CreateWorkspace(t, client, template.ID)
40-
coderdtest.AwaitWorkspaceBuildJobCompleted(t, client, workspace.LatestBuild.ID)
41-
42-
// Create a provisioner that's working on a job.
43-
pd1 := dbgen.ProvisionerDaemon(t, coderdAPI.Database, database.ProvisionerDaemon{
44-
Name: "provisioner-1",
45-
CreatedAt: timeParse(t, "2006-01-02", "2024-12-20"),
46-
KeyID: uuid.MustParse(codersdk.ProvisionerKeyIDBuiltIn),
47-
})
48-
w1 := dbgen.Workspace(t, coderdAPI.Database, database.WorkspaceTable{
49-
OwnerID: memberUser.ID,
50-
TemplateID: template.ID,
51-
})
52-
wb1ID := uuid.MustParse("00000000-0000-0000-bbbb-000000000001")
53-
job1 := dbgen.ProvisionerJob(t, db, coderdAPI.Pubsub, database.ProvisionerJob{
54-
ID: uuid.MustParse("00000000-0000-0000-cccc-000000000001"),
55-
WorkerID: uuid.NullUUID{UUID: pd1.ID, Valid: true},
56-
Input: json.RawMessage(`{"workspace_build_id":"` + wb1ID.String() + `"}`),
57-
StartedAt: sql.NullTime{Time: coderdAPI.Clock.Now(), Valid: true},
58-
})
59-
dbgen.WorkspaceBuild(t, coderdAPI.Database, database.WorkspaceBuild{
60-
ID: wb1ID,
61-
JobID: job1.ID,
62-
WorkspaceID: w1.ID,
63-
TemplateVersionID: version.ID,
64-
})
65-
66-
// Create another provisioner that completed a job and is offline.
67-
pd2 := dbgen.ProvisionerDaemon(t, coderdAPI.Database, database.ProvisionerDaemon{
68-
Name: "provisioner-2",
69-
CreatedAt: timeParse(t, "2006-01-02", "2024-12-20"),
70-
LastSeenAt: sql.NullTime{Time: coderdAPI.Clock.Now().Add(-time.Hour), Valid: true},
71-
KeyID: uuid.MustParse(codersdk.ProvisionerKeyIDBuiltIn),
72-
})
73-
w2 := dbgen.Workspace(t, coderdAPI.Database, database.WorkspaceTable{
74-
OwnerID: memberUser.ID,
75-
TemplateID: template.ID,
76-
})
77-
wb2ID := uuid.MustParse("00000000-0000-0000-bbbb-000000000002")
78-
job2 := dbgen.ProvisionerJob(t, db, coderdAPI.Pubsub, database.ProvisionerJob{
79-
ID: uuid.MustParse("00000000-0000-0000-cccc-000000000002"),
80-
WorkerID: uuid.NullUUID{UUID: pd2.ID, Valid: true},
81-
Input: json.RawMessage(`{"workspace_build_id":"` + wb2ID.String() + `"}`),
82-
StartedAt: sql.NullTime{Time: coderdAPI.Clock.Now().Add(-2 * time.Hour), Valid: true},
83-
CompletedAt: sql.NullTime{Time: coderdAPI.Clock.Now().Add(-time.Hour), Valid: true},
84-
})
85-
dbgen.WorkspaceBuild(t, coderdAPI.Database, database.WorkspaceBuild{
86-
ID: wb2ID,
87-
JobID: job2.ID,
88-
WorkspaceID: w2.ID,
89-
TemplateVersionID: version.ID,
90-
})
91-
92-
// Create a provisioner that is idle.
93-
pd3 := dbgen.ProvisionerDaemon(t, coderdAPI.Database, database.ProvisionerDaemon{
94-
Name: "provisioner-3",
95-
CreatedAt: timeParse(t, "2006-01-02", "2024-12-20"),
96-
KeyID: uuid.MustParse(codersdk.ProvisionerKeyIDBuiltIn),
97-
})
98-
_ = pd3
97+
t.Run("list", func(t *testing.T) {
98+
t.Parallel()
9999

100100
inv, root := clitest.New(t,
101101
"provisioners",
@@ -108,6 +108,22 @@ func TestProvisioners(t *testing.T) {
108108

109109
// TODO(mafredri): Verify golden output.
110110
})
111+
112+
t.Run("jobs list", func(t *testing.T) {
113+
t.Parallel()
114+
115+
inv, root := clitest.New(t,
116+
"provisioners",
117+
"jobs",
118+
"list",
119+
"--column", "id,created at,status,worker id,tags,template version id,workspace build id,type,available workers,organization,queue",
120+
)
121+
clitest.SetupConfig(t, member, root)
122+
err := inv.Run()
123+
require.NoError(t, err)
124+
125+
// TODO(mafredri): Verify golden output.
126+
})
111127
}
112128

113129
func timeParse(t *testing.T, layout, s string) time.Time {

0 commit comments

Comments
 (0)
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy