@@ -20,82 +20,82 @@ import (
20
20
func TestProvisioners (t * testing.T ) {
21
21
t .Parallel ()
22
22
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
25
96
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 ()
99
99
100
100
inv , root := clitest .New (t ,
101
101
"provisioners" ,
@@ -108,6 +108,22 @@ func TestProvisioners(t *testing.T) {
108
108
109
109
// TODO(mafredri): Verify golden output.
110
110
})
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
+ })
111
127
}
112
128
113
129
func timeParse (t * testing.T , layout , s string ) time.Time {
0 commit comments