@@ -24,8 +24,10 @@ import (
24
24
"github.com/stretchr/testify/require"
25
25
)
26
26
27
- func init () {
28
- transport .DialTimeout = time .Second
27
+ func setDialTimeout (t time.Duration ) (reset func ()) {
28
+ orig := transport .DialTimeout
29
+ transport .DialTimeout = t
30
+ return func () { transport .DialTimeout = orig }
29
31
}
30
32
31
33
func closeSwarms (swarms []* Swarm ) {
@@ -87,11 +89,11 @@ func acceptAndHang(l net.Listener) {
87
89
}
88
90
89
91
func TestSimultDials (t * testing.T ) {
90
- // t.Skip("skipping for another test")
91
92
t .Parallel ()
92
93
93
94
ctx := context .Background ()
94
95
swarms := makeSwarms (t , 2 , swarmt .OptDisableReuseport )
96
+ defer closeSwarms (swarms )
95
97
96
98
// connect everyone
97
99
{
@@ -133,10 +135,6 @@ func TestSimultDials(t *testing.T) {
133
135
if c10l > 2 {
134
136
t .Error ("1->0 has" , c10l )
135
137
}
136
-
137
- for _ , s := range swarms {
138
- s .Close ()
139
- }
140
138
}
141
139
142
140
func newSilentPeer (t * testing.T ) (peer.ID , ma.Multiaddr , net.Listener ) {
@@ -159,7 +157,8 @@ func newSilentPeer(t *testing.T) (peer.ID, ma.Multiaddr, net.Listener) {
159
157
}
160
158
161
159
func TestDialWait (t * testing.T ) {
162
- t .Parallel ()
160
+ reset := setDialTimeout (250 * time .Millisecond )
161
+ defer reset ()
163
162
164
163
ctx := context .Background ()
165
164
swarms := makeSwarms (t , 1 )
@@ -194,7 +193,6 @@ func TestDialWait(t *testing.T) {
194
193
}
195
194
196
195
func TestDialBackoff (t * testing.T ) {
197
- // t.Skip("skipping for another test")
198
196
if ci .IsRunning () {
199
197
t .Skip ("travis will never have fun with this test" )
200
198
}
@@ -203,10 +201,9 @@ func TestDialBackoff(t *testing.T) {
203
201
204
202
ctx := context .Background ()
205
203
swarms := makeSwarms (t , 2 )
204
+ defer closeSwarms (swarms )
206
205
s1 := swarms [0 ]
207
206
s2 := swarms [1 ]
208
- defer s1 .Close ()
209
- defer s2 .Close ()
210
207
211
208
s2addrs , err := s2 .InterfaceListenAddresses ()
212
209
if err != nil {
@@ -405,15 +402,13 @@ func TestDialBackoff(t *testing.T) {
405
402
}
406
403
407
404
func TestDialBackoffClears (t * testing.T ) {
408
- // t.Skip("skipping for another test" )
409
- t . Parallel ()
405
+ reset := setDialTimeout ( 250 * time . Millisecond )
406
+ defer reset ()
410
407
411
- ctx := context .Background ()
412
408
swarms := makeSwarms (t , 2 )
409
+ defer closeSwarms (swarms )
413
410
s1 := swarms [0 ]
414
411
s2 := swarms [1 ]
415
- defer s1 .Close ()
416
- defer s2 .Close ()
417
412
418
413
// use another address first, that accept and hang on conns
419
414
_ , s2bad , s2l := newSilentPeer (t )
@@ -424,13 +419,8 @@ func TestDialBackoffClears(t *testing.T) {
424
419
s1 .Peerstore ().AddAddr (s2 .LocalPeer (), s2bad , peerstore .PermanentAddrTTL )
425
420
426
421
before := time .Now ()
427
- c , err := s1 .DialPeer (ctx , s2 .LocalPeer ())
428
- if err == nil {
429
- defer c .Close ()
430
- t .Fatal ("dialing to broken addr worked..." , err )
431
- } else {
432
- t .Log ("correctly got error:" , err )
433
- }
422
+ _ , err := s1 .DialPeer (context .Background (), s2 .LocalPeer ())
423
+ require .Error (t , err , "dialing to broken addr worked..." )
434
424
duration := time .Since (before )
435
425
436
426
if duration < transport .DialTimeout * DialAttempts {
@@ -439,39 +429,18 @@ func TestDialBackoffClears(t *testing.T) {
439
429
if duration > 2 * transport .DialTimeout * DialAttempts {
440
430
t .Error ("> 2*transport.DialTimeout * DialAttempts not being respected" , duration , 2 * transport .DialTimeout * DialAttempts )
441
431
}
442
-
443
- if ! s1 .Backoff ().Backoff (s2 .LocalPeer (), s2bad ) {
444
- t .Error ("s2 should now be on backoff" )
445
- } else {
446
- t .Log ("correctly added to backoff" )
447
- }
432
+ require .True (t , s1 .Backoff ().Backoff (s2 .LocalPeer (), s2bad ), "s2 should now be on backoff" )
448
433
449
434
// phase 2 -- add the working address. dial should succeed.
450
- ifaceAddrs1 , err := swarms [1 ].InterfaceListenAddresses ()
451
- if err != nil {
452
- t .Fatal (err )
453
- }
435
+ ifaceAddrs1 , err := s2 .InterfaceListenAddresses ()
436
+ require .NoError (t , err )
454
437
s1 .Peerstore ().AddAddrs (s2 .LocalPeer (), ifaceAddrs1 , peerstore .PermanentAddrTTL )
455
438
456
- if c , err := s1 .DialPeer (ctx , s2 .LocalPeer ()); err == nil {
457
- c .Close ()
458
- t .Log ("backoffs are per address, not peer" )
459
- }
460
-
461
- time .Sleep (BackoffBase )
462
-
463
- if c , err := s1 .DialPeer (ctx , s2 .LocalPeer ()); err != nil {
464
- t .Fatal (err )
465
- } else {
466
- c .Close ()
467
- t .Log ("correctly connected" )
468
- }
469
-
470
- if s1 .Backoff ().Backoff (s2 .LocalPeer (), s2bad ) {
471
- t .Error ("s2 should no longer be on backoff" )
472
- } else {
473
- t .Log ("correctly cleared backoff" )
474
- }
439
+ // backoffs are per address, not peer
440
+ c , err := s1 .DialPeer (context .Background (), s2 .LocalPeer ())
441
+ require .NoError (t , err )
442
+ defer c .Close ()
443
+ require .False (t , s1 .Backoff ().Backoff (s2 .LocalPeer (), s2bad ), "s2 should no longer be on backoff" )
475
444
}
476
445
477
446
func TestDialPeerFailed (t * testing.T ) {
@@ -515,28 +484,20 @@ func TestDialPeerFailed(t *testing.T) {
515
484
}
516
485
517
486
func TestDialExistingConnection (t * testing.T ) {
518
- ctx := context .Background ()
519
-
520
487
swarms := makeSwarms (t , 2 )
521
488
defer closeSwarms (swarms )
522
489
s1 := swarms [0 ]
523
490
s2 := swarms [1 ]
524
491
525
492
s1 .Peerstore ().AddAddrs (s2 .LocalPeer (), s2 .ListenAddresses (), peerstore .PermanentAddrTTL )
526
493
527
- c1 , err := s1 .DialPeer (ctx , s2 .LocalPeer ())
528
- if err != nil {
529
- t .Fatal (err )
530
- }
494
+ c1 , err := s1 .DialPeer (context .Background (), s2 .LocalPeer ())
495
+ require .NoError (t , err )
531
496
532
- c2 , err := s1 .DialPeer (ctx , s2 .LocalPeer ())
533
- if err != nil {
534
- t .Fatal (err )
535
- }
497
+ c2 , err := s1 .DialPeer (context .Background (), s2 .LocalPeer ())
498
+ require .NoError (t , err )
536
499
537
- if c1 != c2 {
538
- t .Fatal ("expecting the same connection from both dials" )
539
- }
500
+ require .Equal (t , c1 , c2 , "expecting the same connection from both dials" )
540
501
}
541
502
542
503
func newSilentListener (t * testing.T ) ([]ma.Multiaddr , net.Listener ) {
@@ -558,14 +519,13 @@ func newSilentListener(t *testing.T) ([]ma.Multiaddr, net.Listener) {
558
519
}
559
520
560
521
func TestDialSimultaneousJoin (t * testing.T ) {
561
- ctx , cancel := context . WithCancel ( context . Background () )
562
- defer cancel ()
522
+ reset := setDialTimeout ( 250 * time . Millisecond )
523
+ defer reset ()
563
524
564
525
swarms := makeSwarms (t , 2 )
526
+ defer closeSwarms (swarms )
565
527
s1 := swarms [0 ]
566
528
s2 := swarms [1 ]
567
- defer s1 .Close ()
568
- defer s2 .Close ()
569
529
570
530
s2silentAddrs , s2silentListener := newSilentListener (t )
571
531
go acceptAndHang (s2silentListener )
@@ -577,7 +537,7 @@ func TestDialSimultaneousJoin(t *testing.T) {
577
537
go func () {
578
538
s1 .Peerstore ().AddAddrs (s2 .LocalPeer (), s2silentAddrs , peerstore .PermanentAddrTTL )
579
539
580
- c , err := s1 .DialPeer (ctx , s2 .LocalPeer ())
540
+ c , err := s1 .DialPeer (context . Background () , s2 .LocalPeer ())
581
541
if err != nil {
582
542
errs <- err
583
543
connch <- nil
@@ -602,7 +562,7 @@ func TestDialSimultaneousJoin(t *testing.T) {
602
562
}
603
563
s1 .Peerstore ().AddAddrs (s2 .LocalPeer (), s2addrs [:1 ], peerstore .PermanentAddrTTL )
604
564
605
- c , err := s1 .DialPeer (ctx , s2 .LocalPeer ())
565
+ c , err := s1 .DialPeer (context . Background () , s2 .LocalPeer ())
606
566
if err != nil {
607
567
errs <- err
608
568
connch <- nil
@@ -620,7 +580,7 @@ func TestDialSimultaneousJoin(t *testing.T) {
620
580
621
581
// start a third dial to s2, this should get the existing connection from the successful dial
622
582
go func () {
623
- c , err := s1 .DialPeer (ctx , s2 .LocalPeer ())
583
+ c , err := s1 .DialPeer (context . Background () , s2 .LocalPeer ())
624
584
if err != nil {
625
585
errs <- err
626
586
connch <- nil
@@ -637,10 +597,7 @@ func TestDialSimultaneousJoin(t *testing.T) {
637
597
638
598
// raise any errors from the previous goroutines
639
599
for i := 0 ; i < 3 ; i ++ {
640
- err := <- errs
641
- if err != nil {
642
- t .Fatal (err )
643
- }
600
+ require .NoError (t , <- errs )
644
601
}
645
602
646
603
if c2 != c3 {
@@ -660,13 +617,12 @@ func TestDialSimultaneousJoin(t *testing.T) {
660
617
}
661
618
662
619
func TestDialSelf (t * testing.T ) {
663
- ctx , cancel := context .WithCancel (context .Background ())
664
- defer cancel ()
620
+ t .Parallel ()
665
621
666
622
swarms := makeSwarms (t , 2 )
623
+ defer closeSwarms (swarms )
667
624
s1 := swarms [0 ]
668
- defer s1 .Close ()
669
625
670
- _ , err := s1 .DialPeer (ctx , s1 .LocalPeer ())
626
+ _ , err := s1 .DialPeer (context . Background () , s1 .LocalPeer ())
671
627
require .ErrorIs (t , err , ErrDialToSelf , "expected error from self dial" )
672
628
}
0 commit comments