Skip to content

Commit bfbd517

Browse files
committed
test serde for i64
1 parent f1cdaca commit bfbd517

File tree

4 files changed

+159
-2
lines changed

4 files changed

+159
-2
lines changed
Lines changed: 135 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,135 @@
1+
{
2+
"resourceSpans": [
3+
{
4+
"resource": {
5+
"attributes": [
6+
{
7+
"key": "service.name",
8+
"value": {
9+
"stringValue": "basic-otlp-tracing-example"
10+
}
11+
}
12+
],
13+
"droppedAttributesCount": 0
14+
},
15+
"scopeSpans": [
16+
{
17+
"scope": {
18+
"name": "ex.com/basic",
19+
"version": "",
20+
"attributes": [],
21+
"droppedAttributesCount": 0
22+
},
23+
"spans": [
24+
{
25+
"traceId": "9b458af7378cba65253d7042d34fc72e",
26+
"spanId": "cd7cf7bf939930b7",
27+
"traceState": "",
28+
"parentSpanId": "d58cf2d702a061e0",
29+
"flags": 0,
30+
"name": "Sub operation...",
31+
"kind": 1,
32+
"startTimeUnixNano": "1703985537070566698",
33+
"endTimeUnixNano": "1703985537070572718",
34+
"attributes": [
35+
{
36+
"key": "lemons",
37+
"value": {
38+
"stringValue": "five"
39+
}
40+
}
41+
],
42+
"droppedAttributesCount": 0,
43+
"events": [
44+
{
45+
"timeUnixNano": "1703985537070567697",
46+
"name": "Sub span event",
47+
"attributes": [],
48+
"droppedAttributesCount": 0
49+
}
50+
],
51+
"droppedEventsCount": 0,
52+
"links": [],
53+
"droppedLinksCount": 0,
54+
"status": {
55+
"message": "",
56+
"code": 0
57+
}
58+
}
59+
],
60+
"schemaUrl": ""
61+
}
62+
],
63+
"schemaUrl": ""
64+
},
65+
{
66+
"resource": {
67+
"attributes": [
68+
{
69+
"key": "service.name",
70+
"value": {
71+
"stringValue": "basic-otlp-tracing-example"
72+
}
73+
}
74+
],
75+
"droppedAttributesCount": 0
76+
},
77+
"scopeSpans": [
78+
{
79+
"scope": {
80+
"name": "ex.com/basic",
81+
"version": "",
82+
"attributes": [],
83+
"droppedAttributesCount": 0
84+
},
85+
"spans": [
86+
{
87+
"traceId": "9b458af7378cba65253d7042d34fc72e",
88+
"spanId": "d58cf2d702a061e0",
89+
"traceState": "",
90+
"parentSpanId": "",
91+
"flags": 0,
92+
"name": "operation",
93+
"kind": 1,
94+
"startTimeUnixNano": "1703985537070558635",
95+
"endTimeUnixNano": "1703985537070580454",
96+
"attributes": [
97+
{
98+
"key": "ex.com/another",
99+
"value": {
100+
"stringValue": "yes"
101+
}
102+
}
103+
],
104+
"droppedAttributesCount": 0,
105+
"events": [
106+
{
107+
"timeUnixNano": "1703985537070563326",
108+
"name": "Nice operation!",
109+
"attributes": [
110+
{
111+
"key": "bogons",
112+
"value": {
113+
"intValue": "100"
114+
}
115+
}
116+
],
117+
"droppedAttributesCount": 0
118+
}
119+
],
120+
"droppedEventsCount": 0,
121+
"links": [],
122+
"droppedLinksCount": 0,
123+
"status": {
124+
"message": "",
125+
"code": 0
126+
}
127+
}
128+
],
129+
"schemaUrl": ""
130+
}
131+
],
132+
"schemaUrl": ""
133+
}
134+
]
135+
}

opentelemetry-otlp/tests/integration_test/src/trace_asserter.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -216,6 +216,6 @@ fn span_eq(left: &Span, right: &Span) -> bool {
216216
pub fn read_spans_from_json(file: File) -> Vec<ResourceSpans> {
217217
let reader = std::io::BufReader::new(file);
218218

219-
let trace_data: TracesData = serde_json::from_reader(reader).unwrap();
219+
let trace_data: TracesData = serde_json::from_reader(reader).expect("Failed to read json file");
220220
trace_data.resource_spans
221221
}

opentelemetry-otlp/tests/integration_test/tests/traces.rs

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,9 +8,11 @@ use opentelemetry::{
88
trace::{TraceContextExt, Tracer},
99
Key, KeyValue,
1010
};
11+
use opentelemetry_proto::tonic::trace::v1::TracesData;
1112
use opentelemetry_sdk::{runtime, trace as sdktrace, Resource};
1213
use std::error::Error;
1314
use std::fs::File;
15+
use std::io::Write;
1416
use std::os::unix::fs::MetadataExt;
1517

1618
fn init_tracer_provider() -> Result<sdktrace::TracerProvider, TraceError> {
@@ -83,3 +85,18 @@ pub fn test_assert_span_eq() {
8385

8486
TraceAsserter::new(spans.clone(), spans).assert();
8587
}
88+
89+
#[test]
90+
pub fn test_serde() {
91+
let spans = read_spans_from_json(File::open("./expected/traces.json").expect("Failed to read traces.json"));
92+
let json = serde_json::to_string_pretty(&TracesData { resource_spans: spans }).expect("Failed to serialize spans to json");
93+
94+
// Write to file.
95+
let mut file = File::create("./expected/serialized_traces.json").unwrap();
96+
file.write_all(json.as_bytes()).unwrap();
97+
98+
let left = read_spans_from_json(File::open("./expected/traces.json").expect("Failed to read traces.json"));
99+
let right = read_spans_from_json(File::open("./expected/serialized_traces.json").expect("Failed to read serialized_traces.json"));
100+
101+
TraceAsserter::new(left, right).assert();
102+
}

opentelemetry-proto/src/proto.rs

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -53,7 +53,12 @@ pub(crate) mod serializers {
5353
// If value is None, it will be serialized as such
5454
match value {
5555
Some(any_value) => match &any_value.value {
56-
Some(Value::IntValue(i)) => serialize_i64_to_string(i, serializer),
56+
Some(Value::IntValue(i)) => {
57+
// Create a struct to wrap the intValue
58+
let mut state = serializer.serialize_struct("Value", 1)?;
59+
state.serialize_field("intValue", &i.to_string())?;
60+
state.end()
61+
},
5762
Some(value) => value.serialize(serializer),
5863
None => serializer.serialize_none(),
5964
},

0 commit comments

Comments
 (0)