Skip to content

Commit cb9e0d0

Browse files
authored
Merge branch 'main' into poc_config_yaml
2 parents 10f1bc2 + c6d3945 commit cb9e0d0

File tree

109 files changed

+1499
-678
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

109 files changed

+1499
-678
lines changed

.iwyu.imp

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,10 +16,16 @@
1616
{ "include": ["<c4/substr.hpp>", "private", "<ryml.hpp>", "public"] },
1717
{ "include": ["<c4/substr_fwd.hpp>", "private", "<ryml.hpp>", "public"] },
1818

19-
# Local opentelemetry-cpp
19+
# Local opentelemetry-cpp style
2020

21+
# We prefer to include <gtest/gtest.h> for simplicity
2122
{ "include": ["<gtest/gtest-message.h>", "private", "<gtest/gtest.h>", "public"] },
2223
{ "include": ["<gtest/gtest-test-part.h>", "private", "<gtest/gtest.h>", "public"] },
24+
{ "include": ["<gtest/gtest-param-test.h>", "private", "<gtest/gtest.h>", "public"] },
2325
{ "include": ["<gtest/gtest_pred_impl.h>", "private", "<gtest/gtest.h>", "public"] },
26+
27+
# We prefer to include <gmock/gmock.h> for simplicity
28+
{ "include": ["<gmock/gmock-function-mocker.h>", "private", "<gmock/gmock.h>", "public"] },
29+
{ "include": ["<gmock/gmock-spec-builders.h>", "private", "<gmock/gmock.h>", "public"] },
2430
]
2531

CHANGELOG.md

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,9 @@ Increment the:
2121
* [REMOVAL] Remove build option `WITH_DEPRECATED_SDK_FACTORY`
2222
[#2717](https://github.com/open-telemetry/opentelemetry-cpp/pull/2717)
2323

24+
* [EXPORTER] Add in-memory metric exporter
25+
[#3043](https://github.com/open-telemetry/opentelemetry-cpp/pull/3043)
26+
2427
Breaking changes:
2528

2629
* [REMOVAL] Remove build option `WITH_DEPRECATED_SDK_FACTORY`

ci/do_ci.sh

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -507,8 +507,8 @@ elif [[ "$1" == "bazel.noexcept" ]]; then
507507
# there are some exceptions and error handling code from the Prometheus Client
508508
# as well as Opentracing shim (due to some third party code in its Opentracing dependency)
509509
# that make this test always fail. Ignore these packages in the noexcept test here.
510-
bazel $BAZEL_STARTUP_OPTIONS build --copt=-fno-exceptions $BAZEL_OPTIONS_ASYNC -- //... -//exporters/prometheus/... -//examples/prometheus/... -//sdk/test/metrics:attributes_hashmap_test -//opentracing-shim/...
511-
bazel $BAZEL_STARTUP_OPTIONS test --copt=-fno-exceptions $BAZEL_TEST_OPTIONS_ASYNC -- //... -//exporters/prometheus/... -//examples/prometheus/... -//sdk/test/metrics:attributes_hashmap_test -//opentracing-shim/...
510+
bazel $BAZEL_STARTUP_OPTIONS build --copt=-fno-exceptions $BAZEL_OPTIONS_ASYNC -- //... -//exporters/prometheus/... -//examples/prometheus/... -//opentracing-shim/...
511+
bazel $BAZEL_STARTUP_OPTIONS test --copt=-fno-exceptions $BAZEL_TEST_OPTIONS_ASYNC -- //... -//exporters/prometheus/... -//examples/prometheus/... -//opentracing-shim/...
512512
exit 0
513513
elif [[ "$1" == "bazel.nortti" ]]; then
514514
# there are some exceptions and error handling code from the Prometheus Client

examples/logs_simple/main.cc

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -44,18 +44,18 @@ void InitTracer()
4444
auto exporter = trace_exporter::OStreamSpanExporterFactory::Create();
4545
auto processor = trace_sdk::SimpleSpanProcessorFactory::Create(std::move(exporter));
4646

47-
std::shared_ptr<opentelemetry::sdk::trace::TracerProvider> provider =
48-
opentelemetry::sdk::trace::TracerProviderFactory::Create(std::move(processor));
47+
std::shared_ptr<opentelemetry::sdk::trace::TracerProvider> sdk_provider =
48+
trace_sdk::TracerProviderFactory::Create(std::move(processor));
4949

5050
// Set the global trace provider
51-
const std::shared_ptr<trace_api::TracerProvider> &api_provider = provider;
51+
const std::shared_ptr<trace_api::TracerProvider> &api_provider = sdk_provider;
5252
trace_api::Provider::SetTracerProvider(api_provider);
5353
}
5454

5555
void CleanupTracer()
5656
{
57-
std::shared_ptr<trace_api::TracerProvider> none;
58-
trace_api::Provider::SetTracerProvider(none);
57+
std::shared_ptr<trace_api::TracerProvider> noop;
58+
trace_api::Provider::SetTracerProvider(noop);
5959
}
6060

6161
void InitLogger()
@@ -65,18 +65,18 @@ void InitLogger()
6565
std::unique_ptr<logs_sdk::LogRecordExporter>(new logs_exporter::OStreamLogRecordExporter);
6666
auto processor = logs_sdk::SimpleLogRecordProcessorFactory::Create(std::move(exporter));
6767

68-
std::shared_ptr<opentelemetry::sdk::logs::LoggerProvider> provider(
69-
opentelemetry::sdk::logs::LoggerProviderFactory::Create(std::move(processor)));
68+
std::shared_ptr<opentelemetry::sdk::logs::LoggerProvider> sdk_provider(
69+
logs_sdk::LoggerProviderFactory::Create(std::move(processor)));
7070

7171
// Set the global logger provider
72-
const std::shared_ptr<logs_api::LoggerProvider> &api_provider = provider;
72+
const std::shared_ptr<logs_api::LoggerProvider> &api_provider = sdk_provider;
7373
logs_api::Provider::SetLoggerProvider(api_provider);
7474
}
7575

