@@ -442,10 +442,12 @@ func checkServerUp(t *testing.T, currentServer *server) {
442
442
443
443
func TestPickFirstEmptyAddrs (t * testing.T ) {
444
444
servers , r := startServers (t , 1 , math .MaxUint32 )
445
+ defer servers [0 ].stop ()
445
446
cc , err := Dial ("foo.bar.com" , WithBalancer (pickFirstBalancer (r )), WithBlock (), WithInsecure (), WithCodec (testCodec {}))
446
447
if err != nil {
447
448
t .Fatalf ("Failed to create ClientConn: %v" , err )
448
449
}
450
+ defer cc .Close ()
449
451
var reply string
450
452
if err := Invoke (context .Background (), "/foo/bar" , & expectedRequest , & reply , cc ); err != nil || reply != expectedResponse {
451
453
t .Fatalf ("grpc.Invoke(_, _, _, _, _) = %v, reply = %q, want %q, <nil>" , err , reply , expectedResponse )
@@ -465,12 +467,11 @@ func TestPickFirstEmptyAddrs(t *testing.T) {
465
467
break
466
468
}
467
469
}
468
- cc .Close ()
469
- servers [0 ].stop ()
470
470
}
471
471
472
472
func TestPickFirstCloseWithPendingRPC (t * testing.T ) {
473
473
servers , r := startServers (t , 1 , math .MaxUint32 )
474
+ defer servers [0 ].stop ()
474
475
cc , err := Dial ("foo.bar.com" , WithBalancer (pickFirstBalancer (r )), WithBlock (), WithInsecure (), WithCodec (testCodec {}))
475
476
if err != nil {
476
477
t .Fatalf ("Failed to create ClientConn: %v" , err )
@@ -514,18 +515,20 @@ func TestPickFirstCloseWithPendingRPC(t *testing.T) {
514
515
time .Sleep (5 * time .Millisecond )
515
516
cc .Close ()
516
517
wg .Wait ()
517
- servers [0 ].stop ()
518
518
}
519
519
520
520
func TestPickFirstOrderAllServerUp (t * testing.T ) {
521
521
// Start 3 servers on 3 ports.
522
522
numServers := 3
523
523
servers , r := startServers (t , numServers , math .MaxUint32 )
524
+ for i := 0 ; i < numServers ; i ++ {
525
+ defer servers [i ].stop ()
526
+ }
524
527
cc , err := Dial ("foo.bar.com" , WithBalancer (pickFirstBalancer (r )), WithBlock (), WithInsecure (), WithCodec (testCodec {}))
525
528
if err != nil {
526
529
t .Fatalf ("Failed to create ClientConn: %v" , err )
527
530
}
528
-
531
+ defer cc . Close ()
529
532
// Add servers[1] and [2] to the service discovery.
530
533
u := & naming.Update {
531
534
Op : naming .Add ,
@@ -576,7 +579,7 @@ func TestPickFirstOrderAllServerUp(t *testing.T) {
576
579
}
577
580
578
581
// Add server[0] back to the balancer, the incoming RPCs served in server[1]
579
- // Add is append operation, the order of Notify now is {server[2].port server[0].port}
582
+ // Add is append operation, the order of Notify now is {server[1].port server[ 2].port server[0].port}
580
583
u = & naming.Update {
581
584
Op : naming .Add ,
582
585
Addr : "localhost:" + servers [0 ].port ,
@@ -608,22 +611,38 @@ func TestPickFirstOrderAllServerUp(t *testing.T) {
608
611
time .Sleep (10 * time .Millisecond )
609
612
}
610
613
611
- // After remove server[3], incoming RPCs still served in server[0]
612
- cc .Close ()
613
- for i := 0 ; i < numServers ; i ++ {
614
- servers [i ].stop ()
614
+ // Delete server[2] in the balancer, the incoming RPCs served in server[0]
615
+ u = & naming.Update {
616
+ Op : naming .Delete ,
617
+ Addr : "localhost:" + servers [2 ].port ,
618
+ }
619
+ r .w .inject ([]* naming.Update {u })
620
+ for {
621
+ if err := Invoke (context .Background (), "/foo/bar" , & req , & reply , cc ); err != nil && ErrorDesc (err ) == servers [0 ].port {
622
+ break
623
+ }
624
+ time .Sleep (1 * time .Second )
625
+ }
626
+ for i := 0 ; i < 20 ; i ++ {
627
+ if err := Invoke (context .Background (), "/foo/bar" , & req , & reply , cc ); err == nil || ErrorDesc (err ) != servers [0 ].port {
628
+ t .Fatalf ("Index %d: Invoke(_, _, _, _, _) = %v, want %s" , 2 , err , servers [2 ].port )
629
+ }
630
+ time .Sleep (10 * time .Millisecond )
615
631
}
616
632
}
617
633
618
634
func TestPickFirstOrderOneServerDown (t * testing.T ) {
619
635
// Start 3 servers on 3 ports.
620
636
numServers := 3
621
637
servers , r := startServers (t , numServers , math .MaxUint32 )
638
+ for i := 0 ; i < numServers ; i ++ {
639
+ defer servers [i ].stop ()
640
+ }
622
641
cc , err := Dial ("foo.bar.com" , WithBalancer (pickFirstBalancer (r )), WithBlock (), WithInsecure (), WithCodec (testCodec {}))
623
642
if err != nil {
624
643
t .Fatalf ("Failed to create ClientConn: %v" , err )
625
644
}
626
-
645
+ defer cc . Close ()
627
646
// Add servers[1] and [2] to the service discovery.
628
647
u := & naming.Update {
629
648
Op : naming .Add ,
@@ -701,22 +720,20 @@ func TestPickFirstOrderOneServerDown(t *testing.T) {
701
720
}
702
721
time .Sleep (10 * time .Millisecond )
703
722
}
704
-
705
- // After remove server[3], incoming RPCs still served in server[0]
706
- cc .Close ()
707
- for i := 0 ; i < numServers ; i ++ {
708
- servers [i ].stop ()
709
- }
710
723
}
711
724
712
725
func TestPickFirstOneAddressRemoval (t * testing.T ) {
713
726
// Start 2 servers.
714
727
numServers := 2
715
728
servers , r := startServers (t , numServers , math .MaxUint32 )
729
+ for i := 0 ; i < numServers ; i ++ {
730
+ defer servers [i ].stop ()
731
+ }
716
732
cc , err := Dial ("localhost:" + servers [0 ].port , WithBalancer (pickFirstBalancer (r )), WithBlock (), WithInsecure (), WithCodec (testCodec {}))
717
733
if err != nil {
718
734
t .Fatalf ("Failed to create ClientConn: %v" , err )
719
735
}
736
+ defer cc .Close ()
720
737
// Add servers[1] to the service discovery.
721
738
var updates []* naming.Update
722
739
updates = append (updates , & naming.Update {
@@ -760,8 +777,4 @@ func TestPickFirstOneAddressRemoval(t *testing.T) {
760
777
}()
761
778
}
762
779
wg .Wait ()
763
- cc .Close ()
764
- for i := 0 ; i < numServers ; i ++ {
765
- servers [i ].stop ()
766
- }
767
780
}
0 commit comments