summaryrefslogtreecommitdiffstats
path: root/src/jaegertracing/opentelemetry-cpp/examples/simple
diff options
context:
space:
mode:
authorDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-21 11:54:28 +0000
committerDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-21 11:54:28 +0000
commite6918187568dbd01842d8d1d2c808ce16a894239 (patch)
tree64f88b554b444a49f656b6c656111a145cbbaa28 /src/jaegertracing/opentelemetry-cpp/examples/simple
parentInitial commit. (diff)
downloadceph-e6918187568dbd01842d8d1d2c808ce16a894239.tar.xz
ceph-e6918187568dbd01842d8d1d2c808ce16a894239.zip
Adding upstream version 18.2.2.upstream/18.2.2
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'src/jaegertracing/opentelemetry-cpp/examples/simple')
-rw-r--r--src/jaegertracing/opentelemetry-cpp/examples/simple/BUILD15
-rw-r--r--src/jaegertracing/opentelemetry-cpp/examples/simple/CMakeLists.txt6
-rw-r--r--src/jaegertracing/opentelemetry-cpp/examples/simple/README.md12
-rw-r--r--src/jaegertracing/opentelemetry-cpp/examples/simple/main.cc41
4 files changed, 74 insertions, 0 deletions
diff --git a/src/jaegertracing/opentelemetry-cpp/examples/simple/BUILD b/src/jaegertracing/opentelemetry-cpp/examples/simple/BUILD
new file mode 100644
index 000000000..6a5a76646
--- /dev/null
+++ b/src/jaegertracing/opentelemetry-cpp/examples/simple/BUILD
@@ -0,0 +1,15 @@
+cc_binary(
+ name = "example_simple",
+ srcs = [
+ "main.cc",
+ ],
+ tags = [
+ "examples",
+ "ostream",
+ ],
+ deps = [
+ "//api",
+ "//examples/common/foo_library:common_foo_library",
+ "//exporters/ostream:ostream_span_exporter",
+ ],
+)
diff --git a/src/jaegertracing/opentelemetry-cpp/examples/simple/CMakeLists.txt b/src/jaegertracing/opentelemetry-cpp/examples/simple/CMakeLists.txt
new file mode 100644
index 000000000..4368039c1
--- /dev/null
+++ b/src/jaegertracing/opentelemetry-cpp/examples/simple/CMakeLists.txt
@@ -0,0 +1,6 @@
+include_directories(${CMAKE_SOURCE_DIR}/exporters/ostream/include)
+
+add_executable(example_simple main.cc)
+target_link_libraries(
+ example_simple ${CMAKE_THREAD_LIBS_INIT} common_foo_library
+ opentelemetry_trace opentelemetry_exporter_ostream_span)
diff --git a/src/jaegertracing/opentelemetry-cpp/examples/simple/README.md b/src/jaegertracing/opentelemetry-cpp/examples/simple/README.md
new file mode 100644
index 000000000..b3c449c53
--- /dev/null
+++ b/src/jaegertracing/opentelemetry-cpp/examples/simple/README.md
@@ -0,0 +1,12 @@
+
+# Simple Trace Example
+
+In this example, the application in `main.cc` initializes and registers a tracer
+provider from the [OpenTelemetry
+SDK](https://github.com/open-telemetry/opentelemetry-cpp). The application then
+calls a `foo_library` which has been instrumented using the [OpenTelemetry
+API](https://github.com/open-telemetry/opentelemetry-cpp/tree/main/api).
+Resulting telemetry is directed to stdout through the StdoutSpanExporter.
+
+See [CONTRIBUTING.md](../../CONTRIBUTING.md) for instructions on building and
+running the example.
diff --git a/src/jaegertracing/opentelemetry-cpp/examples/simple/main.cc b/src/jaegertracing/opentelemetry-cpp/examples/simple/main.cc
new file mode 100644
index 000000000..d022e5c23
--- /dev/null
+++ b/src/jaegertracing/opentelemetry-cpp/examples/simple/main.cc
@@ -0,0 +1,41 @@
+// Copyright The OpenTelemetry Authors
+// SPDX-License-Identifier: Apache-2.0
+
+#include "opentelemetry/sdk/trace/simple_processor.h"
+#include "opentelemetry/sdk/trace/tracer_provider.h"
+#include "opentelemetry/trace/provider.h"
+
+// Using an exporter that simply dumps span data to stdout.
+#ifdef BAZEL_BUILD
+# include "examples/common/foo_library/foo_library.h"
+#else
+# include "foo_library/foo_library.h"
+#endif
+#include "opentelemetry/exporters/ostream/span_exporter.h"
+
+namespace trace_api = opentelemetry::trace;
+namespace trace_sdk = opentelemetry::sdk::trace;
+namespace nostd = opentelemetry::nostd;
+namespace
+{
+void initTracer()
+{
+ auto exporter = std::unique_ptr<trace_sdk::SpanExporter>(
+ new opentelemetry::exporter::trace::OStreamSpanExporter);
+ auto processor = std::unique_ptr<trace_sdk::SpanProcessor>(
+ new trace_sdk::SimpleSpanProcessor(std::move(exporter)));
+ auto provider = nostd::shared_ptr<trace_api::TracerProvider>(
+ new trace_sdk::TracerProvider(std::move(processor)));
+
+ // Set the global trace provider
+ trace_api::Provider::SetTracerProvider(provider);
+}
+} // namespace
+
+int main()
+{
+ // Removing this line will leave the default noop TracerProvider in place.
+ initTracer();
+
+ foo_library();
+}