7676
void CleanupLogger()
7777
{
78-
std::shared_ptr<logs_api::LoggerProvider> none;
79-
logs_api::Provider::SetLoggerProvider(none);
78+
std::shared_ptr<logs_api::LoggerProvider> noop;
79+
logs_api::Provider::SetLoggerProvider(noop);
8080
}
8181

8282
} // namespace

examples/otlp/opentelemetry-collector-config/config.dev.yaml

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,8 @@
22
# SPDX-License-Identifier: Apache-2.0
33

44
exporters:
5-
logging:
6-
loglevel: DEBUG
5+
debug:
6+
verbosity: detailed
77
receivers:
88
otlp:
99
protocols:
@@ -17,14 +17,14 @@ service:
1717
receivers:
1818
- otlp
1919
exporters:
20-
- logging
20+
- debug
2121
logs:
2222
receivers:
2323
- otlp
2424
exporters:
25-
- logging
25+
- debug
2626
metrics:
2727
receivers:
2828
- otlp
2929
exporters:
30-
- logging
30+
- debug

examples/simple/main.cc

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -31,18 +31,18 @@ void InitTracer()
3131
auto exporter = trace_exporter::OStreamSpanExporterFactory::Create();
3232
auto processor = trace_sdk::SimpleSpanProcessorFactory::Create(std::move(exporter));
3333

34-
std::shared_ptr<opentelemetry::sdk::trace::TracerProvider> provider =
35-
opentelemetry::sdk::trace::TracerProviderFactory::Create(std::move(processor));
34+
std::shared_ptr<opentelemetry::sdk::trace::TracerProvider> sdk_provider =
35+
trace_sdk::TracerProviderFactory::Create(std::move(processor));
3636

3737
// Set the global trace provider
38-
const std::shared_ptr<opentelemetry::trace::TracerProvider> &api_provider = provider;
38+
const std::shared_ptr<opentelemetry::trace::TracerProvider> &api_provider = sdk_provider;
3939
trace_api::Provider::SetTracerProvider(api_provider);
4040
}
4141

4242
void CleanupTracer()
4343
{
44-
std::shared_ptr<opentelemetry::trace::TracerProvider> none;
45-
trace_api::Provider::SetTracerProvider(none);
44+
std::shared_ptr<opentelemetry::trace::TracerProvider> noop;
45+
trace_api::Provider::SetTracerProvider(noop);
4646
}
4747
} // namespace
4848

exporters/etw/include/opentelemetry/exporters/etw/etw_fields.h

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -113,6 +113,9 @@
113113
# define ETW_FIELD_SPAN_KIND "Kind" /* Span Kind */
114114
# define ETW_FIELD_SPAN_LINKS "Links" /* Span Links array */
115115

116+
# define ETW_FIELD_SPAN_LINKS_TO_SPAN_ID "toSpanId" /* Span Links toSpanId */
117+
# define ETW_FIELD_SPAN_LINKS_TO_TRACE_ID "toTraceId" /* Span Links toTraceId */
118+
116119
# define ETW_FIELD_PAYLOAD_NAME "Name" /* ETW Payload["Name"] */
117120

