for _, test := range tests {
t.Run(test.name, func(t *testing.T) {
- cc, err := Dial(test.target, test.opts...)
+ cc, err := NewClient(test.target, test.opts...)
if err != nil {
- t.Fatalf("Dial(%q) failed: %v", test.target, err)
+ t.Fatalf("NewClient(%q) failed: %v", test.target, err)
}
defer cc.Close()
if cc.authority != test.wantAuthority {
opts := []DialOption{WithTransportCredentials(creds), WithAuthority("authority-override")}
if cc, err := NewClient("Non-Existent.Server:8000", opts...); err == nil {
cc.Close()
- t.Fatal("grpc.NewClient() succeeded when expected to fail")
+ t.Fatal("NewClient() succeeded when expected to fail")
}
}
"errors"
"fmt"
"net"
+ "strings"
"testing"
"time"
}
}
+func (s) TestParsedTarget_Failure_WithoutCustomDialer_WithNewClient(t *testing.T) {
+ targets := []string{
+ "",
+ "unix://a/b/c",
+ "unix://authority",
+ "unix-abstract://authority/a/b/c",
+ "unix-abstract://authority",
+ }
+
+ for _, target := range targets {
+ t.Run(target, func(t *testing.T) {
+ ctx, cancel := context.WithTimeout(context.Background(), defaultTestTimeout)
+ defer cancel()
+ cc, err := NewClient(target, WithTransportCredentials(insecure.NewCredentials()))
+ if err != nil {
+ t.Fatalf("NewClient(%q) failed: %v", target, err)
+ }
+ defer cc.Close()
+ const wantErrSubstr = "failed to exit idle mode"
+ if _, err := cc.NewStream(ctx, &StreamDesc{}, "/my.service.v1.MyService/UnaryCall"); err == nil {
+ t.Fatalf("NewStream() succeeded with target = %q, cc.parsedTarget = %+v, expected to fail", target, cc.parsedTarget)
+ } else if !strings.Contains(err.Error(), wantErrSubstr) {
+ t.Fatalf("NewStream() with target = %q returned unexpected error: got %v, want substring %q", target, err, wantErrSubstr)
+ }
+ })
+ }
+}
+
func (s) TestParsedTarget_WithCustomDialer(t *testing.T) {
resetInitialResolverState()
defScheme := resolver.GetDefaultScheme()
return nil, errors.New("dialer error")
}
- cc, err := Dial(test.target, WithTransportCredentials(insecure.NewCredentials()), WithContextDialer(dialer))
+ cc, err := NewClient(test.target, WithTransportCredentials(insecure.NewCredentials()), withDefaultScheme(defScheme), WithContextDialer(dialer))
if err != nil {
- t.Fatalf("Dial(%q) failed: %v", test.target, err)
+ t.Fatalf("grpc.NewClient(%q) failed: %v", test.target, err)
}
defer cc.Close()
+ cc.Connect()
select {
case addr := <-addrCh:
)
func (s) TestAddGlobalDialOptions(t *testing.T) {
- // Ensure the Dial fails without credentials
- if _, err := Dial("fake"); err == nil {
- t.Fatalf("Dialing without a credential did not fail")
+ // Ensure the NewClient fails without credentials
+ if _, err := NewClient("fake"); err == nil {
+ t.Fatalf("NewClient without a credential did not fail")
} else {
if !strings.Contains(err.Error(), "no transport security set") {
- t.Fatalf("Dialing failed with unexpected error: %v", err)
+ t.Fatalf("NewClient failed with unexpected error: %v", err)
}
}
}
}
- // Ensure the Dial passes with the extra dial options
- if cc, err := Dial("fake"); err != nil {
- t.Fatalf("Dialing with insecure credential failed: %v", err)
+ // Ensure the NewClient passes with the extra dial options
+ if cc, err := NewClient("fake"); err != nil {
+ t.Fatalf("NewClient with insecure credential failed: %v", err)
} else {
cc.Close()
}
// due to the global dial options with credentials not being picked up due
// to global options being disabled.
noTSecStr := "no transport security set"
- if _, err := Dial("fake", internal.DisableGlobalDialOptions.(func() DialOption)()); !strings.Contains(fmt.Sprint(err), noTSecStr) {
- t.Fatalf("Dialing received unexpected error: %v, want error containing \"%v\"", err, noTSecStr)
+ if _, err := NewClient("fake", internal.DisableGlobalDialOptions.(func() DialOption)()); !strings.Contains(fmt.Sprint(err), noTSecStr) {
+ t.Fatalf("NewClient received unexpected error: %v, want error containing %q", err, noTSecStr)
}
}
defer internal.ClearGlobalPerTargetDialOptions()
noTSecStr := "no transport security set"
if _, err := NewClient("dns:///fake"); !strings.Contains(fmt.Sprint(err), noTSecStr) {
- t.Fatalf("Dialing received unexpected error: %v, want error containing \"%v\"", err, noTSecStr)
+ t.Fatalf("NewClient received unexpected error: %v, want error containing %q", err, noTSecStr)
}
cc, err := NewClient("passthrough:///nice")
if err != nil {
- t.Fatalf("Dialing with insecure credentials failed: %v", err)
+ t.Fatalf("NewClient with insecure credentials failed: %v", err)
}
cc.Close()
}
const maxRecvSize = 998765
const initialWindowSize = 100
jdo := newJoinDialOption(WithTransportCredentials(insecure.NewCredentials()), WithReadBufferSize(maxRecvSize), WithInitialWindowSize(initialWindowSize))
- cc, err := Dial("fake", jdo)
+ cc, err := NewClient("fake", jdo)
if err != nil {
- t.Fatalf("Dialing with insecure credentials failed: %v", err)
+ t.Fatalf("NewClient with insecure credentials failed: %v", err)
}
defer cc.Close()
if cc.dopts.copts.ReadBufferSize != maxRecvSize {
return nil, fmt.Errorf("not dialing with custom dialer")
}
- cc, err := Dial(target, WithContextDialer(customDialer), WithTransportCredentials(insecure.NewCredentials()))
+ cc, err := NewClient(target, WithContextDialer(customDialer), WithTransportCredentials(insecure.NewCredentials()))
if err != nil {
- t.Fatalf("Unexpected Dial(%q) error: %v", target, err)
+ t.Fatalf("Unexpected NewClient(%q) error: %v", target, err)
}
cc.Connect()
if got, want := <-addrCh, "localhost:1234"; got != want {
// This results in "passthrough" being used with the address as the whole
// target.
target = "caseTest2:///localhost:1234"
- cc, err = Dial(target, WithContextDialer(customDialer), WithResolvers(res), WithTransportCredentials(insecure.NewCredentials()))
+ cc, err = NewClient(target, WithContextDialer(customDialer), withDefaultScheme("passthrough"), WithResolvers(res), WithTransportCredentials(insecure.NewCredentials()))
if err != nil {
- t.Fatalf("Unexpected Dial(%q) error: %v", target, err)
+ t.Fatalf("Unexpected NewClient(%q) error: %v", target, err)
}
cc.Connect()
if got, want := <-addrCh, target; got != want {
WithResolvers(r),
WithDefaultServiceConfig(fmt.Sprintf(`{"loadBalancingConfig": [{"%s":{}}]}`, balancerName)))
if err != nil {
- t.Fatalf("grpc.NewClient() failed: %v", err)
+ t.Fatalf("NewClient() failed: %v", err)
}
cc.Connect()
defer cc.Close()
WithResolvers(r),
WithDefaultServiceConfig(fmt.Sprintf(`{"loadBalancingConfig": [{"%s":{}}]}`, balancerName)))
if err != nil {
- t.Fatalf("grpc.NewClient() failed: %v", err)
+ t.Fatalf("NewClient() failed: %v", err)
}
cc.Connect()
defer cc.Close()