MCPcopy
hub / github.com/grpc/grpc-go / TestClientCredsHandshakeTimeout

Method TestClientCredsHandshakeTimeout

credentials/xds/xds_client_test.go:453–499  ·  view source on GitHub ↗
(t *testing.T)

Source from the content-addressed store, hash-verified

451}
452
453func (s) TestClientCredsHandshakeTimeout(t *testing.T) {
454 clientDone := make(chan struct{})
455 ctx, sCancel := context.WithTimeout(context.Background(), defaultTestTimeout)
456 defer sCancel()
457 // A handshake function which simulates a handshake timeout from the
458 // server-side by simply blocking on the client-side handshake to timeout
459 // and not writing any handshake data.
460 hErr := errors.New("server handshake error")
461 ts := newTestServerWithHandshakeFunc(ctx, func(net.Conn) handshakeResult {
462 <-clientDone
463 return handshakeResult{err: hErr}
464 })
465 defer ts.stop()
466
467 opts := ClientOptions{FallbackCreds: makeFallbackClientCreds(t)}
468 creds, err := NewClientCredentials(opts)
469 if err != nil {
470 t.Fatalf("NewClientCredentials(%v) failed: %v", opts, err)
471 }
472
473 conn, err := net.Dial("tcp", ts.address)
474 if err != nil {
475 t.Fatalf("net.Dial(%s) failed: %v", ts.address, err)
476 }
477 defer conn.Close()
478
479 sCtx, sCancel := context.WithTimeout(context.Background(), defaultTestShortTimeout)
480 defer sCancel()
481 ctx = newTestContextWithHandshakeInfo(sCtx, makeRootProvider(t, "x509/server_ca_cert.pem"), nil, defaultTestCertSAN, "", false)
482 if _, _, err := creds.ClientHandshake(ctx, authority, conn); err == nil {
483 t.Fatal("ClientHandshake() succeeded when expected to timeout")
484 }
485 close(clientDone)
486
487 // Read the handshake result from the testServer and make sure the expected
488 // error is returned.
489 ctx, cancel := context.WithTimeout(context.Background(), defaultTestTimeout)
490 defer cancel()
491 val, err := ts.hsResult.Receive(ctx)
492 if err != nil {
493 t.Fatalf("testServer failed to return handshake result: %v", err)
494 }
495 hsr := val.(handshakeResult)
496 if hsr.err != hErr {
497 t.Fatalf("testServer handshake returned error: %v, want: %v", hsr.err, hErr)
498 }
499}
500
501// TestClientCredsHandshakeFailure verifies different handshake failure cases.
502func (s) TestClientCredsHandshakeFailure(t *testing.T) {

Callers

nothing calls this directly

Calls 12

makeFallbackClientCredsFunction · 0.85
NewClientCredentialsFunction · 0.85
makeRootProviderFunction · 0.70
stopMethod · 0.65
FatalfMethod · 0.65
CloseMethod · 0.65
ClientHandshakeMethod · 0.65
FatalMethod · 0.65
DialMethod · 0.45
ReceiveMethod · 0.45

Tested by

no test coverage detected