File tree Expand file tree Collapse file tree 3 files changed +33
-9
lines changed Expand file tree Collapse file tree 3 files changed +33
-9
lines changed Original file line number Diff line number Diff line change @@ -46,7 +46,7 @@ testing = ["opentelemetry/testing"]
4646# add ons
4747internal-logs = [" tracing" ]
4848with-schemars = [" schemars" ]
49- with-serde = [" serde" , " hex" ]
49+ with-serde = [" serde" , " hex" , " base64 " ]
5050
5151[dependencies ]
5252tonic = { workspace = true , optional = true , features = [" codegen" , " prost" ] }
@@ -57,6 +57,7 @@ schemars = { version = "0.8", optional = true }
5757serde = { workspace = true , optional = true , features = [" serde_derive" ] }
5858hex = { version = " 0.4.3" , optional = true }
5959tracing = {workspace = true , optional = true } # optional for opentelemetry internal logging
60+ base64 = { version = " 0.22.1" , optional = true }
6061
6162[dev-dependencies ]
6263opentelemetry = { features = [" testing" ], path = " ../opentelemetry" }
Original file line number Diff line number Diff line change @@ -56,6 +56,11 @@ pub(crate) mod serializers {
5656 map. serialize_entry ( "intValue" , & i. to_string ( ) ) ;
5757 map. end ( )
5858 }
59+ Some ( Value :: BytesValue ( b) ) => {
60+ let mut map = serializer. serialize_map ( Some ( 1 ) ) ?;
61+ map. serialize_entry ( "bytesValue" , & base64:: encode ( b) ) ;
62+ map. end ( )
63+ }
5964 Some ( value) => value. serialize ( serializer) ,
6065 None => serializer. serialize_none ( ) ,
6166 }
@@ -127,8 +132,10 @@ pub(crate) mod serializers {
127132 value = Some ( any_value:: Value :: KvlistValue ( kv) ) ;
128133 }
129134 "bytesValue" => {
130- let bytes = map. next_value ( ) ?;
131- value = Some ( any_value:: Value :: BytesValue ( bytes) ) ;
135+ let base64: String = map. next_value ( ) ?;
136+ let decoded = base64:: decode ( base64. as_bytes ( ) )
137+ . map_err ( |e| de:: Error :: custom ( e) ) ?;
138+ value = Some ( any_value:: Value :: BytesValue ( decoded) ) ;
132139 }
133140 _ => {
134141 //skip unknown keys, and handle error later.
Original file line number Diff line number Diff line change @@ -274,12 +274,22 @@ mod json_serde {
274274 kind: 2 ,
275275 start_time_unix_nano: 1544712660000000000 ,
276276 end_time_unix_nano: 1544712661000000000 ,
277- attributes: vec![ KeyValue {
278- key: String :: from( "my.span.attr" ) ,
279- value: Some ( AnyValue {
280- value: Some ( Value :: StringValue ( String :: from( "some value" ) ) ) ,
281- } ) ,
282- } ] ,
277+ attributes: vec![
278+ KeyValue {
279+ key: String :: from( "my.span.attr" ) ,
280+ value: Some ( AnyValue {
281+ value: Some ( Value :: StringValue ( String :: from(
282+ "some value" ,
283+ ) ) ) ,
284+ } ) ,
285+ } ,
286+ KeyValue {
287+ key: String :: from( "my.span.bytes.attr" ) ,
288+ value: Some ( AnyValue {
289+ value: Some ( Value :: BytesValue ( vec![ 0x80 , 0x80 , 0x80 ] ) ) ,
290+ } ) ,
291+ } ,
292+ ] ,
283293 dropped_attributes_count: 1 ,
284294 events: vec![ Event {
285295 time_unix_nano: 1544712660500000000 ,
@@ -369,6 +379,12 @@ mod json_serde {
369379 "value": {
370380 "stringValue": "some value"
371381 }
382+ },
383+ {
384+ "key": "my.span.bytes.attr",
385+ "value": {
386+ "bytesValue": "gICA"
387+ }
372388 }
373389 ],
374390 "droppedAttributesCount": 1,
You can’t perform that action at this time.
0 commit comments