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

Method TestTelemetryLabels

test/xds/xds_telemetry_labels_test.go:57–103  ·  view source on GitHub ↗

TestTelemetryLabels tests that telemetry labels from CDS make their way to the stats handler. The stats handler sets the mutable context value that the cluster impl picker will write telemetry labels to, and then the stats handler asserts that subsequent HandleRPC calls from the RPC lifecycle contai

(t *testing.T)

Source from the content-addressed store, hash-verified

55// handler asserts that subsequent HandleRPC calls from the RPC lifecycle
56// contain telemetry labels that it can see.
57func (s) TestTelemetryLabels(t *testing.T) {
58 managementServer, nodeID, _, xdsResolver := setup.ManagementServerAndResolver(t)
59
60 server := stubserver.StartTestService(t, nil)
61 defer server.Stop()
62
63 const xdsServiceName = "my-service-client-side-xds"
64 resources := e2e.DefaultClientResources(e2e.ResourceParams{
65 DialTarget: xdsServiceName,
66 NodeID: nodeID,
67 Host: "localhost",
68 Port: testutils.ParsePort(t, server.Address),
69 SecLevel: e2e.SecurityLevelNone,
70 })
71
72 resources.Clusters[0].Metadata = &v3corepb.Metadata{
73 FilterMetadata: map[string]*structpb.Struct{
74 "com.google.csm.telemetry_labels": {
75 Fields: map[string]*structpb.Value{
76 serviceNameKey: structpb.NewStringValue(serviceNameValue),
77 serviceNamespaceKey: structpb.NewStringValue(serviceNamespaceValue),
78 },
79 },
80 },
81 }
82
83 ctx, cancel := context.WithTimeout(context.Background(), defaultTestTimeout)
84 defer cancel()
85 if err := managementServer.Update(ctx, resources); err != nil {
86 t.Fatal(err)
87 }
88
89 fsh := &fakeStatsHandler{
90 t: t,
91 }
92
93 cc, err := grpc.NewClient(fmt.Sprintf("xds:///%s", xdsServiceName), grpc.WithTransportCredentials(insecure.NewCredentials()), grpc.WithResolvers(xdsResolver), grpc.WithStatsHandler(fsh))
94 if err != nil {
95 t.Fatalf("failed to create a new client to local test server: %v", err)
96 }
97 defer cc.Close()
98
99 client := testgrpc.NewTestServiceClient(cc)
100 if _, err := client.EmptyCall(ctx, &testpb.Empty{}, grpc.WaitForReady(true)); err != nil {
101 t.Fatalf("rpc EmptyCall() failed: %v", err)
102 }
103}
104
105type fakeStatsHandler struct {
106 labels map[string]string

Callers

nothing calls this directly

Calls 15

EmptyCallMethod · 0.95
StartTestServiceFunction · 0.92
DefaultClientResourcesFunction · 0.92
ParsePortFunction · 0.92
NewClientFunction · 0.92
WithTransportCredentialsFunction · 0.92
NewCredentialsFunction · 0.92
WithResolversFunction · 0.92
WithStatsHandlerFunction · 0.92
WaitForReadyFunction · 0.92
StopMethod · 0.65

Tested by

no test coverage detected