mirror of https://github.com/grpc/grpc-go.git
grpc: add clientconn.CanonicalTarget() to return the canonical target string (#7006)
This commit is contained in:
parent
51f9cc0f35
commit
c267d5bbeb
|
|
@ -883,13 +883,13 @@ func (cc *ClientConn) channelzMetric() *channelz.ChannelInternalMetric {
|
|||
}
|
||||
}
|
||||
|
||||
// Target returns the canonical target string of the ClientConn.
|
||||
//
|
||||
// # Experimental
|
||||
//
|
||||
// Notice: This API is EXPERIMENTAL and may be changed or removed in a
|
||||
// later release.
|
||||
// Target returns the target string of the ClientConn.
|
||||
func (cc *ClientConn) Target() string {
|
||||
return cc.target
|
||||
}
|
||||
|
||||
// CanonicalTarget returns the canonical target string of the ClientConn.
|
||||
func (cc *ClientConn) CanonicalTarget() string {
|
||||
return cc.parsedTarget.String()
|
||||
}
|
||||
|
||||
|
|
@ -1744,6 +1744,7 @@ func (cc *ClientConn) parseTargetAndFindResolver() error {
|
|||
defScheme := resolver.GetDefaultScheme()
|
||||
channelz.Infof(logger, cc.channelzID, "fallback to scheme %q", defScheme)
|
||||
canonicalTarget := defScheme + ":///" + cc.target
|
||||
|
||||
parsedTarget, err = parseTarget(canonicalTarget)
|
||||
if err != nil {
|
||||
channelz.Infof(logger, cc.channelzID, "dial target %q parse failed: %v", canonicalTarget, err)
|
||||
|
|
|
|||
|
|
@ -808,31 +808,31 @@ func (s) TestMethodConfigDefaultService(t *testing.T) {
|
|||
}
|
||||
}
|
||||
|
||||
func (s) TestClientConn_Target(t *testing.T) {
|
||||
func (s) TestClientConnCanonicalTarget(t *testing.T) {
|
||||
tests := []struct {
|
||||
name string
|
||||
addr string
|
||||
targetWant string
|
||||
name string
|
||||
addr string
|
||||
canonicalTargetWant string
|
||||
}{
|
||||
{
|
||||
name: "normal-case",
|
||||
addr: "dns://a.server.com/google.com",
|
||||
targetWant: "dns://a.server.com/google.com",
|
||||
name: "normal-case",
|
||||
addr: "dns://a.server.com/google.com",
|
||||
canonicalTargetWant: "dns://a.server.com/google.com",
|
||||
},
|
||||
{
|
||||
name: "canonical-target-not-specified",
|
||||
addr: "no.scheme",
|
||||
targetWant: "passthrough:///no.scheme",
|
||||
name: "canonical-target-not-specified",
|
||||
addr: "no.scheme",
|
||||
canonicalTargetWant: "passthrough:///no.scheme",
|
||||
},
|
||||
{
|
||||
name: "canonical-target-nonexistent",
|
||||
addr: "nonexist:///non.existent",
|
||||
targetWant: "passthrough:///nonexist:///non.existent",
|
||||
name: "canonical-target-nonexistent",
|
||||
addr: "nonexist:///non.existent",
|
||||
canonicalTargetWant: "passthrough:///nonexist:///non.existent",
|
||||
},
|
||||
{
|
||||
name: "canonical-target-add-colon-slash",
|
||||
addr: "dns:hostname:port",
|
||||
targetWant: "dns:///hostname:port",
|
||||
name: "canonical-target-add-colon-slash",
|
||||
addr: "dns:hostname:port",
|
||||
canonicalTargetWant: "dns:///hostname:port",
|
||||
},
|
||||
}
|
||||
for _, test := range tests {
|
||||
|
|
@ -842,8 +842,11 @@ func (s) TestClientConn_Target(t *testing.T) {
|
|||
t.Fatalf("Dial(%s, _) = _, %v, want _, <nil>", test.addr, err)
|
||||
}
|
||||
defer cc.Close()
|
||||
if cc.Target() != test.targetWant {
|
||||
t.Fatalf("Target() = %s, want %s", cc.Target(), test.targetWant)
|
||||
if cc.Target() != test.addr {
|
||||
t.Fatalf("Target() = %s, want %s", cc.Target(), test.addr)
|
||||
}
|
||||
if cc.CanonicalTarget() != test.canonicalTargetWant {
|
||||
t.Fatalf("CanonicalTarget() = %s, want %s", cc.CanonicalTarget(), test.canonicalTargetWant)
|
||||
}
|
||||
})
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue