@@ -130,8 +130,8 @@ func TestDERP(t *testing.T) {
130
130
assert .Equal (t , health .SeverityWarning , report .Severity )
131
131
assert .True (t , report .Dismissed )
132
132
if assert .Len (t , report .Warnings , 2 ) {
133
- assert .Contains (t , report .Warnings [0 ].Code , health .CodeSTUNNoNodes )
134
- assert .Contains (t , report .Warnings [1 ].Code , health .CodeDERPOneNodeUnhealthy )
133
+ assert .Contains (t , report .Warnings [0 ].Code , health .CodeDERPOneNodeUnhealthy )
134
+ assert .Contains (t , report .Warnings [1 ].Code , health .CodeSTUNNoNodes )
135
135
}
136
136
for _ , region := range report .Regions {
137
137
assert .True (t , region .Healthy )
@@ -141,7 +141,7 @@ func TestDERP(t *testing.T) {
141
141
assert .Equal (t , health .SeverityOK , region .NodeReports [0 ].Severity )
142
142
assert .False (t , region .NodeReports [1 ].Healthy )
143
143
assert .Equal (t , health .SeverityError , region .NodeReports [1 ].Severity )
144
- assert .Len (t , region .Warnings , 2 )
144
+ assert .Len (t , region .Warnings , 1 )
145
145
}
146
146
})
147
147
@@ -172,7 +172,7 @@ func TestDERP(t *testing.T) {
172
172
ForceHTTP : true ,
173
173
}, {
174
174
Name : "badstun" ,
175
- RegionID : 1000 ,
175
+ RegionID : 999 ,
176
176
HostName : derpURL .Host ,
177
177
STUNPort : 19302 ,
178
178
STUNOnly : true ,
@@ -189,7 +189,8 @@ func TestDERP(t *testing.T) {
189
189
assert .True (t , report .Healthy )
190
190
assert .Equal (t , health .SeverityWarning , report .Severity )
191
191
if assert .Len (t , report .Warnings , 2 ) {
192
- assert .Contains (t , report .Warnings [0 ].Code , health .CodeSTUNNoNodes )
192
+ assert .EqualValues (t , report .Warnings [1 ].Code , health .CodeSTUNNoNodes )
193
+ assert .EqualValues (t , report .Warnings [0 ].Code , health .CodeDERPOneNodeUnhealthy )
193
194
}
194
195
for _ , region := range report .Regions {
195
196
assert .True (t , region .Healthy )
@@ -199,7 +200,7 @@ func TestDERP(t *testing.T) {
199
200
assert .Equal (t , health .SeverityOK , region .NodeReports [0 ].Severity )
200
201
assert .False (t , region .NodeReports [1 ].Healthy )
201
202
assert .Equal (t , health .SeverityError , region .NodeReports [1 ].Severity )
202
- assert .Len (t , region .Warnings , 2 )
203
+ assert .Len (t , region .Warnings , 1 )
203
204
}
204
205
})
205
206
@@ -366,7 +367,63 @@ func TestDERP(t *testing.T) {
366
367
}
367
368
})
368
369
369
- t .Run ("STUNOnly/Error" , func (t * testing.T ) {
370
+ t .Run ("STUNOnly/OneBadOneGood" , func (t * testing.T ) {
371
+ t .Parallel ()
372
+
373
+ var (
374
+ ctx = context .Background ()
375
+ report = derphealth.Report {}
376
+ opts = & derphealth.ReportOptions {
377
+ DERPMap : & tailcfg.DERPMap {Regions : map [int ]* tailcfg.DERPRegion {
378
+ 1 : {
379
+ EmbeddedRelay : true ,
380
+ RegionID : 999 ,
381
+ Nodes : []* tailcfg.DERPNode {{
382
+ Name : "badstun" ,
383
+ RegionID : 999 ,
384
+ HostName : "badstun.example.com" ,
385
+ STUNPort : 19302 ,
386
+ STUNOnly : true ,
387
+ InsecureForTests : true ,
388
+ ForceHTTP : true ,
389
+ }, {
390
+ Name : "goodstun" ,
391
+ RegionID : 999 ,
392
+ HostName : "stun.l.google.com" ,
393
+ STUNPort : 19302 ,
394
+ STUNOnly : true ,
395
+ InsecureForTests : true ,
396
+ ForceHTTP : true ,
397
+ }},
398
+ },
399
+ },
400
+ },
401
+ }
402
+ )
403
+
404
+ report .Run (ctx , opts )
405
+ assert .True (t , report .Healthy )
406
+ assert .Equal (t , health .SeverityWarning , report .Severity )
407
+ if assert .Len (t , report .Warnings , 1 ) {
408
+ assert .Equal (t , health .CodeDERPOneNodeUnhealthy , report .Warnings [0 ].Code )
409
+ }
410
+ for _ , region := range report .Regions {
411
+ assert .True (t , region .Healthy )
412
+ assert .Equal (t , health .SeverityWarning , region .Severity )
413
+ // badstun
414
+ assert .False (t , region .NodeReports [0 ].Healthy )
415
+ assert .True (t , region .NodeReports [0 ].STUN .Enabled )
416
+ assert .False (t , region .NodeReports [0 ].STUN .CanSTUN )
417
+ assert .NotNil (t , region .NodeReports [0 ].STUN .Error )
418
+ // goodstun
419
+ assert .True (t , region .NodeReports [1 ].Healthy )
420
+ assert .True (t , region .NodeReports [1 ].STUN .Enabled )
421
+ assert .True (t , region .NodeReports [1 ].STUN .CanSTUN )
422
+ assert .Nil (t , region .NodeReports [1 ].STUN .Error )
423
+ }
424
+ })
425
+
426
+ t .Run ("STUNOnly/NoStun" , func (t * testing.T ) {
370
427
t .Parallel ()
371
428
372
429
var (
0 commit comments