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

Method TestSubChannelMetrics

stats/opentelemetry/e2e_test.go:1941–2079  ·  view source on GitHub ↗

TestSubChannelMetrics tests subchannel metrics emitted during connection lifecycle events (connect, disconnect, failure).

(t *testing.T)

Source from the content-addressed store, hash-verified

1939// TestSubChannelMetrics tests subchannel metrics emitted during connection
1940// lifecycle events (connect, disconnect, failure).
1941func (s) TestSubChannelMetrics(t *testing.T) {
1942 // Start a single backend server.
1943 backend := stubserver.StartTestService(t, nil)
1944 port := itestutils.ParsePort(t, backend.Address)
1945 defer backend.Stop()
1946
1947 // Configure xDS for that single backend.
1948 managementServer, nodeID, _, xdsResolver := setup.ManagementServerAndResolver(t)
1949
1950 const serviceName = "my-service-client-side-xds"
1951 clusterName := "cluster-" + serviceName
1952 resources := e2e.DefaultClientResources(e2e.ResourceParams{
1953 DialTarget: serviceName,
1954 NodeID: nodeID,
1955 Host: "localhost",
1956 Port: port,
1957 SecLevel: e2e.SecurityLevelNone,
1958 })
1959
1960 ctx, cancel := context.WithTimeout(context.Background(), defaultTestTimeout)
1961 defer cancel()
1962 if err := managementServer.Update(ctx, resources); err != nil {
1963 t.Fatal(err)
1964 }
1965
1966 // Setup Telemetry.
1967 reader := metric.NewManualReader()
1968 provider := metric.NewMeterProvider(metric.WithReader(reader))
1969 mo := opentelemetry.MetricsOptions{
1970 MeterProvider: provider,
1971 Metrics: opentelemetry.DefaultMetrics().Add(
1972 "grpc.subchannel.connection_attempts_succeeded",
1973 "grpc.subchannel.open_connections",
1974 "grpc.subchannel.disconnections",
1975 "grpc.subchannel.connection_attempts_failed",
1976 ),
1977 OptionalLabels: []string{
1978 "grpc.lb.locality",
1979 "grpc.lb.backend_service",
1980 "grpc.security_level",
1981 "grpc.disconnect_error",
1982 },
1983 }
1984
1985 target := fmt.Sprintf("xds:///%s", serviceName)
1986 cc, err := grpc.NewClient(target, grpc.WithTransportCredentials(insecure.NewCredentials()), grpc.WithResolvers(xdsResolver), opentelemetry.DialOption(opentelemetry.Options{MetricsOptions: mo}))
1987 if err != nil {
1988 t.Fatalf("Failed to create client: %v", err)
1989 }
1990 defer cc.Close()
1991 client := testgrpc.NewTestServiceClient(cc)
1992
1993 if _, err := client.EmptyCall(ctx, &testpb.Empty{}); err != nil {
1994 t.Fatalf("rpc failed: %v", err)
1995 }
1996
1997 targetAttr := attribute.String("grpc.target", target)
1998 localityAttr := attribute.String("grpc.lb.locality", `{region="region-1", zone="zone-1", sub_zone="subzone-1"}`)

Callers

nothing calls this directly

Calls 15

EmptyCallMethod · 0.95
StartTestServiceFunction · 0.92
DefaultClientResourcesFunction · 0.92
DefaultMetricsFunction · 0.92
NewClientFunction · 0.92
WithTransportCredentialsFunction · 0.92
NewCredentialsFunction · 0.92
WithResolversFunction · 0.92
DialOptionFunction · 0.92
pollForWantMetricsFunction · 0.85
StopMethod · 0.65

Tested by

no test coverage detected