@@ -10,10 +10,13 @@ import (
10
10
"github.com/stretchr/testify/assert"
11
11
12
12
"github.com/coder/coder/v2/coderd/database"
13
+ "github.com/coder/coder/v2/coderd/database/dbmock"
13
14
"github.com/coder/coder/v2/coderd/database/dbtime"
14
15
"github.com/coder/coder/v2/coderd/healthcheck"
15
16
"github.com/coder/coder/v2/coderd/healthcheck/health"
16
17
"github.com/coder/coder/v2/provisionersdk"
18
+
19
+ gomock "go.uber.org/mock/gomock"
17
20
)
18
21
19
22
func TestProvisionerDaemonReport (t * testing.T ) {
@@ -23,7 +26,8 @@ func TestProvisionerDaemonReport(t *testing.T) {
23
26
name string
24
27
currentVersion string
25
28
currentAPIMajorVersion int
26
- provisionerDaemonsFn func (context.Context ) ([]database.ProvisionerDaemon , error )
29
+ provisionerDaemons []database.ProvisionerDaemon
30
+ provisionerDaemonsErr error
27
31
expectedSeverity health.Severity
28
32
expectedWarningCode health.Code
29
33
expectedError string
@@ -34,26 +38,18 @@ func TestProvisionerDaemonReport(t *testing.T) {
34
38
expectedSeverity : health .SeverityError ,
35
39
expectedError : "Developer error: CurrentVersion is empty" ,
36
40
},
37
- {
38
- name : "provisionerdaemonsfn nil" ,
39
- currentVersion : "v1.2.3" ,
40
- currentAPIMajorVersion : 1 ,
41
- expectedSeverity : health .SeverityError ,
42
- expectedError : "Developer error: ProvisionerDaemonsFn is nil" ,
43
- },
44
41
{
45
42
name : "no daemons" ,
46
43
currentVersion : "v1.2.3" ,
47
44
currentAPIMajorVersion : provisionersdk .CurrentMajor ,
48
- provisionerDaemonsFn : fakeProvisionerDaemonsFn (),
49
45
expectedSeverity : health .SeverityError ,
50
46
expectedError : "No provisioner daemons found!" ,
51
47
},
52
48
{
53
49
name : "error fetching daemons" ,
54
50
currentVersion : "v1.2.3" ,
55
51
currentAPIMajorVersion : provisionersdk .CurrentMajor ,
56
- provisionerDaemonsFn : fakeProvisionerDaemonsFnErr ( assert .AnError ) ,
52
+ provisionerDaemonsErr : assert .AnError ,
57
53
expectedSeverity : health .SeverityError ,
58
54
expectedError : assert .AnError .Error (),
59
55
},
@@ -62,69 +58,62 @@ func TestProvisionerDaemonReport(t *testing.T) {
62
58
currentVersion : "v1.2.3" ,
63
59
currentAPIMajorVersion : provisionersdk .CurrentMajor ,
64
60
expectedSeverity : health .SeverityOK ,
65
- provisionerDaemonsFn : fakeProvisionerDaemonsFn ( fakeProvisionerDaemon (t , "pd-ok" , "v1.2.3" , "1.0" )) ,
61
+ provisionerDaemons : []database. ProvisionerDaemon { fakeProvisionerDaemon (t , "pd-ok" , "v1.2.3" , "1.0" )} ,
66
62
},
67
63
{
68
64
name : "one daemon out of date" ,
69
65
currentVersion : "v1.2.3" ,
70
66
currentAPIMajorVersion : provisionersdk .CurrentMajor ,
71
67
expectedSeverity : health .SeverityWarning ,
72
68
expectedWarningCode : health .CodeProvisionerDaemonVersionMismatch ,
73
- provisionerDaemonsFn : fakeProvisionerDaemonsFn ( fakeProvisionerDaemon (t , "pd-old" , "v1.1.2" , "1.0" )) ,
69
+ provisionerDaemons : []database. ProvisionerDaemon { fakeProvisionerDaemon (t , "pd-old" , "v1.1.2" , "1.0" )} ,
74
70
},
75
71
{
76
72
name : "invalid daemon version" ,
77
73
currentVersion : "v1.2.3" ,
78
74
currentAPIMajorVersion : provisionersdk .CurrentMajor ,
79
75
expectedSeverity : health .SeverityError ,
80
76
expectedWarningCode : health .CodeUnknown ,
81
- provisionerDaemonsFn : fakeProvisionerDaemonsFn ( fakeProvisionerDaemon (t , "pd-invalid-version" , "invalid" , "1.0" )) ,
77
+ provisionerDaemons : []database. ProvisionerDaemon { fakeProvisionerDaemon (t , "pd-invalid-version" , "invalid" , "1.0" )} ,
82
78
},
83
79
{
84
80
name : "invalid daemon api version" ,
85
81
currentVersion : "v1.2.3" ,
86
82
currentAPIMajorVersion : provisionersdk .CurrentMajor ,
87
83
expectedSeverity : health .SeverityError ,
88
84
expectedWarningCode : health .CodeUnknown ,
89
- provisionerDaemonsFn : fakeProvisionerDaemonsFn ( fakeProvisionerDaemon (t , "pd-new-minor" , "v1.2.3" , "invalid" )) ,
85
+ provisionerDaemons : []database. ProvisionerDaemon { fakeProvisionerDaemon (t , "pd-new-minor" , "v1.2.3" , "invalid" )} ,
90
86
},
91
87
{
92
88
name : "api version backward compat" ,
93
89
currentVersion : "v2.3.4" ,
94
90
currentAPIMajorVersion : 2 ,
95
91
expectedSeverity : health .SeverityWarning ,
96
92
expectedWarningCode : health .CodeProvisionerDaemonAPIMajorVersionDeprecated ,
97
- provisionerDaemonsFn : fakeProvisionerDaemonsFn (
98
- fakeProvisionerDaemon (t , "pd-old-api" , "v2.3.4" , "1.0" )),
93
+ provisionerDaemons : []database.ProvisionerDaemon {fakeProvisionerDaemon (t , "pd-old-api" , "v2.3.4" , "1.0" )},
99
94
},
100
95
{
101
96
name : "one up to date, one out of date" ,
102
97
currentVersion : "v1.2.3" ,
103
98
currentAPIMajorVersion : provisionersdk .CurrentMajor ,
104
99
expectedSeverity : health .SeverityWarning ,
105
100
expectedWarningCode : health .CodeProvisionerDaemonVersionMismatch ,
106
- provisionerDaemonsFn : fakeProvisionerDaemonsFn (
107
- fakeProvisionerDaemon (t , "pd-ok" , "v1.2.3" , "1.0" ),
108
- fakeProvisionerDaemon (t , "pd-old" , "v1.1.2" , "1.0" )),
101
+ provisionerDaemons : []database.ProvisionerDaemon {fakeProvisionerDaemon (t , "pd-ok" , "v1.2.3" , "1.0" ), fakeProvisionerDaemon (t , "pd-old" , "v1.1.2" , "1.0" )},
109
102
},
110
103
{
111
104
name : "one up to date, one newer" ,
112
105
currentVersion : "v1.2.3" ,
113
106
currentAPIMajorVersion : provisionersdk .CurrentMajor ,
114
107
expectedSeverity : health .SeverityWarning ,
115
108
expectedWarningCode : health .CodeProvisionerDaemonVersionMismatch ,
116
- provisionerDaemonsFn : fakeProvisionerDaemonsFn (
117
- fakeProvisionerDaemon (t , "pd-ok" , "v1.2.3" , "1.0" ),
118
- fakeProvisionerDaemon (t , "pd-new" , "v2.3.4" , "1.0" )),
109
+ provisionerDaemons : []database.ProvisionerDaemon {fakeProvisionerDaemon (t , "pd-ok" , "v1.2.3" , "1.0" ), fakeProvisionerDaemon (t , "pd-new" , "v2.3.4" , "1.0" )},
119
110
},
120
111
{
121
112
name : "one up to date, one stale older" ,
122
113
currentVersion : "v2.3.4" ,
123
114
currentAPIMajorVersion : provisionersdk .CurrentMajor ,
124
115
expectedSeverity : health .SeverityOK ,
125
- provisionerDaemonsFn : fakeProvisionerDaemonsFn (
126
- fakeProvisionerDaemonStale (t , "pd-ok" , "v1.2.3" , "0.9" , dbtime .Now ().Add (- 5 * time .Minute )),
127
- fakeProvisionerDaemon (t , "pd-new" , "v2.3.4" , "1.0" )),
116
+ provisionerDaemons : []database.ProvisionerDaemon {fakeProvisionerDaemonStale (t , "pd-ok" , "v1.2.3" , "0.9" , dbtime .Now ().Add (- 5 * time .Minute )), fakeProvisionerDaemon (t , "pd-new" , "v2.3.4" , "1.0" )},
128
117
},
129
118
} {
130
119
tt := tt
@@ -138,14 +127,16 @@ func TestProvisionerDaemonReport(t *testing.T) {
138
127
if tt .currentAPIMajorVersion == 0 {
139
128
opts .CurrentAPIMajorVersion = provisionersdk .CurrentMajor
140
129
}
141
- if tt .provisionerDaemonsFn != nil {
142
- opts .ProvisionerDaemonsFn = tt .provisionerDaemonsFn
143
- }
144
130
now := dbtime .Now ()
145
131
opts .TimeNowFn = func () time.Time {
146
132
return now
147
133
}
148
134
135
+ ctrl := gomock .NewController (t )
136
+ mDB := dbmock .NewMockStore (ctrl )
137
+ mDB .EXPECT ().GetProvisionerDaemons (gomock .Any ()).AnyTimes ().Return (tt .provisionerDaemons , tt .provisionerDaemonsErr )
138
+ opts .Store = mDB
139
+
149
140
rpt .Run (context .Background (), & opts )
150
141
151
142
assert .Equal (t , tt .expectedSeverity , rpt .Severity )
@@ -183,18 +174,6 @@ func fakeProvisionerDaemon(t *testing.T, name, version, apiVersion string) datab
183
174
}
184
175
}
185
176
186
- func fakeProvisionerDaemonsFn (pds ... database.ProvisionerDaemon ) func (context.Context ) ([]database.ProvisionerDaemon , error ) {
187
- return func (context.Context ) ([]database.ProvisionerDaemon , error ) {
188
- return pds , nil
189
- }
190
- }
191
-
192
- func fakeProvisionerDaemonsFnErr (err error ) func (context.Context ) ([]database.ProvisionerDaemon , error ) {
193
- return func (context.Context ) ([]database.ProvisionerDaemon , error ) {
194
- return nil , err
195
- }
196
- }
197
-
198
177
func fakeProvisionerDaemonStale (t * testing.T , name , version , apiVersion string , lastSeenAt time.Time ) database.ProvisionerDaemon {
199
178
t .Helper ()
200
179
d := fakeProvisionerDaemon (t , name , version , apiVersion )
0 commit comments