118121
/* Span option constants */
@@ -136,7 +139,7 @@
136139
/* Log specific */
137140
# define ETW_FIELD_LOG_BODY "body" /* Log body */
138141
# define ETW_FIELD_LOG_SEVERITY_TEXT "severityText" /* Sev text */
139-
# define ETW_FIELD_LOG_SEVERITY_NUM "severityNumber" /* Sev num */
142+
# define ETW_FIELD_LOG_SEVERITY_NUM "severityNumber" /* Sev num */
140143

141144
#endif
142145

exporters/etw/include/opentelemetry/exporters/etw/etw_tracer.h

Lines changed: 28 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -212,19 +212,41 @@ class Tracer : public opentelemetry::trace::Tracer,
212212
// Add `SpanLinks` attribute if the list is not empty
213213
if (links.size())
214214
{
215-
size_t idx = 0;
215+
bool first = true;
216216
std::string linksValue;
217+
218+
// reserve space for all the SpanLinks.
219+
// A single SpanLink will be outptut as:
220+
// [{"toSpanId":"9a43c801557f26b7","toTraceId":"ac6cd70ac4bb168a99cb7651b048d965"}]
221+
// The second and above link output to string are 1 byte less than the first SpanLink.
222+
const size_t kSingleSpanLinkSizeInBytes = 80;
223+
linksValue.reserve(kSingleSpanLinkSizeInBytes +
224+
(links.size() - 1) * (kSingleSpanLinkSizeInBytes - 1));
225+
linksValue += "[";
226+
217227
links.ForEachKeyValue([&](opentelemetry::trace::SpanContext ctx,
218228
const opentelemetry::common::KeyValueIterable &) {
219-
if (!linksValue.empty())
229+
if (first)
230+
{
231+
first = false;
232+
linksValue += "{\"" ETW_FIELD_SPAN_LINKS_TO_SPAN_ID "\":\"";
233+
}
234+
else
220235
{
221-
linksValue += ',';
222-
linksValue += ToLowerBase16(ctx.span_id());
236+
linksValue += ",{\"" ETW_FIELD_SPAN_LINKS_TO_SPAN_ID "\":\"";
223237
}
224-
idx++;
238+
239+
linksValue += ToLowerBase16(ctx.span_id());
240+
linksValue += "\",\"" ETW_FIELD_SPAN_LINKS_TO_TRACE_ID "\":\"";
241+
linksValue += ToLowerBase16(ctx.trace_id());
242+
linksValue += "\"}";
243+
225244
return true;
226245
});
227-
attributes[ETW_FIELD_SPAN_LINKS] = linksValue;
246+
247+
linksValue += "]";
248+
249+
attributes[ETW_FIELD_SPAN_LINKS] = std::move(linksValue);
228250
}
229251
}
230252

exporters/memory/BUILD

Lines changed: 77 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,14 +4,90 @@
44
package(default_visibility = ["//visibility:public"])
55

