@@ -475,6 +475,93 @@ func TestConfigMaps_updatePeers_lost_and_found(t *testing.T) {
475
475
_ = testutil .RequireRecvCtx (ctx , t , done )
476
476
}
477
477
478
+ func TestConfigMaps_setBlockEndpoints_different (t * testing.T ) {
479
+ t .Parallel ()
480
+ ctx := testutil .Context (t , testutil .WaitShort )
481
+ logger := slogtest .Make (t , nil ).Leveled (slog .LevelDebug )
482
+ fEng := newFakeEngineConfigurable ()
483
+ nodePrivateKey := key .NewNode ()
484
+ nodeID := tailcfg .NodeID (5 )
485
+ discoKey := key .NewDisco ()
486
+ uut := newConfigMaps (logger , fEng , nodeID , nodePrivateKey , discoKey .Public (), nil )
487
+ defer uut .close ()
488
+
489
+ p1ID := uuid .MustParse ("10000000-0000-0000-0000-000000000000" )
490
+ p1Node := newTestNode (1 )
491
+ p1n , err := NodeToProto (p1Node )
492
+ require .NoError (t , err )
493
+ p1tcn , err := uut .protoNodeToTailcfg (p1n )
494
+ p1tcn .KeepAlive = true
495
+ require .NoError (t , err )
496
+
497
+ // Given: peer already exists
498
+ uut .L .Lock ()
499
+ uut .peers [p1ID ] = & peerLifecycle {
500
+ peerID : p1ID ,
501
+ node : p1tcn ,
502
+ lastHandshake : time .Date (2024 , 1 , 7 , 12 , 0 , 10 , 0 , time .UTC ),
503
+ }
504
+ uut .L .Unlock ()
505
+
506
+ uut .setBlockEndpoints (true )
507
+
508
+ nm := testutil .RequireRecvCtx (ctx , t , fEng .setNetworkMap )
509
+ r := testutil .RequireRecvCtx (ctx , t , fEng .reconfig )
510
+ require .Len (t , nm .Peers , 1 )
511
+ require .Len (t , nm .Peers [0 ].Endpoints , 0 )
512
+ require .Len (t , r .wg .Peers , 1 )
513
+
514
+ done := make (chan struct {})
515
+ go func () {
516
+ defer close (done )
517
+ uut .close ()
518
+ }()
519
+ _ = testutil .RequireRecvCtx (ctx , t , done )
520
+ }
521
+
522
+ func TestConfigMaps_setBlockEndpoints_same (t * testing.T ) {
523
+ t .Parallel ()
524
+ ctx := testutil .Context (t , testutil .WaitShort )
525
+ logger := slogtest .Make (t , nil ).Leveled (slog .LevelDebug )
526
+ fEng := newFakeEngineConfigurable ()
527
+ nodePrivateKey := key .NewNode ()
528
+ nodeID := tailcfg .NodeID (5 )
529
+ discoKey := key .NewDisco ()
530
+ uut := newConfigMaps (logger , fEng , nodeID , nodePrivateKey , discoKey .Public (), nil )
531
+ defer uut .close ()
532
+
533
+ p1ID := uuid .MustParse ("10000000-0000-0000-0000-000000000000" )
534
+ p1Node := newTestNode (1 )
535
+ p1n , err := NodeToProto (p1Node )
536
+ require .NoError (t , err )
537
+ p1tcn , err := uut .protoNodeToTailcfg (p1n )
538
+ p1tcn .KeepAlive = true
539
+ require .NoError (t , err )
540
+
541
+ // Given: peer already exists && blockEndpoints set to true
542
+ uut .L .Lock ()
543
+ uut .peers [p1ID ] = & peerLifecycle {
544
+ peerID : p1ID ,
545
+ node : p1tcn ,
546
+ lastHandshake : time .Date (2024 , 1 , 7 , 12 , 0 , 10 , 0 , time .UTC ),
547
+ }
548
+ uut .blockEndpoints = true
549
+ uut .L .Unlock ()
550
+
551
+ // Then: we don't configure
552
+ requireNeverConfigures (ctx , t , uut )
553
+
554
+ // When we set blockEndpoints to true
555
+ uut .setBlockEndpoints (true )
556
+
557
+ done := make (chan struct {})
558
+ go func () {
559
+ defer close (done )
560
+ uut .close ()
561
+ }()
562
+ _ = testutil .RequireRecvCtx (ctx , t , done )
563
+ }
564
+
478
565
func expectStatusWithHandshake (
479
566
ctx context.Context , t testing.TB , fEng * fakeEngineConfigurable , k key.NodePublic , lastHandshake time.Time ,
480
567
) <- chan struct {} {
0 commit comments