Skip to content

Commit

Permalink
Merge branch 'main' into poc_config_yaml
Browse files Browse the repository at this point in the history
  • Loading branch information
marcalff authored Sep 14, 2024
2 parents 10f1bc2 + c6d3945 commit cb9e0d0
Show file tree
Hide file tree
Showing 109 changed files with 1,499 additions and 678 deletions.
8 changes: 7 additions & 1 deletion .iwyu.imp
Original file line number Diff line number Diff line change
Expand Up @@ -16,10 +16,16 @@
{ "include": ["<c4/substr.hpp>", "private", "<ryml.hpp>", "public"] },
{ "include": ["<c4/substr_fwd.hpp>", "private", "<ryml.hpp>", "public"] },

# Local opentelemetry-cpp
# Local opentelemetry-cpp style

# We prefer to include <gtest/gtest.h> for simplicity
{ "include": ["<gtest/gtest-message.h>", "private", "<gtest/gtest.h>", "public"] },
{ "include": ["<gtest/gtest-test-part.h>", "private", "<gtest/gtest.h>", "public"] },
{ "include": ["<gtest/gtest-param-test.h>", "private", "<gtest/gtest.h>", "public"] },
{ "include": ["<gtest/gtest_pred_impl.h>", "private", "<gtest/gtest.h>", "public"] },

# We prefer to include <gmock/gmock.h> for simplicity
{ "include": ["<gmock/gmock-function-mocker.h>", "private", "<gmock/gmock.h>", "public"] },
{ "include": ["<gmock/gmock-spec-builders.h>", "private", "<gmock/gmock.h>", "public"] },
]

3 changes: 3 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,9 @@ Increment the:
* [REMOVAL] Remove build option `WITH_DEPRECATED_SDK_FACTORY`
[#2717](https://github.com/open-telemetry/opentelemetry-cpp/pull/2717)

* [EXPORTER] Add in-memory metric exporter
[#3043](https://github.com/open-telemetry/opentelemetry-cpp/pull/3043)

Breaking changes:

* [REMOVAL] Remove build option `WITH_DEPRECATED_SDK_FACTORY`
Expand Down
4 changes: 2 additions & 2 deletions ci/do_ci.sh
Original file line number Diff line number Diff line change
Expand Up @@ -507,8 +507,8 @@ elif [[ "$1" == "bazel.noexcept" ]]; then
# there are some exceptions and error handling code from the Prometheus Client
# as well as Opentracing shim (due to some third party code in its Opentracing dependency)
# that make this test always fail. Ignore these packages in the noexcept test here.
bazel $BAZEL_STARTUP_OPTIONS build --copt=-fno-exceptions $BAZEL_OPTIONS_ASYNC -- //... -//exporters/prometheus/... -//examples/prometheus/... -//sdk/test/metrics:attributes_hashmap_test -//opentracing-shim/...
bazel $BAZEL_STARTUP_OPTIONS test --copt=-fno-exceptions $BAZEL_TEST_OPTIONS_ASYNC -- //... -//exporters/prometheus/... -//examples/prometheus/... -//sdk/test/metrics:attributes_hashmap_test -//opentracing-shim/...
bazel $BAZEL_STARTUP_OPTIONS build --copt=-fno-exceptions $BAZEL_OPTIONS_ASYNC -- //... -//exporters/prometheus/... -//examples/prometheus/... -//opentracing-shim/...
bazel $BAZEL_STARTUP_OPTIONS test --copt=-fno-exceptions $BAZEL_TEST_OPTIONS_ASYNC -- //... -//exporters/prometheus/... -//examples/prometheus/... -//opentracing-shim/...
exit 0
elif [[ "$1" == "bazel.nortti" ]]; then
# there are some exceptions and error handling code from the Prometheus Client
Expand Down
20 changes: 10 additions & 10 deletions examples/logs_simple/main.cc
Original file line number Diff line number Diff line change
Expand Up @@ -44,18 +44,18 @@ void InitTracer()
auto exporter = trace_exporter::OStreamSpanExporterFactory::Create();
auto processor = trace_sdk::SimpleSpanProcessorFactory::Create(std::move(exporter));

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

// Set the global trace provider
const std::shared_ptr<trace_api::TracerProvider> &api_provider = provider;
const std::shared_ptr<trace_api::TracerProvider> &api_provider = sdk_provider;
trace_api::Provider::SetTracerProvider(api_provider);
}

void CleanupTracer()
{
std::shared_ptr<trace_api::TracerProvider> none;
trace_api::Provider::SetTracerProvider(none);
std::shared_ptr<trace_api::TracerProvider> noop;
trace_api::Provider::SetTracerProvider(noop);
}

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

std::shared_ptr<opentelemetry::sdk::logs::LoggerProvider> provider(
opentelemetry::sdk::logs::LoggerProviderFactory::Create(std::move(processor)));
std::shared_ptr<opentelemetry::sdk::logs::LoggerProvider> sdk_provider(
logs_sdk::LoggerProviderFactory::Create(std::move(processor)));

// Set the global logger provider
const std::shared_ptr<logs_api::LoggerProvider> &api_provider = provider;
const std::shared_ptr<logs_api::LoggerProvider> &api_provider = sdk_provider;
logs_api::Provider::SetLoggerProvider(api_provider);
}

