1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
|
#include <opentracing/mocktracer/in_memory_recorder.h>
#include <opentracing/mocktracer/json.h>
#include <opentracing/mocktracer/tracer.h>
#include <algorithm>
#include <cctype>
#define CATCH_CONFIG_MAIN
#include <opentracing/catch2/catch.hpp>
using namespace opentracing;
using namespace mocktracer;
TEST_CASE("json") {
auto recorder = new InMemoryRecorder{};
MockTracerOptions tracer_options;
tracer_options.recorder.reset(recorder);
auto tracer = std::shared_ptr<opentracing::Tracer>{
new MockTracer{std::move(tracer_options)}};
SpanContextData span_context_data;
span_context_data.trace_id = 123;
span_context_data.span_id = 456;
span_context_data.baggage = {{"b1", "v1"}, {"b2", "v2"}};
SpanData span_data;
span_data.span_context = span_context_data;
span_data.references = {{SpanReferenceType::ChildOfRef, 123, 457}};
span_data.operation_name = "o1";
span_data.start_timestamp =
std::chrono::system_clock::time_point{} + std::chrono::hours{51};
span_data.duration = std::chrono::microseconds{92};
span_data.tags = {{"t1", 123}, {"t2", "cat"}};
span_data.logs = {{span_data.start_timestamp, {{"l1", 1}, {"l2", 1.5}}}};
std::ostringstream oss;
ToJson(oss, {span_data});
std::string expected_serialization = R"(
[{
"span_context": {
"trace_id": "000000000000007b",
"span_id": "00000000000001c8",
"baggage": {
"b1": "v1",
"b2": "v2"
}
},
"references": [{
"reference_type": "CHILD_OF",
"trace_id": "000000000000007b",
"span_id": "00000000000001c9"
}],
"operation_name": "o1",
"start_timestamp": 183600000000,
"duration": 92,
"tags": {
"t1": 123,
"t2": "cat"
},
"logs": [{
"timestamp": 183600000000,
"fields": [{
"key": "l1",
"value": 1
}, {
"key": "l2",
"value": 1.5
}]
}]
}])";
expected_serialization.erase(
std::remove_if(expected_serialization.begin(),
expected_serialization.end(),
[](char c) { return std::isspace(c); }),
expected_serialization.end());
CHECK(oss.str() == expected_serialization);
}
|