6#if defined(HAVE_OPENTELEMETRY_CPP) && HAVE_OPENTELEMETRY_CPP
7# include "opentelemetry/exporters/ostream/span_exporter_factory.h"
8# include "opentelemetry/sdk/trace/batch_span_processor.h"
9# include "opentelemetry/sdk/trace/batch_span_processor_factory.h"
10# include "opentelemetry/sdk/trace/batch_span_processor_options.h"
11# include "opentelemetry/sdk/trace/exporter.h"
12# include "opentelemetry/sdk/trace/tracer_provider_factory.h"
13# include "opentelemetry/trace/provider.h"
17#if defined(HAVE_PROTOBUF) && HAVE_PROTOBUF
22# if ((defined(__cplusplus) && __cplusplus >= 201704L) || (defined(_MSVC_LANG) && _MSVC_LANG >= 201704L))
23# pragma warning(disable : 4996)
24# pragma warning(disable : 4309)
26# pragma warning(disable : 5054)
31# pragma warning(disable : 4800)
33# pragma warning(disable : 4244)
34# pragma warning(disable : 4251)
35# pragma warning(disable : 4267)
38# if defined(__GNUC__) && !defined(__clang__) && !defined(__apple_build_version__)
39# if (__GNUC__ * 100 + __GNUC_MINOR__ * 10) >= 460
40# pragma GCC diagnostic push
42# pragma GCC diagnostic ignored "-Wunused-parameter"
43# pragma GCC diagnostic ignored "-Wtype-limits"
44# elif defined(__clang__) || defined(__apple_build_version__)
45# pragma clang diagnostic push
46# pragma clang diagnostic ignored "-Wunused-parameter"
47# pragma clang diagnostic ignored "-Wtype-limits"
50# include "test_pb.pb.h"
52# if defined(__GNUC__) && !defined(__clang__) && !defined(__apple_build_version__)
53# if (__GNUC__ * 100 + __GNUC_MINOR__ * 10) >= 460
54# pragma GCC diagnostic pop
56# elif defined(__clang__) || defined(__apple_build_version__)
57# pragma clang diagnostic pop
66#if defined(HAVE_OPENTELEMETRY_CPP) && HAVE_OPENTELEMETRY_CPP
68constexpr int kOpentelemetryNumSpans = 3;
72static void OpentelemetryInitTracer() {
73 auto exporter = opentelemetry::exporter::trace::OStreamSpanExporterFactory::Create();
77 opentelemetry::sdk::trace::BatchSpanProcessorOptions
options;
80 options.max_queue_size = kOpentelemetryNumSpans * 2 + 1;
82 options.schedule_delay_millis = std::chrono::milliseconds(3000);
84 options.max_export_batch_size = kOpentelemetryNumSpans;
86 auto processor = opentelemetry::sdk::trace::BatchSpanProcessorFactory::Create(std::move(exporter), options);
88 auto provider = opentelemetry::sdk::trace::TracerProviderFactory::Create(std::move(processor));
90 opentelemetry::trace::Provider::SetTracerProvider(
91 opentelemetry::nostd::shared_ptr<opentelemetry::trace::TracerProvider>{provider.release()});
94opentelemetry::nostd::shared_ptr<opentelemetry::trace::Tracer> GetTracer() {
95 auto provider = opentelemetry::trace::Provider::GetTracerProvider();
96 return provider->GetTracer(
"cmake-toolset-test");
99static void OpentelemetryStartAndEndSpans() {
100 for (
int i = 1; i <= kOpentelemetryNumSpans; ++i) {
101 std::string msg =
"cmake-toolset-test-batch: ";
102 msg +=
static_cast<char>(i +
'0');
103 GetTracer()->StartSpan(msg);
107static void OpentelemetryTest() {
108 OpentelemetryInitTracer();
109 OpentelemetryStartAndEndSpans();
110 OpentelemetryStartAndEndSpans();
113 OpentelemetryStartAndEndSpans();
121#if defined(HAVE_PROTOBUF) && HAVE_PROTOBUF
123 cmake_toolset::test_message msg;
126 msg.set_str(
"Hello World!");
128 std::cout << msg.DebugString() << std::endl;
130 std::cout <<
"Hello World!" << std::endl;
132#if defined(HAVE_OPENTELEMETRY_CPP) && HAVE_OPENTELEMETRY_CPP