void CleanupLogger()
{
std::shared_ptr<logs_api::LoggerProvider> none;
logs_api::Provider::SetLoggerProvider(none);
std::shared_ptr<logs_api::LoggerProvider> noop;
logs_api::Provider::SetLoggerProvider(noop);
}

} // namespace
Expand Down
10 changes: 5 additions & 5 deletions examples/otlp/opentelemetry-collector-config/config.dev.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,8 @@
# SPDX-License-Identifier: Apache-2.0

exporters:
logging:
loglevel: DEBUG
debug:
verbosity: detailed
receivers:
otlp:
protocols:
Expand All @@ -17,14 +17,14 @@ service:
receivers:
- otlp
exporters:
- logging
- debug
logs:
receivers:
- otlp
exporters:
- logging
- debug
metrics:
receivers:
- otlp
exporters:
- logging
- debug
10 changes: 5 additions & 5 deletions examples/simple/main.cc
Original file line number Diff line number Diff line change
Expand Up @@ -31,18 +31,18 @@ void InitTracer()
auto exporter = trace_exporter::OStreamSpanExporterFactory::Create();
auto processor = trace_sdk::SimpleSpanProcessorFactory::Create(std::move(exporter));

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

// Set the global trace provider
const std::shared_ptr<opentelemetry::trace::TracerProvider> &api_provider = provider;
const std::shared_ptr<opentelemetry::trace::TracerProvider> &api_provider = sdk_provider;
trace_api::Provider::SetTracerProvider(api_provider);
}

void CleanupTracer()
{
std::shared_ptr<opentelemetry::trace::TracerProvider> none;
trace_api::Provider::SetTracerProvider(none);
std::shared_ptr<opentelemetry::trace::TracerProvider> noop;
trace_api::Provider::SetTracerProvider(noop);
}
} // namespace

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -113,6 +113,9 @@
# define ETW_FIELD_SPAN_KIND "Kind" /* Span Kind */
# define ETW_FIELD_SPAN_LINKS "Links" /* Span Links array */

# define ETW_FIELD_SPAN_LINKS_TO_SPAN_ID "toSpanId" /* Span Links toSpanId */
# define ETW_FIELD_SPAN_LINKS_TO_TRACE_ID "toTraceId" /* Span Links toTraceId */

# define ETW_FIELD_PAYLOAD_NAME "Name" /* ETW Payload["Name"] */

