@@ -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 match primary 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
}
0 commit comments