@@ -1042,3 +1042,50 @@ func TestSendProfilesWhenEndpointHasHttpScheme(t *testing.T) {
10421042 })
10431043 }
10441044}
1045+
1046+ func TestUserAgentHeader_OverriddenByConfig (t * testing.T ) {
1047+ // Start an OTLP-compatible receiver.
1048+ ln , err := net .Listen ("tcp" , "localhost:" )
1049+ require .NoError (t , err , "Failed to find an available address to run the gRPC server: %v" , err )
1050+ rcv := otlpMetricsReceiverOnGRPCServer (ln )
1051+ defer rcv .srv .GracefulStop ()
1052+
1053+ // Start an OTLP exporter with a custom User-Agent header.
1054+ factory := NewFactory ()
1055+ cfg := factory .CreateDefaultConfig ().(* Config )
1056+ cfg .QueueConfig = configoptional .None [exporterhelper.QueueBatchConfig ]()
1057+ cfg .ClientConfig = configgrpc.ClientConfig {
1058+ Endpoint : ln .Addr ().String (),
1059+ TLS : configtls.ClientConfig {
1060+ Insecure : true ,
1061+ },
1062+ Headers : configopaque.MapList {
1063+ {Name : "User-Agent" , Value : "My Distribution For The Collector" },
1064+ },
1065+ }
1066+ set := exportertest .NewNopSettings (factory .Type ())
1067+ set .BuildInfo .Description = "Collector"
1068+ set .BuildInfo .Version = "1.2.3test"
1069+
1070+ exp , err := factory .CreateMetrics (context .Background (), set , cfg )
1071+ require .NoError (t , err )
1072+ require .NotNil (t , exp )
1073+ defer func () {
1074+ assert .NoError (t , exp .Shutdown (context .Background ()))
1075+ }()
1076+
1077+ require .NoError (t , exp .Start (context .Background (), componenttest .NewNopHost ()))
1078+
1079+ // Send a metric to trigger an RPC.
1080+ require .NoError (t , exp .ConsumeMetrics (context .Background (), pmetric .NewMetrics ()))
1081+
1082+ assert .Eventually (t , func () bool {
1083+ return rcv .requestCount .Load () > 0
1084+ }, 10 * time .Second , 5 * time .Millisecond )
1085+
1086+ md := rcv .getMetadata ()
1087+ require .Len (t , md .Get ("User-Agent" ), 1 )
1088+ // User-configured value must win over the builtin BuildInfo agent.
1089+ require .Contains (t , md .Get ("User-Agent" )[0 ], "My Distribution For The Collector" )
1090+ require .NotContains (t , md .Get ("User-Agent" )[0 ], "Collector/1.2.3test" )
1091+ }
0 commit comments