@@ -974,13 +974,13 @@ func (f *fakeResumeTokenClient) RefreshResumeToken(_ context.Context, _ *proto.R
974
974
}
975
975
select {
976
976
case <- f .ctx .Done ():
977
- return nil , f . ctx . Err ()
977
+ return nil , timeoutOnFakeErr
978
978
case f .calls <- call :
979
979
// OK
980
980
}
981
981
select {
982
982
case <- f .ctx .Done ():
983
- return nil , f . ctx . Err ()
983
+ return nil , timeoutOnFakeErr
984
984
case err := <- call .errCh :
985
985
return nil , err
986
986
case resp := <- call .resp :
@@ -1240,6 +1240,11 @@ func (p *pipeDialer) Dial(_ context.Context, _ tailnet.ResumeTokenController) (t
1240
1240
}, nil
1241
1241
}
1242
1242
1243
+ // timeoutOnFakeErr is the error we send when fakes fail to send calls or receive responses before
1244
+ // their context times out. We don't want to send the context error since that often doesn't trigger
1245
+ // test failures or logging.
1246
+ var timeoutOnFakeErr = xerrors .New ("test timeout" )
1247
+
1243
1248
type fakeCoordinatorClient struct {
1244
1249
ctx context.Context
1245
1250
t testing.TB
@@ -1253,15 +1258,13 @@ func (f fakeCoordinatorClient) Close() error {
1253
1258
errs := make (chan error )
1254
1259
select {
1255
1260
case <- f .ctx .Done ():
1256
- f .t .Error ("timed out waiting to send close call" )
1257
- return f .ctx .Err ()
1261
+ return timeoutOnFakeErr
1258
1262
case f .close <- errs :
1259
1263
// OK
1260
1264
}
1261
1265
select {
1262
1266
case <- f .ctx .Done ():
1263
- f .t .Error ("timed out waiting for close call response" )
1264
- return f .ctx .Err ()
1267
+ return timeoutOnFakeErr
1265
1268
case err := <- errs :
1266
1269
return err
1267
1270
}
@@ -1276,15 +1279,13 @@ func (f fakeCoordinatorClient) Send(request *proto.CoordinateRequest) error {
1276
1279
}
1277
1280
select {
1278
1281
case <- f .ctx .Done ():
1279
- f .t .Error ("timed out waiting to send call" )
1280
- return f .ctx .Err ()
1282
+ return timeoutOnFakeErr
1281
1283
case f .reqs <- call :
1282
1284
// OK
1283
1285
}
1284
1286
select {
1285
1287
case <- f .ctx .Done ():
1286
- f .t .Error ("timed out waiting for send call response" )
1287
- return f .ctx .Err ()
1288
+ return timeoutOnFakeErr
1288
1289
case err := <- errs :
1289
1290
return err
1290
1291
}
@@ -1300,15 +1301,13 @@ func (f fakeCoordinatorClient) Recv() (*proto.CoordinateResponse, error) {
1300
1301
}
1301
1302
select {
1302
1303
case <- f .ctx .Done ():
1303
- f .t .Error ("timed out waiting to send Recv() call" )
1304
- return nil , f .ctx .Err ()
1304
+ return nil , timeoutOnFakeErr
1305
1305
case f .resps <- call :
1306
1306
// OK
1307
1307
}
1308
1308
select {
1309
1309
case <- f .ctx .Done ():
1310
- f .t .Error ("timed out waiting for Recv() call response" )
1311
- return nil , f .ctx .Err ()
1310
+ return nil , timeoutOnFakeErr
1312
1311
case err := <- errs :
1313
1312
return nil , err
1314
1313
case resp := <- resps :
@@ -1348,15 +1347,13 @@ func (f *fakeWorkspaceUpdateClient) Close() error {
1348
1347
errs := make (chan error )
1349
1348
select {
1350
1349
case <- f .ctx .Done ():
1351
- f .t .Error ("timed out waiting to send close call" )
1352
- return f .ctx .Err ()
1350
+ return timeoutOnFakeErr
1353
1351
case f .close <- errs :
1354
1352
// OK
1355
1353
}
1356
1354
select {
1357
1355
case <- f .ctx .Done ():
1358
- f .t .Error ("timed out waiting for close call response" )
1359
- return f .ctx .Err ()
1356
+ return timeoutOnFakeErr
1360
1357
case err := <- errs :
1361
1358
return err
1362
1359
}
@@ -1372,15 +1369,13 @@ func (f *fakeWorkspaceUpdateClient) Recv() (*proto.WorkspaceUpdate, error) {
1372
1369
}
1373
1370
select {
1374
1371
case <- f .ctx .Done ():
1375
- f .t .Error ("timed out waiting to send Recv() call" )
1376
- return nil , f .ctx .Err ()
1372
+ return nil , timeoutOnFakeErr
1377
1373
case f .recv <- call :
1378
1374
// OK
1379
1375
}
1380
1376
select {
1381
1377
case <- f .ctx .Done ():
1382
- f .t .Error ("timed out waiting for Recv() call response" )
1383
- return nil , f .ctx .Err ()
1378
+ return nil , timeoutOnFakeErr
1384
1379
case err := <- errs :
1385
1380
return nil , err
1386
1381
case resp := <- resps :
@@ -1440,28 +1435,26 @@ func (f *fakeDNSSetter) SetDNSHosts(hosts map[dnsname.FQDN][]netip.Addr) error {
1440
1435
}
1441
1436
select {
1442
1437
case <- f .ctx .Done ():
1443
- f .t .Error ("timed out waiting to send SetDNSHosts() call" )
1444
- return f .ctx .Err ()
1438
+ return timeoutOnFakeErr
1445
1439
case f .calls <- call :
1446
1440
// OK
1447
1441
}
1448
1442
select {
1449
1443
case <- f .ctx .Done ():
1450
- f .t .Error ("timed out waiting for SetDNSHosts() call response" )
1451
- return f .ctx .Err ()
1444
+ return timeoutOnFakeErr
1452
1445
case err := <- errs :
1453
1446
return err
1454
1447
}
1455
1448
}
1456
1449
1457
1450
func setupConnectedAllWorkspaceUpdatesController (
1458
- ctx context.Context , t testing.TB , logger slog.Logger , dnsSetter tailnet.DNSHostsSetter ,
1451
+ ctx context.Context , t testing.TB , logger slog.Logger , opts ... tailnet.TunnelAllOption ,
1459
1452
) (
1460
1453
* fakeCoordinatorClient , * fakeWorkspaceUpdateClient ,
1461
1454
) {
1462
1455
fConn := & fakeCoordinatee {}
1463
1456
tsc := tailnet .NewTunnelSrcCoordController (logger , fConn )
1464
- uut := tailnet .NewTunnelAllWorkspaceUpdatesController (logger , tsc , dnsSetter )
1457
+ uut := tailnet .NewTunnelAllWorkspaceUpdatesController (logger , tsc , opts ... )
1465
1458
1466
1459
// connect up a coordinator client, to track adding and removing tunnels
1467
1460
coordC := newFakeCoordinatorClient (ctx , t )
@@ -1496,7 +1489,8 @@ func TestTunnelAllWorkspaceUpdatesController_Initial(t *testing.T) {
1496
1489
logger := testutil .Logger (t )
1497
1490
1498
1491
fDNS := newFakeDNSSetter (ctx , t )
1499
- coordC , updateC := setupConnectedAllWorkspaceUpdatesController (ctx , t , logger , fDNS )
1492
+ coordC , updateC := setupConnectedAllWorkspaceUpdatesController (ctx , t , logger ,
1493
+ tailnet .WithDNS (fDNS , "testy" ))
1500
1494
1501
1495
// Initial update contains 2 workspaces with 1 & 2 agents, respectively
1502
1496
w1ID := testUUID (1 )
@@ -1532,9 +1526,13 @@ func TestTunnelAllWorkspaceUpdatesController_Initial(t *testing.T) {
1532
1526
1533
1527
// Also triggers setting DNS hosts
1534
1528
expectedDNS := map [dnsname.FQDN ][]netip.Addr {
1535
- "w1a1.w1.me.coder." : {netip .MustParseAddr ("fd60:627a:a42b:0101::" )},
1536
- "w2a1.w2.me.coder." : {netip .MustParseAddr ("fd60:627a:a42b:0201::" )},
1537
- "w2a2.w2.me.coder." : {netip .MustParseAddr ("fd60:627a:a42b:0202::" )},
1529
+ "w1a1.w1.me.coder." : {netip .MustParseAddr ("fd60:627a:a42b:0101::" )},
1530
+ "w2a1.w2.me.coder." : {netip .MustParseAddr ("fd60:627a:a42b:0201::" )},
1531
+ "w2a2.w2.me.coder." : {netip .MustParseAddr ("fd60:627a:a42b:0202::" )},
1532
+ "w1a1.w1.testy.coder." : {netip .MustParseAddr ("fd60:627a:a42b:0101::" )},
1533
+ "w2a1.w2.testy.coder." : {netip .MustParseAddr ("fd60:627a:a42b:0201::" )},
1534
+ "w2a2.w2.testy.coder." : {netip .MustParseAddr ("fd60:627a:a42b:0202::" )},
1535
+ "w1.coder." : {netip .MustParseAddr ("fd60:627a:a42b:0101::" )},
1538
1536
}
1539
1537
dnsCall := testutil .RequireRecvCtx (ctx , t , fDNS .calls )
1540
1538
require .Equal (t , expectedDNS , dnsCall .hosts )
@@ -1547,7 +1545,8 @@ func TestTunnelAllWorkspaceUpdatesController_DeleteAgent(t *testing.T) {
1547
1545
logger := testutil .Logger (t )
1548
1546
1549
1547
fDNS := newFakeDNSSetter (ctx , t )
1550
- coordC , updateC := setupConnectedAllWorkspaceUpdatesController (ctx , t , logger , fDNS )
1548
+ coordC , updateC := setupConnectedAllWorkspaceUpdatesController (ctx , t , logger ,
1549
+ tailnet .WithDNS (fDNS , "testy" ))
1551
1550
1552
1551
w1ID := testUUID (1 )
1553
1552
w1a1ID := testUUID (1 , 1 )
@@ -1571,7 +1570,9 @@ func TestTunnelAllWorkspaceUpdatesController_DeleteAgent(t *testing.T) {
1571
1570
1572
1571
// DNS for w1a1
1573
1572
expectedDNS := map [dnsname.FQDN ][]netip.Addr {
1574
- "w1a1.w1.me.coder." : {netip .MustParseAddr ("fd60:627a:a42b:0101::" )},
1573
+ "w1a1.w1.testy.coder." : {netip .MustParseAddr ("fd60:627a:a42b:0101::" )},
1574
+ "w1a1.w1.me.coder." : {netip .MustParseAddr ("fd60:627a:a42b:0101::" )},
1575
+ "w1.coder." : {netip .MustParseAddr ("fd60:627a:a42b:0101::" )},
1575
1576
}
1576
1577
dnsCall := testutil .RequireRecvCtx (ctx , t , fDNS .calls )
1577
1578
require .Equal (t , expectedDNS , dnsCall .hosts )
@@ -1601,7 +1602,9 @@ func TestTunnelAllWorkspaceUpdatesController_DeleteAgent(t *testing.T) {
1601
1602
1602
1603
// DNS contains only w1a2
1603
1604
expectedDNS = map [dnsname.FQDN ][]netip.Addr {
1604
- "w1a2.w1.me.coder." : {netip .MustParseAddr ("fd60:627a:a42b:0102::" )},
1605
+ "w1a2.w1.testy.coder." : {netip .MustParseAddr ("fd60:627a:a42b:0102::" )},
1606
+ "w1a2.w1.me.coder." : {netip .MustParseAddr ("fd60:627a:a42b:0102::" )},
1607
+ "w1.coder." : {netip .MustParseAddr ("fd60:627a:a42b:0102::" )},
1605
1608
}
1606
1609
dnsCall = testutil .RequireRecvCtx (ctx , t , fDNS .calls )
1607
1610
require .Equal (t , expectedDNS , dnsCall .hosts )
@@ -1619,7 +1622,9 @@ func TestTunnelAllWorkspaceUpdatesController_DNSError(t *testing.T) {
1619
1622
fDNS := newFakeDNSSetter (ctx , t )
1620
1623
fConn := & fakeCoordinatee {}
1621
1624
tsc := tailnet .NewTunnelSrcCoordController (logger , fConn )
1622
- uut := tailnet .NewTunnelAllWorkspaceUpdatesController (logger , tsc , fDNS )
1625
+ uut := tailnet .NewTunnelAllWorkspaceUpdatesController (logger , tsc ,
1626
+ tailnet .WithDNS (fDNS , "testy" ),
1627
+ )
1623
1628
1624
1629
updateC := newFakeWorkspaceUpdateClient (ctx , t )
1625
1630
updateCW := uut .New (updateC )
@@ -1639,7 +1644,9 @@ func TestTunnelAllWorkspaceUpdatesController_DNSError(t *testing.T) {
1639
1644
1640
1645
// DNS for w1a1
1641
1646
expectedDNS := map [dnsname.FQDN ][]netip.Addr {
1642
- "w1a1.w1.me.coder." : {netip .MustParseAddr ("fd60:627a:a42b:0101::" )},
1647
+ "w1a1.w1.me.coder." : {netip .MustParseAddr ("fd60:627a:a42b:0101::" )},
1648
+ "w1a1.w1.testy.coder." : {netip .MustParseAddr ("fd60:627a:a42b:0101::" )},
1649
+ "w1.coder." : {netip .MustParseAddr ("fd60:627a:a42b:0101::" )},
1643
1650
}
1644
1651
dnsCall := testutil .RequireRecvCtx (ctx , t , fDNS .calls )
1645
1652
require .Equal (t , expectedDNS , dnsCall .hosts )
@@ -1746,7 +1753,7 @@ func TestTunnelAllWorkspaceUpdatesController_HandleErrors(t *testing.T) {
1746
1753
1747
1754
fConn := & fakeCoordinatee {}
1748
1755
tsc := tailnet .NewTunnelSrcCoordController (logger , fConn )
1749
- uut := tailnet .NewTunnelAllWorkspaceUpdatesController (logger , tsc , nil )
1756
+ uut := tailnet .NewTunnelAllWorkspaceUpdatesController (logger , tsc )
1750
1757
updateC := newFakeWorkspaceUpdateClient (ctx , t )
1751
1758
updateCW := uut .New (updateC )
1752
1759
@@ -1780,18 +1787,16 @@ func (f fakeWorkspaceUpdatesController) New(client tailnet.WorkspaceUpdatesClien
1780
1787
}
1781
1788
select {
1782
1789
case <- f .ctx .Done ():
1783
- f .t .Error ("timed out waiting to send New call" )
1784
1790
cw := newFakeCloserWaiter ()
1785
- cw .errCh <- f . ctx . Err ()
1791
+ cw .errCh <- timeoutOnFakeErr
1786
1792
return cw
1787
1793
case f .calls <- call :
1788
1794
// OK
1789
1795
}
1790
1796
select {
1791
1797
case <- f .ctx .Done ():
1792
- f .t .Error ("timed out waiting to get New call response" )
1793
1798
cw := newFakeCloserWaiter ()
1794
- cw .errCh <- f . ctx . Err ()
1799
+ cw .errCh <- timeoutOnFakeErr
1795
1800
return cw
1796
1801
case resp := <- resps :
1797
1802
return resp
0 commit comments