/* Span option constants */
Expand All @@ -136,7 +139,7 @@
/* Log specific */
# define ETW_FIELD_LOG_BODY "body" /* Log body */
# define ETW_FIELD_LOG_SEVERITY_TEXT "severityText" /* Sev text */
# define ETW_FIELD_LOG_SEVERITY_NUM "severityNumber" /* Sev num */
# define ETW_FIELD_LOG_SEVERITY_NUM "severityNumber" /* Sev num */

#endif

Expand Down
34 changes: 28 additions & 6 deletions exporters/etw/include/opentelemetry/exporters/etw/etw_tracer.h
Original file line number Diff line number Diff line change
Expand Up @@ -212,19 +212,41 @@ class Tracer : public opentelemetry::trace::Tracer,
// Add `SpanLinks` attribute if the list is not empty
if (links.size())
{
size_t idx = 0;
bool first = true;
std::string linksValue;

// reserve space for all the SpanLinks.
// A single SpanLink will be outptut as:
// [{"toSpanId":"9a43c801557f26b7","toTraceId":"ac6cd70ac4bb168a99cb7651b048d965"}]
// The second and above link output to string are 1 byte less than the first SpanLink.
const size_t kSingleSpanLinkSizeInBytes = 80;
linksValue.reserve(kSingleSpanLinkSizeInBytes +
(links.size() - 1) * (kSingleSpanLinkSizeInBytes - 1));
linksValue += "[";

links.ForEachKeyValue([&](opentelemetry::trace::SpanContext ctx,
const opentelemetry::common::KeyValueIterable &) {
if (!linksValue.empty())
if (first)
{
first = false;
linksValue += "{\"" ETW_FIELD_SPAN_LINKS_TO_SPAN_ID "\":\"";
}
else
{
linksValue += ',';
linksValue += ToLowerBase16(ctx.span_id());
linksValue += ",{\"" ETW_FIELD_SPAN_LINKS_TO_SPAN_ID "\":\"";
}
idx++;

linksValue += ToLowerBase16(ctx.span_id());
linksValue += "\",\"" ETW_FIELD_SPAN_LINKS_TO_TRACE_ID "\":\"";
linksValue += ToLowerBase16(ctx.trace_id());
linksValue += "\"}";

return true;
});
attributes[ETW_FIELD_SPAN_LINKS] = linksValue;

linksValue += "]";

attributes[ETW_FIELD_SPAN_LINKS] = std::move(linksValue);
}
}

Expand Down
78 changes: 77 additions & 1 deletion exporters/memory/BUILD
Original file line number Diff line number Diff line change
Expand Up @@ -4,14 +4,90 @@
package(default_visibility = ["//visibility:public"])

cc_library(
name = "in_memory_span_data",
name = "in_memory_metric_data",
srcs = [
"src/in_memory_metric_data.cc",
],
hdrs = [
"include/opentelemetry/exporters/memory/in_memory_metric_data.h",
],
strip_include_prefix = "include",
tags = [
"memory",
"test",
],
deps = [
":in_memory_data",
"//sdk/src/metrics",
],
)

cc_test(
name = "in_memory_metric_data_test",
srcs = ["test/in_memory_metric_data_test.cc"],
tags = [
"memory",
"test",
],
deps = [
":in_memory_metric_data",
"@com_google_googletest//:gtest_main",
],
)

cc_library(
name = "in_memory_metric_exporter_factory",
srcs = [
"src/in_memory_metric_exporter_factory.cc",
],
hdrs = [
"include/opentelemetry/exporters/memory/in_memory_metric_exporter_factory.h",
],
strip_include_prefix = "include",
tags = [
"memory",
"test",
],
deps = [
":in_memory_metric_data",
"//sdk/src/metrics",
],
)

cc_test(
name = "in_memory_metric_exporter_test",
srcs = ["test/in_memory_metric_exporter_test.cc"],
tags = [
"memory",
"test",
],
deps = [
":in_memory_metric_exporter_factory",
"@com_google_googletest//:gtest_main",
],
)

