@@ -37,10 +37,6 @@ import (
3737 "google.golang.org/grpc/credentials"
3838 "google.golang.org/grpc/credentials/insecure"
3939 internalbackoff "google.golang.org/grpc/internal/backoff"
40- "google.golang.org/grpc/internal/grpcsync"
41- "google.golang.org/grpc/internal/grpctest"
42- "google.golang.org/grpc/internal/transport"
43- "google.golang.org/grpc/keepalive"
4440 "google.golang.org/grpc/resolver"
4541 "google.golang.org/grpc/resolver/manual"
4642 "google.golang.org/grpc/serviceconfig"
@@ -69,47 +65,6 @@ func parseCfg(r *manual.Resolver, s string) *serviceconfig.ParseResult {
6965 return scpr
7066}
7167
72- func (s ) TestDialWithTimeout (t * testing.T ) {
73- lis , err := net .Listen ("tcp" , "localhost:0" )
74- if err != nil {
75- t .Fatalf ("Error while listening. Err: %v" , err )
76- }
77- defer lis .Close ()
78- lisAddr := resolver.Address {Addr : lis .Addr ().String ()}
79- lisDone := make (chan struct {})
80- dialDone := make (chan struct {})
81- // 1st listener accepts the connection and then does nothing
82- go func () {
83- defer close (lisDone )
84- conn , err := lis .Accept ()
85- if err != nil {
86- t .Errorf ("Error while accepting. Err: %v" , err )
87- return
88- }
89- framer := http2 .NewFramer (conn , conn )
90- if err := framer .WriteSettings (http2.Setting {}); err != nil {
91- t .Errorf ("Error while writing settings. Err: %v" , err )
92- return
93- }
94- <- dialDone // Close conn only after dial returns.
95- }()
96-
97- r := manual .NewBuilderWithScheme ("whatever" )
98- r .InitialState (resolver.State {Addresses : []resolver.Address {lisAddr }})
99- client , err := Dial (r .Scheme ()+ ":///test.server" , WithTransportCredentials (insecure .NewCredentials ()), WithResolvers (r ), WithTimeout (5 * time .Second ))
100- close (dialDone )
101- if err != nil {
102- t .Fatalf ("Dial failed. Err: %v" , err )
103- }
104- defer client .Close ()
105- timeout := time .After (1 * time .Second )
106- select {
107- case <- timeout :
108- t .Fatal ("timed out waiting for server to finish" )
109- case <- lisDone :
110- }
111- }
112-
11368func (s ) TestNewClientWithMultipleBackendsNotSendingServerPreface (t * testing.T ) {
11469 lis1 , err := net .Listen ("tcp" , "localhost:0" )
11570 if err != nil {
@@ -167,97 +122,6 @@ func (s) TestNewClientWithMultipleBackendsNotSendingServerPreface(t *testing.T)
167122 }
168123}
169124
170- func (s ) TestDialWaitsForServerSettings (t * testing.T ) {
171- lis , err := net .Listen ("tcp" , "localhost:0" )
172- if err != nil {
173- t .Fatalf ("Error while listening. Err: %v" , err )
174- }
175- defer lis .Close ()
176- done := make (chan struct {})
177- sent := make (chan struct {})
178- dialDone := make (chan struct {})
179- go func () { // Launch the server.
180- defer func () {
181- close (done )
182- }()
183- conn , err := lis .Accept ()
184- if err != nil {
185- t .Errorf ("Error while accepting. Err: %v" , err )
186- return
187- }
188- defer conn .Close ()
189- // Sleep for a little bit to make sure that Dial on client
190- // side blocks until settings are received.
191- time .Sleep (100 * time .Millisecond )
192- framer := http2 .NewFramer (conn , conn )
193- close (sent )
194- if err := framer .WriteSettings (http2.Setting {}); err != nil {
195- t .Errorf ("Error while writing settings. Err: %v" , err )
196- return
197- }
198- <- dialDone // Close conn only after dial returns.
199- }()
200- ctx , cancel := context .WithTimeout (context .Background (), 10 * time .Second )
201- defer cancel ()
202- client , err := DialContext (ctx , lis .Addr ().String (), WithTransportCredentials (insecure .NewCredentials ()), WithBlock ())
203- close (dialDone )
204- if err != nil {
205- t .Fatalf ("Error while dialing. Err: %v" , err )
206- }
207- defer client .Close ()
208- select {
209- case <- sent :
210- default :
211- t .Fatalf ("Dial returned before server settings were sent" )
212- }
213- <- done
214- }
215-
216- func (s ) TestDialWaitsForServerSettingsAndFails (t * testing.T ) {
217- lis , err := net .Listen ("tcp" , "localhost:0" )
218- if err != nil {
219- t .Fatalf ("Error while listening. Err: %v" , err )
220- }
221- done := make (chan struct {})
222- numConns := 0
223- go func () { // Launch the server.
224- defer func () {
225- close (done )
226- }()
227- for {
228- conn , err := lis .Accept ()
229- if err != nil {
230- break
231- }
232- numConns ++
233- defer conn .Close ()
234- }
235- }()
236- ctx , cancel := context .WithTimeout (context .Background (), 1 * time .Second )
237- defer cancel ()
238- client , err := DialContext (ctx ,
239- lis .Addr ().String (),
240- WithTransportCredentials (insecure .NewCredentials ()),
241- WithReturnConnectionError (),
242- WithConnectParams (ConnectParams {
243- Backoff : backoff.Config {},
244- MinConnectTimeout : 250 * time .Millisecond ,
245- }))
246- lis .Close ()
247- if err == nil {
248- client .Close ()
249- t .Fatalf ("Unexpected success (err=nil) while dialing" )
250- }
251- expectedMsg := "server preface"
252- if ! strings .Contains (err .Error (), context .DeadlineExceeded .Error ()) || ! strings .Contains (err .Error (), expectedMsg ) {
253- t .Fatalf ("DialContext(_) = %v; want a message that includes both %q and %q" , err , context .DeadlineExceeded .Error (), expectedMsg )
254- }
255- <- done
256- if numConns < 2 {
257- t .Fatalf ("dial attempts: %v; want > 1" , numConns )
258- }
259- }
260-
261125// 1. Client connects to a server that doesn't send preface.
262126// 2. After minConnectTimeout(500 ms here), client disconnects and retries.
263127// 3. The new server sends its preface.
@@ -391,35 +255,6 @@ func (s) TestBackoffWhenNoServerPrefaceReceived(t *testing.T) {
391255 <- done
392256}
393257
394- func (s ) TestWithTimeout (t * testing.T ) {
395- conn , err := Dial ("passthrough:///Non-Existent.Server:80" ,
396- WithTimeout (time .Millisecond ),
397- WithBlock (),
398- WithTransportCredentials (insecure .NewCredentials ()))
399- if err == nil {
400- conn .Close ()
401- }
402- if err != context .DeadlineExceeded {
403- t .Fatalf ("Dial(_, _) = %v, %v, want %v" , conn , err , context .DeadlineExceeded )
404- }
405- }
406-
407- func (s ) TestWithTransportCredentialsTLS (t * testing.T ) {
408- ctx , cancel := context .WithTimeout (context .Background (), time .Millisecond )
409- defer cancel ()
410- creds , err := credentials .NewClientTLSFromFile (testdata .Path ("x509/server_ca_cert.pem" ), "x.test.example.com" )
411- if err != nil {
412- t .Fatalf ("Failed to create credentials %v" , err )
413- }
414- conn , err := DialContext (ctx , "passthrough:///Non-Existent.Server:80" , WithTransportCredentials (creds ), WithBlock ())
415- if err == nil {
416- conn .Close ()
417- }
418- if err != context .DeadlineExceeded {
419- t .Fatalf ("Dial(_, _) = %v, %v, want %v" , conn , err , context .DeadlineExceeded )
420- }
421- }
422-
423258// When creating a transport configured with n addresses, only calculate the
424259// backoff once per "round" of attempts instead of once per address (n times
425260// per "round" of attempts) for old pickfirst and once per address for new pickfirst.
@@ -507,33 +342,6 @@ func (s) TestNewClient_BackoffCountPerRetryGroup(t *testing.T) {
507342 }
508343}
509344
510- func (s ) TestDialContextCancel (t * testing.T ) {
511- ctx , cancel := context .WithCancel (context .Background ())
512- cancel ()
513- if _ , err := DialContext (ctx , "Non-Existent.Server:80" , WithBlock (), WithTransportCredentials (insecure .NewCredentials ())); err != context .Canceled {
514- t .Fatalf ("DialContext(%v, _) = _, %v, want _, %v" , ctx , err , context .Canceled )
515- }
516- }
517-
518- type failFastError struct {}
519-
520- func (failFastError ) Error () string { return "failfast" }
521- func (failFastError ) Temporary () bool { return false }
522-
523- func (s ) TestDialContextFailFast (t * testing.T ) {
524- ctx , cancel := context .WithTimeout (context .Background (), 10 * time .Second )
525- defer cancel ()
526- failErr := failFastError {}
527- dialer := func (string , time.Duration ) (net.Conn , error ) {
528- return nil , failErr
529- }
530-
531- _ , err := DialContext (ctx , "Non-Existent.Server:80" , WithBlock (), WithTransportCredentials (insecure .NewCredentials ()), WithDialer (dialer ), FailOnNonTempDialError (true ))
532- if terr , ok := err .(transport.ConnectionError ); ! ok || terr .Origin () != failErr {
533- t .Fatalf ("DialContext() = _, %v, want _, %v" , err , failErr )
534- }
535- }
536-
537345// securePerRPCCredentials always requires transport security.
538346type securePerRPCCredentials struct {
539347 credentials.PerRPCCredentials
@@ -697,72 +505,6 @@ func (s) TestResolverEmptyUpdateNotPanic(t *testing.T) {
697505 time .Sleep (time .Second ) // Sleep to make sure the service config is handled by ClientConn.
698506}
699507
700- func (s ) TestClientUpdatesParamsAfterGoAway (t * testing.T ) {
701- grpctest .ExpectError ("Client received GoAway with error code ENHANCE_YOUR_CALM and debug data equal to ASCII \" too_many_pings\" " )
702-
703- lis , err := net .Listen ("tcp" , "localhost:0" )
704- if err != nil {
705- t .Fatalf ("Failed to listen. Err: %v" , err )
706- }
707- defer lis .Close ()
708- connected := grpcsync .NewEvent ()
709- defer connected .Fire ()
710- go func () {
711- conn , err := lis .Accept ()
712- if err != nil {
713- t .Errorf ("error accepting connection: %v" , err )
714- return
715- }
716- defer conn .Close ()
717- f := http2 .NewFramer (conn , conn )
718- // Start a goroutine to read from the conn to prevent the client from
719- // blocking after it writes its preface.
720- go func () {
721- for {
722- if _ , err := f .ReadFrame (); err != nil {
723- return
724- }
725- }
726- }()
727- if err := f .WriteSettings (http2.Setting {}); err != nil {
728- t .Errorf ("error writing settings: %v" , err )
729- return
730- }
731- <- connected .Done ()
732- if err := f .WriteGoAway (0 , http2 .ErrCodeEnhanceYourCalm , []byte ("too_many_pings" )); err != nil {
733- t .Errorf ("error writing GOAWAY: %v" , err )
734- return
735- }
736- }()
737- addr := lis .Addr ().String ()
738- ctx , cancel := context .WithTimeout (context .Background (), 5 * time .Second )
739- defer cancel ()
740- cc , err := DialContext (ctx , addr , WithBlock (), WithTransportCredentials (insecure .NewCredentials ()), WithKeepaliveParams (keepalive.ClientParameters {
741- Time : 10 * time .Second ,
742- Timeout : 100 * time .Millisecond ,
743- PermitWithoutStream : true ,
744- }))
745- if err != nil {
746- t .Fatalf ("DialContext(%s) failed: %v, want: nil" , addr , err )
747- }
748- defer cc .Close ()
749- connected .Fire ()
750- for {
751- time .Sleep (10 * time .Millisecond )
752- cc .mu .RLock ()
753- v := cc .keepaliveParams .Time
754- cc .mu .RUnlock ()
755- if v == 20 * time .Second {
756- // Success
757- return
758- }
759- if ctx .Err () != nil {
760- // Timeout
761- t .Fatalf ("cc.dopts.copts.Keepalive.Time = %v , want 20s" , v )
762- }
763- }
764- }
765-
766508func (s ) TestDisableServiceConfigOption (t * testing.T ) {
767509 r := manual .NewBuilderWithScheme ("whatever" )
768510 addr := r .Scheme () + ":///non.existent"
0 commit comments