@@ -31,7 +31,29 @@ func TestWorkspaceProxies(t *testing.T) {
31
31
require .Empty (t ,rpt .WorkspaceProxies ,"expected no proxies" )
32
32
})
33
33
34
- t .Run ("VersionMajorMinor" ,func (t * testing.T ) {
34
+ t .Run ("Enabled/None" ,func (t * testing.T ) {
35
+ t .Parallel ()
36
+
37
+ ctx := testutil .Context (t ,testutil .WaitShort )
38
+ log := slogtest .Make (t ,nil )
39
+ rpt := healthcheck.WorkspaceProxyReport {}
40
+ rpt .Run (ctx ,& healthcheck.WorkspaceProxyReportOptions {
41
+ CurrentVersion :"v2.34.5" ,
42
+ FetchWorkspaceProxies :func (_ context.Context ) (codersdk.RegionsResponse [codersdk.WorkspaceProxy ],error ) {
43
+ return codersdk.RegionsResponse [codersdk.WorkspaceProxy ]{
44
+ Regions : []codersdk.WorkspaceProxy {},
45
+ },nil
46
+ },
47
+ UpdateProxyHealth :func (context.Context )error {return nil },
48
+ Logger :log ,
49
+ })
50
+
51
+ require .True (t ,rpt .Healthy ,"expected report to be healthy" )
52
+ require .Empty (t ,rpt .Warnings ,"expected no warnings" )
53
+ require .NotEmpty (t ,rpt .WorkspaceProxies ,"expected at least one proxy" )
54
+ })
55
+
56
+ t .Run ("Enabled/Match" ,func (t * testing.T ) {
35
57
t .Parallel ()
36
58
37
59
ctx := testutil .Context (t ,testutil .WaitShort )
@@ -42,12 +64,8 @@ func TestWorkspaceProxies(t *testing.T) {
42
64
FetchWorkspaceProxies :func (_ context.Context ) (codersdk.RegionsResponse [codersdk.WorkspaceProxy ],error ) {
43
65
return codersdk.RegionsResponse [codersdk.WorkspaceProxy ]{
44
66
Regions : []codersdk.WorkspaceProxy {
45
- {
46
- Region : codersdk.Region {
47
- Healthy :true ,
48
- },
49
- Version :"v2.34.4" ,
50
- },
67
+ fakeWorkspaceProxy (true ,"v2.34.5" ),
68
+ fakeWorkspaceProxy (true ,"v2.34.5" ),
51
69
},
52
70
},nil
53
71
},
@@ -60,19 +78,65 @@ func TestWorkspaceProxies(t *testing.T) {
60
78
require .NotEmpty (t ,rpt .WorkspaceProxies ,"expected at least one proxy" )
61
79
})
62
80
63
- t .Run ("VersionMismatch " ,func (t * testing.T ) {
81
+ t .Run ("Enabled/Mismatch/One " ,func (t * testing.T ) {
64
82
t .Parallel ()
65
83
66
84
ctx := testutil .Context (t ,testutil .WaitShort )
67
85
log := slogtest .Make (t ,nil )
68
86
rpt := healthcheck.WorkspaceProxyReport {}
69
87
rpt .Run (ctx ,& healthcheck.WorkspaceProxyReportOptions {
70
- Logger :log ,
88
+ CurrentVersion :"v2.35.0" ,
89
+ FetchWorkspaceProxies :func (_ context.Context ) (codersdk.RegionsResponse [codersdk.WorkspaceProxy ],error ) {
90
+ return codersdk.RegionsResponse [codersdk.WorkspaceProxy ]{
91
+ Regions : []codersdk.WorkspaceProxy {
92
+ fakeWorkspaceProxy (true ,"v2.35.0" ),
93
+ fakeWorkspaceProxy (true ,"v2.34.5" ),
94
+ },
95
+ },nil
96
+ },
97
+ Logger :log ,
98
+ UpdateProxyHealth :func (context.Context )error {return nil },
71
99
})
72
100
73
101
require .False (t ,rpt .Healthy ,"expected report not to be healthy" )
74
102
require .Len (t ,rpt .Warnings ,1 )
75
- require .Contains (t ,rpt .Warnings [0 ],"does not match server version" )
103
+ require .Contains (t ,rpt .Warnings [0 ],"does not matchprimary server version" )
76
104
require .NotEmpty (t ,rpt .WorkspaceProxies )
77
105
})
106
+
107
+ t .Run ("Enabled/Mismatch/Multiple" ,func (t * testing.T ) {
108
+ t .Parallel ()
109
+
110
+ ctx := testutil .Context (t ,testutil .WaitShort )
111
+ log := slogtest .Make (t ,nil )
112
+ rpt := healthcheck.WorkspaceProxyReport {}
113
+ rpt .Run (ctx ,& healthcheck.WorkspaceProxyReportOptions {
114
+ CurrentVersion :"v2.35.0" ,
115
+ FetchWorkspaceProxies :func (_ context.Context ) (codersdk.RegionsResponse [codersdk.WorkspaceProxy ],error ) {
116
+ return codersdk.RegionsResponse [codersdk.WorkspaceProxy ]{
117
+ Regions : []codersdk.WorkspaceProxy {
118
+ fakeWorkspaceProxy (true ,"v2.34.5" ),
119
+ fakeWorkspaceProxy (true ,"v2.34.5" ),
120
+ },
121
+ },nil
122
+ },
123
+ Logger :log ,
124
+ UpdateProxyHealth :func (context.Context )error {return nil },
125
+ })
126
+
127
+ require .False (t ,rpt .Healthy ,"expected report not to be healthy" )
128
+ require .Len (t ,rpt .Warnings ,2 )
129
+ require .Contains (t ,rpt .Warnings [0 ],"does not match primary server version" )
130
+ require .Contains (t ,rpt .Warnings [1 ],"does not match primary server version" )
131
+ require .NotEmpty (t ,rpt .WorkspaceProxies )
132
+ })
133
+ }
134
+
135
+ func fakeWorkspaceProxy (healthy bool ,version string ) codersdk.WorkspaceProxy {
136
+ return codersdk.WorkspaceProxy {
137
+ Region : codersdk.Region {
138
+ Healthy :healthy ,
139
+ },
140
+ Version :version ,
141
+ }
78
142
}