@@ -770,36 +770,20 @@ func (s) TestClientSendsAGoAway(t *testing.T) {
770770 if err != nil {
771771 t .Fatalf ("error listening: %v" , err )
772772 }
773- ctCh := testutils .NewChannel ()
773+ defer lis .Close ()
774+ goAwayReceived := make (chan struct {})
775+ errCh := make (chan error )
774776 go func () {
775777 conn , err := lis .Accept ()
776778 if err != nil {
777779 t .Errorf ("error in lis.Accept(): %v" , err )
778780 }
779781 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 ()
800783 for {
801784 f , err := ct .fr .ReadFrame ()
802785 if err != nil {
786+ errCh <- fmt .Errorf ("error reading frame: %v" , err )
803787 return
804788 }
805789 switch fr := f .(type ) {
@@ -808,6 +792,7 @@ func (s) TestClientSendsAGoAway(t *testing.T) {
808792 if fr .ErrCode == http2 .ErrCodeNo {
809793 t .Logf ("GoAway received from client" )
810794 close (goAwayReceived )
795+ return
811796 }
812797 default :
813798 t .Errorf ("server tester received unexpected frame type %T" , f )
@@ -816,8 +801,18 @@ func (s) TestClientSendsAGoAway(t *testing.T) {
816801 }
817802 }
818803 }()
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 )
819815 cc .Close ()
820- defer ct .conn .Close ()
821816 select {
822817 case <- goAwayReceived :
823818 case err := <- errCh :
0 commit comments