@@ -15,15 +15,21 @@ import (
15
15
"github.com/coder/coder/v2/coderd/database/dbtime"
16
16
"github.com/coder/coder/v2/coderd/healthcheck"
17
17
"github.com/coder/coder/v2/coderd/healthcheck/health"
18
+ "github.com/coder/coder/v2/coderd/provisionerdserver"
18
19
"github.com/coder/coder/v2/codersdk"
19
20
"github.com/coder/coder/v2/codersdk/healthsdk"
20
21
"github.com/coder/coder/v2/provisionerd/proto"
22
+ "github.com/coder/coder/v2/testutil"
21
23
)
22
24
23
25
func TestProvisionerDaemonReport (t * testing.T ) {
24
26
t .Parallel ()
25
27
26
- now := dbtime .Now ()
28
+ var (
29
+ now = dbtime .Now ()
30
+ oneHourAgo = now .Add (- time .Hour )
31
+ staleThreshold = now .Add (- provisionerdserver .StaleInterval ).Add (- time .Second )
32
+ )
27
33
28
34
for _ , tt := range []struct {
29
35
name string
@@ -65,7 +71,9 @@ func TestProvisionerDaemonReport(t *testing.T) {
65
71
currentVersion : "v1.2.3" ,
66
72
currentAPIMajorVersion : proto .CurrentMajor ,
67
73
expectedSeverity : health .SeverityOK ,
68
- provisionerDaemons : []database.ProvisionerDaemon {fakeProvisionerDaemon (t , "pd-ok" , "v1.2.3" , "1.0" , now )},
74
+ provisionerDaemons : []database.ProvisionerDaemon {
75
+ fakeProvisionerDaemon (t , withName ("pd-ok" ), withVersion ("v1.2.3" ), withAPIVersion ("1.0" ), withCreatedAt (now ), withLastSeenAt (now )),
76
+ },
69
77
expectedItems : []healthsdk.ProvisionerDaemonsReportItem {
70
78
{
71
79
ProvisionerDaemon : codersdk.ProvisionerDaemon {
@@ -88,7 +96,9 @@ func TestProvisionerDaemonReport(t *testing.T) {
88
96
currentAPIMajorVersion : proto .CurrentMajor ,
89
97
expectedSeverity : health .SeverityWarning ,
90
98
expectedWarningCode : health .CodeProvisionerDaemonVersionMismatch ,
91
- provisionerDaemons : []database.ProvisionerDaemon {fakeProvisionerDaemon (t , "pd-old" , "v1.1.2" , "1.0" , now )},
99
+ provisionerDaemons : []database.ProvisionerDaemon {
100
+ fakeProvisionerDaemon (t , withName ("pd-old" ), withVersion ("v1.1.2" ), withAPIVersion ("1.0" ), withCreatedAt (now ), withLastSeenAt (now )),
101
+ },
92
102
expectedItems : []healthsdk.ProvisionerDaemonsReportItem {
93
103
{
94
104
ProvisionerDaemon : codersdk.ProvisionerDaemon {
@@ -116,7 +126,9 @@ func TestProvisionerDaemonReport(t *testing.T) {
116
126
currentAPIMajorVersion : proto .CurrentMajor ,
117
127
expectedSeverity : health .SeverityError ,
118
128
expectedWarningCode : health .CodeUnknown ,
119
- provisionerDaemons : []database.ProvisionerDaemon {fakeProvisionerDaemon (t , "pd-invalid-version" , "invalid" , "1.0" , now )},
129
+ provisionerDaemons : []database.ProvisionerDaemon {
130
+ fakeProvisionerDaemon (t , withName ("pd-invalid-version" ), withVersion ("invalid" ), withAPIVersion ("1.0" ), withCreatedAt (now ), withLastSeenAt (now )),
131
+ },
120
132
expectedItems : []healthsdk.ProvisionerDaemonsReportItem {
121
133
{
122
134
ProvisionerDaemon : codersdk.ProvisionerDaemon {
@@ -144,7 +156,9 @@ func TestProvisionerDaemonReport(t *testing.T) {
144
156
currentAPIMajorVersion : proto .CurrentMajor ,
145
157
expectedSeverity : health .SeverityError ,
146
158
expectedWarningCode : health .CodeUnknown ,
147
- provisionerDaemons : []database.ProvisionerDaemon {fakeProvisionerDaemon (t , "pd-invalid-api" , "v1.2.3" , "invalid" , now )},
159
+ provisionerDaemons : []database.ProvisionerDaemon {
160
+ fakeProvisionerDaemon (t , withName ("pd-invalid-api" ), withVersion ("v1.2.3" ), withAPIVersion ("invalid" ), withCreatedAt (now ), withLastSeenAt (now )),
161
+ },
148
162
expectedItems : []healthsdk.ProvisionerDaemonsReportItem {
149
163
{
150
164
ProvisionerDaemon : codersdk.ProvisionerDaemon {
@@ -172,7 +186,9 @@ func TestProvisionerDaemonReport(t *testing.T) {
172
186
currentAPIMajorVersion : 2 ,
173
187
expectedSeverity : health .SeverityWarning ,
174
188
expectedWarningCode : health .CodeProvisionerDaemonAPIMajorVersionDeprecated ,
175
- provisionerDaemons : []database.ProvisionerDaemon {fakeProvisionerDaemon (t , "pd-old-api" , "v2.3.4" , "1.0" , now )},
189
+ provisionerDaemons : []database.ProvisionerDaemon {
190
+ fakeProvisionerDaemon (t , withName ("pd-old-api" ), withVersion ("v2.3.4" ), withAPIVersion ("1.0" ), withCreatedAt (now ), withLastSeenAt (now )),
191
+ },
176
192
expectedItems : []healthsdk.ProvisionerDaemonsReportItem {
177
193
{
178
194
ProvisionerDaemon : codersdk.ProvisionerDaemon {
@@ -200,7 +216,10 @@ func TestProvisionerDaemonReport(t *testing.T) {
200
216
currentAPIMajorVersion : proto .CurrentMajor ,
201
217
expectedSeverity : health .SeverityWarning ,
202
218
expectedWarningCode : health .CodeProvisionerDaemonVersionMismatch ,
203
- provisionerDaemons : []database.ProvisionerDaemon {fakeProvisionerDaemon (t , "pd-ok" , "v1.2.3" , "1.0" , now ), fakeProvisionerDaemon (t , "pd-old" , "v1.1.2" , "1.0" , now )},
219
+ provisionerDaemons : []database.ProvisionerDaemon {
220
+ fakeProvisionerDaemon (t , withName ("pd-ok" ), withVersion ("v1.2.3" ), withAPIVersion ("1.0" ), withCreatedAt (now ), withLastSeenAt (now )),
221
+ fakeProvisionerDaemon (t , withName ("pd-old" ), withVersion ("v1.1.2" ), withAPIVersion ("1.0" ), withCreatedAt (now ), withLastSeenAt (now )),
222
+ },
204
223
expectedItems : []healthsdk.ProvisionerDaemonsReportItem {
205
224
{
206
225
ProvisionerDaemon : codersdk.ProvisionerDaemon {
@@ -241,7 +260,10 @@ func TestProvisionerDaemonReport(t *testing.T) {
241
260
currentAPIMajorVersion : proto .CurrentMajor ,
242
261
expectedSeverity : health .SeverityWarning ,
243
262
expectedWarningCode : health .CodeProvisionerDaemonVersionMismatch ,
244
- provisionerDaemons : []database.ProvisionerDaemon {fakeProvisionerDaemon (t , "pd-ok" , "v1.2.3" , "1.0" , now ), fakeProvisionerDaemon (t , "pd-new" , "v2.3.4" , "1.0" , now )},
263
+ provisionerDaemons : []database.ProvisionerDaemon {
264
+ fakeProvisionerDaemon (t , withName ("pd-ok" ), withVersion ("v1.2.3" ), withAPIVersion ("1.0" ), withCreatedAt (now ), withLastSeenAt (now )),
265
+ fakeProvisionerDaemon (t , withName ("pd-new" ), withVersion ("v2.3.4" ), withAPIVersion ("1.0" ), withCreatedAt (now ), withLastSeenAt (now )),
266
+ },
245
267
expectedItems : []healthsdk.ProvisionerDaemonsReportItem {
246
268
{
247
269
ProvisionerDaemon : codersdk.ProvisionerDaemon {
@@ -281,7 +303,10 @@ func TestProvisionerDaemonReport(t *testing.T) {
281
303
currentVersion : "v2.3.4" ,
282
304
currentAPIMajorVersion : proto .CurrentMajor ,
283
305
expectedSeverity : health .SeverityOK ,
284
- provisionerDaemons : []database.ProvisionerDaemon {fakeProvisionerDaemonStale (t , "pd-stale" , "v1.2.3" , "0.9" , now .Add (- 5 * time .Minute ), now ), fakeProvisionerDaemon (t , "pd-ok" , "v2.3.4" , "1.0" , now )},
306
+ provisionerDaemons : []database.ProvisionerDaemon {
307
+ fakeProvisionerDaemon (t , withName ("pd-stale" ), withVersion ("v1.2.3" ), withAPIVersion ("0.9" ), withCreatedAt (oneHourAgo ), withLastSeenAt (staleThreshold )),
308
+ fakeProvisionerDaemon (t , withName ("pd-ok" ), withVersion ("v2.3.4" ), withAPIVersion ("1.0" ), withCreatedAt (now ), withLastSeenAt (now )),
309
+ },
285
310
expectedItems : []healthsdk.ProvisionerDaemonsReportItem {
286
311
{
287
312
ProvisionerDaemon : codersdk.ProvisionerDaemon {
@@ -304,8 +329,10 @@ func TestProvisionerDaemonReport(t *testing.T) {
304
329
currentAPIMajorVersion : proto .CurrentMajor ,
305
330
expectedSeverity : health .SeverityError ,
306
331
expectedWarningCode : health .CodeProvisionerDaemonsNoProvisionerDaemons ,
307
- provisionerDaemons : []database.ProvisionerDaemon {fakeProvisionerDaemonStale (t , "pd-ok" , "v1.2.3" , "0.9" , now .Add (- 5 * time .Minute ), now )},
308
- expectedItems : []healthsdk.ProvisionerDaemonsReportItem {},
332
+ provisionerDaemons : []database.ProvisionerDaemon {
333
+ fakeProvisionerDaemon (t , withName ("pd-stale" ), withVersion ("v1.2.3" ), withAPIVersion ("0.9" ), withCreatedAt (oneHourAgo ), withLastSeenAt (staleThreshold )),
334
+ },
335
+ expectedItems : []healthsdk.ProvisionerDaemonsReportItem {},
309
336
},
310
337
} {
311
338
tt := tt
@@ -353,25 +380,52 @@ func TestProvisionerDaemonReport(t *testing.T) {
353
380
}
354
381
}
355
382
356
- func fakeProvisionerDaemon (t * testing.T , name , version , apiVersion string , now time.Time ) database.ProvisionerDaemon {
383
+ func withName (s string ) func (* database.ProvisionerDaemon ) {
384
+ return func (pd * database.ProvisionerDaemon ) {
385
+ pd .Name = s
386
+ }
387
+ }
388
+
389
+ func withCreatedAt (at time.Time ) func (* database.ProvisionerDaemon ) {
390
+ return func (pd * database.ProvisionerDaemon ) {
391
+ pd .CreatedAt = at
392
+ }
393
+ }
394
+
395
+ func withLastSeenAt (at time.Time ) func (* database.ProvisionerDaemon ) {
396
+ return func (pd * database.ProvisionerDaemon ) {
397
+ pd .LastSeenAt .Valid = true
398
+ pd .LastSeenAt .Time = at
399
+ }
400
+ }
401
+
402
+ func withVersion (v string ) func (* database.ProvisionerDaemon ) {
403
+ return func (pd * database.ProvisionerDaemon ) {
404
+ pd .Version = v
405
+ }
406
+ }
407
+
408
+ func withAPIVersion (v string ) func (* database.ProvisionerDaemon ) {
409
+ return func (pd * database.ProvisionerDaemon ) {
410
+ pd .APIVersion = v
411
+ }
412
+ }
413
+
414
+ func fakeProvisionerDaemon (t * testing.T , opts ... func (* database.ProvisionerDaemon )) database.ProvisionerDaemon {
357
415
t .Helper ()
358
- return database.ProvisionerDaemon {
416
+ pd := database.ProvisionerDaemon {
359
417
ID : uuid .Nil ,
360
- Name : name ,
361
- CreatedAt : now ,
362
- LastSeenAt : sql.NullTime {Time : now , Valid : true },
418
+ Name : testutil . GetRandomName ( t ) ,
419
+ CreatedAt : time. Time {} ,
420
+ LastSeenAt : sql.NullTime {},
363
421
Provisioners : []database.ProvisionerType {database .ProvisionerTypeEcho , database .ProvisionerTypeTerraform },
364
422
ReplicaID : uuid.NullUUID {},
365
423
Tags : map [string ]string {},
366
- Version : version ,
367
- APIVersion : apiVersion ,
424
+ Version : "" ,
425
+ APIVersion : "" ,
368
426
}
369
- }
370
-
371
- func fakeProvisionerDaemonStale (t * testing.T , name , version , apiVersion string , lastSeenAt , now time.Time ) database.ProvisionerDaemon {
372
- t .Helper ()
373
- d := fakeProvisionerDaemon (t , name , version , apiVersion , now )
374
- d .LastSeenAt .Valid = true
375
- d .LastSeenAt .Time = lastSeenAt
376
- return d
427
+ for _ , o := range opts {
428
+ o (& pd )
429
+ }
430
+ return pd
377
431
}
0 commit comments