@@ -770,36 +770,20 @@ func (s) TestClientSendsAGoAway(t *testing.T) {
770
770
if err != nil {
771
771
t .Fatalf ("error listening: %v" , err )
772
772
}
773
- ctCh := testutils .NewChannel ()
773
+ defer lis .Close ()
774
+ goAwayReceived := make (chan struct {})
775
+ errCh := make (chan error )
774
776
go func () {
775
777
conn , err := lis .Accept ()
776
778
if err != nil {
777
779
t .Errorf ("error in lis.Accept(): %v" , err )
778
780
}
779
781
ct := newClientTester (t , conn )
780
- ctCh .Send (ct )
781
- }()
782
- defer lis .Close ()
783
-
784
- cc , err := grpc .Dial (lis .Addr ().String (), grpc .WithTransportCredentials (insecure .NewCredentials ()))
785
- if err != nil {
786
- t .Fatalf ("error dialing: %v" , err )
787
- }
788
-
789
- ctx , cancel := context .WithTimeout (context .Background (), defaultTestTimeout )
790
- defer cancel ()
791
-
792
- val , err := ctCh .Receive (ctx )
793
- if err != nil {
794
- t .Fatalf ("timeout waiting for client transport (should be given after http2 creation)" )
795
- }
796
- ct := val .(* clientTester )
797
- goAwayReceived := make (chan struct {})
798
- errCh := make (chan error )
799
- go func () {
782
+ defer ct .conn .Close ()
800
783
for {
801
784
f , err := ct .fr .ReadFrame ()
802
785
if err != nil {
786
+ errCh <- fmt .Errorf ("error reading frame: %v" , err )
803
787
return
804
788
}
805
789
switch fr := f .(type ) {
@@ -808,6 +792,7 @@ func (s) TestClientSendsAGoAway(t *testing.T) {
808
792
if fr .ErrCode == http2 .ErrCodeNo {
809
793
t .Logf ("GoAway received from client" )
810
794
close (goAwayReceived )
795
+ return
811
796
}
812
797
default :
813
798
t .Errorf ("server tester received unexpected frame type %T" , f )
@@ -816,8 +801,18 @@ func (s) TestClientSendsAGoAway(t *testing.T) {
816
801
}
817
802
}
818
803
}()
804
+
805
+ cc , err := grpc .NewClient (lis .Addr ().String (), grpc .WithTransportCredentials (insecure .NewCredentials ()))
806
+ if err != nil {
807
+ t .Fatalf ("error dialing: %v" , err )
808
+ }
809
+ cc .Connect ()
810
+
811
+ ctx , cancel := context .WithTimeout (context .Background (), defaultTestTimeout )
812
+ defer cancel ()
813
+
814
+ testutils .AwaitState (ctx , t , cc , connectivity .Ready )
819
815
cc .Close ()
820
- defer ct .conn .Close ()
821
816
select {
822
817
case <- goAwayReceived :
823
818
case err := <- errCh :
0 commit comments