@@ -13,21 +13,20 @@ import (
13
13
"github.com/coder/coder/v2/coderd/database/dbtime"
14
14
"github.com/coder/coder/v2/coderd/healthcheck"
15
15
"github.com/coder/coder/v2/coderd/healthcheck/health"
16
- "github.com/coder/coder/v2/coderd/util/apiversion"
17
16
"github.com/coder/coder/v2/provisionersdk"
18
17
)
19
18
20
19
func TestProvisionerDaemonReport (t * testing.T ) {
21
20
t .Parallel ()
22
21
23
22
for _ , tt := range []struct {
24
- name string
25
- currentVersion string
26
- currentAPIVersion * apiversion. APIVersion
27
- provisionerDaemonsFn func (context.Context ) ([]database.ProvisionerDaemon , error )
28
- expectedSeverity health.Severity
29
- expectedWarningCode health.Code
30
- expectedError string
23
+ name string
24
+ currentVersion string
25
+ currentAPIMajorVersion int
26
+ provisionerDaemonsFn func (context.Context ) ([]database.ProvisionerDaemon , error )
27
+ expectedSeverity health.Severity
28
+ expectedWarningCode health.Code
29
+ expectedError string
31
30
}{
32
31
{
33
32
name : "current version empty" ,
@@ -36,92 +35,93 @@ func TestProvisionerDaemonReport(t *testing.T) {
36
35
expectedError : "Developer error: CurrentVersion is empty" ,
37
36
},
38
37
{
39
- name : "provisionerdaemonsfn nil" ,
40
- currentVersion : "v1.2.3" ,
41
- currentAPIVersion : provisionersdk . VersionCurrent ,
42
- expectedSeverity : health .SeverityError ,
43
- expectedError : "Developer error: ProvisionerDaemonsFn is nil" ,
38
+ name : "provisionerdaemonsfn nil" ,
39
+ currentVersion : "v1.2.3" ,
40
+ currentAPIMajorVersion : 1 ,
41
+ expectedSeverity : health .SeverityError ,
42
+ expectedError : "Developer error: ProvisionerDaemonsFn is nil" ,
44
43
},
45
44
{
46
- name : "no daemons" ,
47
- currentVersion : "v1.2.3" ,
48
- currentAPIVersion : provisionersdk .VersionCurrent ,
49
- provisionerDaemonsFn : fakeProvisionerDaemonsFn (),
50
- expectedSeverity : health .SeverityError ,
51
- expectedError : "No provisioner daemons found!" ,
45
+ name : "no daemons" ,
46
+ currentVersion : "v1.2.3" ,
47
+ currentAPIMajorVersion : provisionersdk .CurrentMajor ,
48
+ provisionerDaemonsFn : fakeProvisionerDaemonsFn (),
49
+ expectedSeverity : health .SeverityError ,
50
+ expectedError : "No provisioner daemons found!" ,
52
51
},
53
52
{
54
- name : "error fetching daemons" ,
55
- currentVersion : "v1.2.3" ,
56
- currentAPIVersion : provisionersdk .VersionCurrent ,
57
- provisionerDaemonsFn : fakeProvisionerDaemonsFnErr (assert .AnError ),
58
- expectedSeverity : health .SeverityError ,
59
- expectedError : assert .AnError .Error (),
53
+ name : "error fetching daemons" ,
54
+ currentVersion : "v1.2.3" ,
55
+ currentAPIMajorVersion : provisionersdk .CurrentMajor ,
56
+ provisionerDaemonsFn : fakeProvisionerDaemonsFnErr (assert .AnError ),
57
+ expectedSeverity : health .SeverityError ,
58
+ expectedError : assert .AnError .Error (),
60
59
},
61
60
{
62
- name : "one daemon up to date" ,
63
- currentVersion : "v1.2.3" ,
64
- currentAPIVersion : provisionersdk .VersionCurrent ,
65
- expectedSeverity : health .SeverityOK ,
66
- provisionerDaemonsFn : fakeProvisionerDaemonsFn (fakeProvisionerDaemon (t , "pd-ok" , "v1.2.3" , "1.0" )),
61
+ name : "one daemon up to date" ,
62
+ currentVersion : "v1.2.3" ,
63
+ currentAPIMajorVersion : provisionersdk .CurrentMajor ,
64
+ expectedSeverity : health .SeverityOK ,
65
+ provisionerDaemonsFn : fakeProvisionerDaemonsFn (fakeProvisionerDaemon (t , "pd-ok" , "v1.2.3" , "1.0" )),
67
66
},
68
67
{
69
- name : "one daemon out of date" ,
70
- currentVersion : "v1.2.3" ,
71
- currentAPIVersion : provisionersdk .VersionCurrent ,
72
- expectedSeverity : health .SeverityWarning ,
73
- expectedWarningCode : health .CodeProvisionerDaemonVersionMismatch ,
74
- provisionerDaemonsFn : fakeProvisionerDaemonsFn (fakeProvisionerDaemon (t , "pd-old" , "v1.1.2" , "1.0" )),
68
+ name : "one daemon out of date" ,
69
+ currentVersion : "v1.2.3" ,
70
+ currentAPIMajorVersion : provisionersdk .CurrentMajor ,
71
+ expectedSeverity : health .SeverityWarning ,
72
+ expectedWarningCode : health .CodeProvisionerDaemonVersionMismatch ,
73
+ provisionerDaemonsFn : fakeProvisionerDaemonsFn (fakeProvisionerDaemon (t , "pd-old" , "v1.1.2" , "1.0" )),
75
74
},
76
75
{
77
- name : "major api version not available " ,
78
- currentVersion : "v1.2.3" ,
79
- currentAPIVersion : provisionersdk .VersionCurrent ,
80
- expectedSeverity : health .SeverityError ,
81
- expectedWarningCode : health .CodeProvisionerDaemonAPIVersionIncompatible ,
82
- provisionerDaemonsFn : fakeProvisionerDaemonsFn (fakeProvisionerDaemon (t , "pd-new-major " , "v1.2.3 " , "2 .0" )),
76
+ name : "invalid daemon version " ,
77
+ currentVersion : "v1.2.3" ,
78
+ currentAPIMajorVersion : provisionersdk .CurrentMajor ,
79
+ expectedSeverity : health .SeverityError ,
80
+ expectedWarningCode : health .CodeUnknown ,
81
+ provisionerDaemonsFn : fakeProvisionerDaemonsFn (fakeProvisionerDaemon (t , "pd-invalid-version " , "invalid " , "1 .0" )),
83
82
},
84
83
{
85
- name : "minor api version not available " ,
86
- currentVersion : "v1.2.3" ,
87
- currentAPIVersion : provisionersdk .VersionCurrent ,
88
- expectedSeverity : health .SeverityError ,
89
- expectedWarningCode : health .CodeProvisionerDaemonAPIVersionIncompatible ,
90
- provisionerDaemonsFn : fakeProvisionerDaemonsFn (fakeProvisionerDaemon (t , "pd-new-minor" , "v1.2.3" , "1.1 " )),
84
+ name : "invalid daemon api version" ,
85
+ currentVersion : "v1.2.3" ,
86
+ currentAPIMajorVersion : provisionersdk .CurrentMajor ,
87
+ expectedSeverity : health .SeverityError ,
88
+ expectedWarningCode : health .CodeUnknown ,
89
+ provisionerDaemonsFn : fakeProvisionerDaemonsFn (fakeProvisionerDaemon (t , "pd-new-minor" , "v1.2.3" , "invalid " )),
91
90
},
92
91
{
93
- name : "api version backward compat" ,
94
- currentVersion : "v2.3.4" ,
95
- currentAPIVersion : apiversion .New (2 , 0 ).WithBackwardCompat (1 ),
96
- expectedSeverity : health .SeverityOK ,
92
+ name : "api version backward compat" ,
93
+ currentVersion : "v2.3.4" ,
94
+ currentAPIMajorVersion : 2 ,
95
+ expectedSeverity : health .SeverityWarning ,
96
+ expectedWarningCode : health .CodeProvisionerDaemonAPIMajorVersionDeprecated ,
97
97
provisionerDaemonsFn : fakeProvisionerDaemonsFn (
98
98
fakeProvisionerDaemon (t , "pd-old-api" , "v2.3.4" , "1.0" )),
99
99
},
100
100
{
101
- name : "one up to date, one out of date" ,
102
- currentVersion : "v1.2.3" ,
103
- currentAPIVersion : provisionersdk .VersionCurrent ,
104
- expectedSeverity : health .SeverityWarning ,
105
- expectedWarningCode : health .CodeProvisionerDaemonVersionMismatch ,
101
+ name : "one up to date, one out of date" ,
102
+ currentVersion : "v1.2.3" ,
103
+ currentAPIMajorVersion : provisionersdk .CurrentMajor ,
104
+ expectedSeverity : health .SeverityWarning ,
105
+ expectedWarningCode : health .CodeProvisionerDaemonVersionMismatch ,
106
106
provisionerDaemonsFn : fakeProvisionerDaemonsFn (
107
107
fakeProvisionerDaemon (t , "pd-ok" , "v1.2.3" , "1.0" ),
108
108
fakeProvisionerDaemon (t , "pd-old" , "v1.1.2" , "1.0" )),
109
109
},
110
110
{
111
- name : "one up to date, one newer" ,
112
- currentVersion : "v1.2.3" ,
113
- currentAPIVersion : provisionersdk .VersionCurrent ,
114
- expectedSeverity : health .SeverityWarning ,
115
- expectedWarningCode : health .CodeProvisionerDaemonVersionMismatch ,
111
+ name : "one up to date, one newer" ,
112
+ currentVersion : "v1.2.3" ,
113
+ currentAPIMajorVersion : provisionersdk .CurrentMajor ,
114
+ expectedSeverity : health .SeverityWarning ,
115
+ expectedWarningCode : health .CodeProvisionerDaemonVersionMismatch ,
116
116
provisionerDaemonsFn : fakeProvisionerDaemonsFn (
117
117
fakeProvisionerDaemon (t , "pd-ok" , "v1.2.3" , "1.0" ),
118
118
fakeProvisionerDaemon (t , "pd-new" , "v2.3.4" , "1.0" )),
119
119
},
120
120
{
121
- name : "one up to date, one stale older" ,
122
- currentVersion : "v2.3.4" ,
123
- currentAPIVersion : provisionersdk .VersionCurrent ,
124
- expectedSeverity : health .SeverityOK ,
121
+ name : "one up to date, one stale older" ,
122
+ currentVersion : "v2.3.4" ,
123
+ currentAPIMajorVersion : provisionersdk .CurrentMajor ,
124
+ expectedSeverity : health .SeverityOK ,
125
125
provisionerDaemonsFn : fakeProvisionerDaemonsFn (
126
126
fakeProvisionerDaemonStale (t , "pd-ok" , "v1.2.3" , "0.9" , dbtime .Now ().Add (- 5 * time .Minute )),
127
127
fakeProvisionerDaemon (t , "pd-new" , "v2.3.4" , "1.0" )),
@@ -134,10 +134,9 @@ func TestProvisionerDaemonReport(t *testing.T) {
134
134
var rpt healthcheck.ProvisionerDaemonsReport
135
135
var opts healthcheck.ProvisionerDaemonsReportOptions
136
136
opts .CurrentVersion = tt .currentVersion
137
- if tt .currentAPIVersion == nil {
138
- opts .CurrentAPIVersion = provisionersdk .VersionCurrent
139
- } else {
140
- opts .CurrentAPIVersion = tt .currentAPIVersion
137
+ opts .CurrentAPIMajorVersion = tt .currentAPIMajorVersion
138
+ if tt .currentAPIMajorVersion == 0 {
139
+ opts .CurrentAPIMajorVersion = provisionersdk .CurrentMajor
141
140
}
142
141
if tt .provisionerDaemonsFn != nil {
143
142
opts .ProvisionerDaemonsFn = tt .provisionerDaemonsFn
0 commit comments