From 7621679beee3d4ddf47411574f9fa48a1f759dbf Mon Sep 17 00:00:00 2001
From: Piotr Kowalczuk
Date: Fri, 31 Jan 2020 12:34:44 -0600
Subject: [PATCH] stats: add client side user agent to outgoing header (#3331)
---
internal/transport/http2_client.go | 5 +++--
stats/stats_test.go | 11 ++++++++---
2 files changed, 11 insertions(+), 5 deletions(-)
diff --git a/internal/transport/http2_client.go b/internal/transport/http2_client.go
index 2d6feeb1..6043701e 100644
--- a/internal/transport/http2_client.go
+++ b/internal/transport/http2_client.go
@@ -680,14 +680,15 @@ func (t *http2Client) NewStream(ctx context.Context, callHdr *CallHdr) (_ *Strea
}
}
if t.statsHandler != nil {
- header, _, _ := metadata.FromOutgoingContextRaw(ctx)
+ header, _ := metadata.FromOutgoingContext(ctx)
+ header.Set("user-agent", t.userAgent)
outHeader := &stats.OutHeader{
Client: true,
FullMethod: callHdr.Method,
RemoteAddr: t.remoteAddr,
LocalAddr: t.localAddr,
Compression: callHdr.SendCompress,
- Header: header.Copy(),
+ Header: header,
}
t.statsHandler.HandleRPC(s.ctx, outHeader)
}
diff --git a/stats/stats_test.go b/stats/stats_test.go
index 30248c05..1b83fe63 100644
--- a/stats/stats_test.go
+++ b/stats/stats_test.go
@@ -46,8 +46,9 @@ type rpcCtxKey struct{}
var (
// For headers sent to server:
testMetadata = metadata.MD{
- "key1": []string{"value1"},
- "key2": []string{"value2"},
+ "key1": []string{"value1"},
+ "key2": []string{"value2"},
+ "user-agent": []string{fmt.Sprintf("test/0.0.1 grpc-go/%s", grpc.Version)},
}
// For headers sent from server:
testHeaderMetadata = metadata.MD{
@@ -220,7 +221,11 @@ func (te *test) clientConn() *grpc.ClientConn {
if te.cc != nil {
return te.cc
}
- opts := []grpc.DialOption{grpc.WithInsecure(), grpc.WithBlock()}
+ opts := []grpc.DialOption{
+ grpc.WithInsecure(),
+ grpc.WithBlock(),
+ grpc.WithUserAgent("test/0.0.1"),
+ }
if te.compress == "gzip" {
opts = append(opts,
grpc.WithCompressor(grpc.NewGZIPCompressor()),