cc_library(
name = "in_memory_data",
hdrs = [
"include/opentelemetry/exporters/memory/in_memory_data.h",
],
strip_include_prefix = "include",
tags = ["memory"],
deps = [
"//sdk:headers",
],
)

cc_library(
name = "in_memory_span_data",
hdrs = [
"include/opentelemetry/exporters/memory/in_memory_span_data.h",
],
strip_include_prefix = "include",
tags = ["memory"],
deps = [
":in_memory_data",
"//api",
"//sdk/src/resource",
"//sdk/src/trace",
Expand Down
38 changes: 38 additions & 0 deletions exporters/memory/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -16,9 +16,26 @@ set_target_version(opentelemetry_exporter_in_memory)
target_link_libraries(opentelemetry_exporter_in_memory
PUBLIC opentelemetry_trace)

add_library(
opentelemetry_exporter_in_memory_metric
src/in_memory_metric_exporter_factory.cc src/in_memory_metric_data.cc)

target_include_directories(
opentelemetry_exporter_in_memory_metric
PUBLIC "$<BUILD_INTERFACE:${CMAKE_CURRENT_LIST_DIR}/include>"
"$<INSTALL_INTERFACE:include>")

set_target_properties(opentelemetry_exporter_in_memory_metric
PROPERTIES EXPORT_NAME in_memory_metric_exporter)
set_target_version(opentelemetry_exporter_in_memory_metric)

target_link_libraries(opentelemetry_exporter_in_memory_metric
PUBLIC opentelemetry_metrics)

if(OPENTELEMETRY_INSTALL)
install(
TARGETS opentelemetry_exporter_in_memory
opentelemetry_exporter_in_memory_metric
EXPORT "${PROJECT_NAME}-target"
RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
Expand All @@ -35,16 +52,29 @@ if(BUILD_TESTING)
add_executable(in_memory_span_data_test test/in_memory_span_data_test.cc)
add_executable(in_memory_span_exporter_test
test/in_memory_span_exporter_test.cc)
add_executable(in_memory_metric_data_test test/in_memory_metric_data_test.cc)
add_executable(in_memory_metric_exporter_test
test/in_memory_metric_exporter_test.cc)

target_link_libraries(
in_memory_span_data_test ${GTEST_BOTH_LIBRARIES} ${CMAKE_THREAD_LIBS_INIT}
opentelemetry_exporter_in_memory opentelemetry_resources)

target_link_libraries(
in_memory_metric_data_test ${GTEST_BOTH_LIBRARIES}
${CMAKE_THREAD_LIBS_INIT} opentelemetry_exporter_in_memory_metric
opentelemetry_resources)

target_link_libraries(
in_memory_span_exporter_test ${GTEST_BOTH_LIBRARIES}
${CMAKE_THREAD_LIBS_INIT} opentelemetry_exporter_in_memory
opentelemetry_resources)

target_link_libraries(
in_memory_metric_exporter_test ${GTEST_BOTH_LIBRARIES}
${CMAKE_THREAD_LIBS_INIT} opentelemetry_exporter_in_memory_metric
opentelemetry_resources)

gtest_add_tests(
TARGET in_memory_span_data_test
TEST_PREFIX exporter.
Expand All @@ -53,4 +83,12 @@ if(BUILD_TESTING)
TARGET in_memory_span_exporter_test
TEST_PREFIX exporter.
TEST_LIST in_memory_span_exporter_test)
gtest_add_tests(
TARGET in_memory_metric_data_test
TEST_PREFIX exporter.
TEST_LIST in_memory_metric_data_test)
gtest_add_tests(
TARGET in_memory_metric_exporter_test
TEST_PREFIX exporter.
TEST_LIST in_memory_metric_exporter_test)
endif()
Loading

0 comments on commit cb9e0d0

Please sign in to comment.