66
cc_library(
7-
name = "in_memory_span_data",
7+
name = "in_memory_metric_data",
8+
srcs = [
9+
"src/in_memory_metric_data.cc",
10+
],
11+
hdrs = [
12+
"include/opentelemetry/exporters/memory/in_memory_metric_data.h",
13+
],
14+
strip_include_prefix = "include",
15+
tags = [
16+
"memory",
17+
"test",
18+
],
19+
deps = [
20+
":in_memory_data",
21+
"//sdk/src/metrics",
22+
],
23+
)
24+
25+
cc_test(
26+
name = "in_memory_metric_data_test",
27+
srcs = ["test/in_memory_metric_data_test.cc"],
28+
tags = [
29+
"memory",
30+
"test",
31+
],
32+
deps = [
33+
":in_memory_metric_data",
34+
"@com_google_googletest//:gtest_main",
35+
],
36+
)
37+
38+
cc_library(
39+
name = "in_memory_metric_exporter_factory",
40+
srcs = [
41+
"src/in_memory_metric_exporter_factory.cc",
42+
],
43+
hdrs = [
44+
"include/opentelemetry/exporters/memory/in_memory_metric_exporter_factory.h",
45+
],
46+
strip_include_prefix = "include",
47+
tags = [
48+
"memory",
49+
"test",
50+
],
51+
deps = [
52+
":in_memory_metric_data",
53+
"//sdk/src/metrics",
54+
],
55+
)
56+
57+
cc_test(
58+
name = "in_memory_metric_exporter_test",
59+
srcs = ["test/in_memory_metric_exporter_test.cc"],
60+
tags = [
61+
"memory",
62+
"test",
63+
],
64+
deps = [
65+
":in_memory_metric_exporter_factory",
66+
"@com_google_googletest//:gtest_main",
67+
],
68+
)
69+
70+
cc_library(
71+
name = "in_memory_data",
872
hdrs = [
973
"include/opentelemetry/exporters/memory/in_memory_data.h",
74+
],
75+
strip_include_prefix = "include",
76+
tags = ["memory"],
77+
deps = [
78+
"//sdk:headers",
79+
],
80+
)
81+
82+
cc_library(
83+
name = "in_memory_span_data",
84+
hdrs = [
1085
"include/opentelemetry/exporters/memory/in_memory_span_data.h",
1186
],
1287
strip_include_prefix = "include",
1388
tags = ["memory"],
1489
deps = [
90+
":in_memory_data",
1591
"//api",
1692
"//sdk/src/resource",
1793
"//sdk/src/trace",

exporters/memory/CMakeLists.txt

Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,9 +16,26 @@ set_target_version(opentelemetry_exporter_in_memory)
1616
target_link_libraries(opentelemetry_exporter_in_memory
1717
PUBLIC opentelemetry_trace)
1818

19+
add_library(
20+
opentelemetry_exporter_in_memory_metric
21+
src/in_memory_metric_exporter_factory.cc src/in_memory_metric_data.cc)
22+
23+
target_include_directories(
24+
opentelemetry_exporter_in_memory_metric
25+
PUBLIC "$<BUILD_INTERFACE:${CMAKE_CURRENT_LIST_DIR}/include>"
26+
"$<INSTALL_INTERFACE:include>")
27+
28+
set_target_properties(opentelemetry_exporter_in_memory_metric
29+
PROPERTIES EXPORT_NAME in_memory_metric_exporter)
30+
set_target_version(opentelemetry_exporter_in_memory_metric)
31+
32+
target_link_libraries(opentelemetry_exporter_in_memory_metric
33+
PUBLIC opentelemetry_metrics)
34+
1935
if(OPENTELEMETRY_INSTALL)
2036
install(
2137
TARGETS opentelemetry_exporter_in_memory
38+
opentelemetry_exporter_in_memory_metric
2239
EXPORT "${PROJECT_NAME}-target"
2340
RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
2441
LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
@@ -35,16 +52,29 @@ if(BUILD_TESTING)
3552
add_executable(in_memory_span_data_test test/in_memory_span_data_test.cc)
3653
add_executable(in_memory_span_exporter_test
3754
test/in_memory_span_exporter_test.cc)
55+
add_executable(in_memory_metric_data_test test/in_memory_metric_data_test.cc)
56+
add_executable(in_memory_metric_exporter_test
57+
test/in_memory_metric_exporter_test.cc)
3858

3959
target_link_libraries(
4060
in_memory_span_data_test ${GTEST_BOTH_LIBRARIES} ${CMAKE_THREAD_LIBS_INIT}
4161
opentelemetry_exporter_in_memory opentelemetry_resources)
4262

63+
target_link_libraries(
64+
in_memory_metric_data_test ${GTEST_BOTH_LIBRARIES}
65+
${CMAKE_THREAD_LIBS_INIT} opentelemetry_exporter_in_memory_metric
66+
opentelemetry_resources)
67+
4368
target_link_libraries(
4469
in_memory_span_exporter_test ${GTEST_BOTH_LIBRARIES}
4570
${CMAKE_THREAD_LIBS_INIT} opentelemetry_exporter_in_memory
4671
opentelemetry_resources)
4772

73+
target_link_libraries(
74+
in_memory_metric_exporter_test ${GTEST_BOTH_LIBRARIES}
75+
${CMAKE_THREAD_LIBS_INIT} opentelemetry_exporter_in_memory_metric
76+
opentelemetry_resources)
77+
4878
gtest_add_tests(
4979
TARGET in_memory_span_data_test
5080
TEST_PREFIX exporter.
@@ -53,4 +83,12 @@ if(BUILD_TESTING)
5383
TARGET in_memory_span_exporter_test
5484
TEST_PREFIX exporter.
5585
TEST_LIST in_memory_span_exporter_test)
86+
gtest_add_tests(
87+
TARGET in_memory_metric_data_test
88+
TEST_PREFIX exporter.
89+
TEST_LIST in_memory_metric_data_test)
90+
gtest_add_tests(
91+
TARGET in_memory_metric_exporter_test
92+
TEST_PREFIX exporter.
93+
TEST_LIST in_memory_metric_exporter_test)
5694
endif()

0 commit comments

Comments
 (0)