From 3b29c23436608050ecd42cda28ac0914bce4ea4b Mon Sep 17 00:00:00 2001 From: Oblivion Date: Sun, 9 Oct 2022 14:20:31 +0000 Subject: [PATCH 1/5] add e2e test to asan & tsan Ci --- examples/common/metrics_foo_library/foo_library.cc | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/examples/common/metrics_foo_library/foo_library.cc b/examples/common/metrics_foo_library/foo_library.cc index 3a323a0545..55edd9f01f 100644 --- a/examples/common/metrics_foo_library/foo_library.cc +++ b/examples/common/metrics_foo_library/foo_library.cc @@ -58,7 +58,7 @@ void foo_library::counter_example(const std::string &name) nostd::shared_ptr meter = provider->GetMeter(name, "1.2.0"); auto double_counter = meter->CreateDoubleCounter(counter_name); - while (true) + for (uint32_t i = 0; i < 20; ++i) { double val = (rand() % 700) + 1.1; double_counter->Add(val); @@ -73,7 +73,7 @@ void foo_library::observable_counter_example(const std::string &name) nostd::shared_ptr meter = provider->GetMeter(name, "1.2.0"); auto counter = meter->CreateDoubleObservableCounter(counter_name); counter->AddCallback(MeasurementFetcher::Fetcher, nullptr); - while (true) + for (uint32_t i = 0; i < 20; ++i) { std::this_thread::sleep_for(std::chrono::milliseconds(500)); } @@ -86,7 +86,7 @@ void foo_library::histogram_example(const std::string &name) nostd::shared_ptr meter = provider->GetMeter(name, "1.2.0"); auto histogram_counter = meter->CreateDoubleHistogram(histogram_name, "des", "unit"); auto context = opentelemetry::context::Context{}; - while (true) + for (uint32_t i = 0; i < 20; ++i) { double val = (rand() % 700) + 1.1; std::map labels = get_random_attr(); From 024a067869d2ed4507bcb4933e50a30d31d822ea Mon Sep 17 00:00:00 2001 From: Oblivion Date: Sun, 9 Oct 2022 14:20:43 +0000 Subject: [PATCH 2/5] ci --- ci/do_ci.sh | 2 ++ 1 file changed, 2 insertions(+) diff --git a/ci/do_ci.sh b/ci/do_ci.sh index bf775fa564..07776be682 100755 --- a/ci/do_ci.sh +++ b/ci/do_ci.sh @@ -290,9 +290,11 @@ elif [[ "$1" == "bazel.nortti" ]]; then exit 0 elif [[ "$1" == "bazel.asan" ]]; then bazel $BAZEL_STARTUP_OPTIONS test --config=asan $BAZEL_TEST_OPTIONS_ASYNC //... + bazel $BAZEL_STARTUP_OPTIONS run --config=asan $BAZEL_TEST_OPTIONS_ASYNC //examples/metrics_simple:metrics_ostream_example exit 0 elif [[ "$1" == "bazel.tsan" ]]; then bazel $BAZEL_STARTUP_OPTIONS test --config=tsan $BAZEL_TEST_OPTIONS_ASYNC //... + bazel $BAZEL_STARTUP_OPTIONS run --config=tsan $BAZEL_TEST_OPTIONS_ASYNC //examples/metrics_simple:metrics_ostream_example exit 0 elif [[ "$1" == "bazel.valgrind" ]]; then bazel $BAZEL_STARTUP_OPTIONS build $BAZEL_OPTIONS_ASYNC //... From 66d751b06a018a7b2adf24657b3d84b82b2ca622 Mon Sep 17 00:00:00 2001 From: Oblivion Date: Sat, 22 Oct 2022 08:54:06 +0000 Subject: [PATCH 3/5] use static ObservableInstrument --- ci/do_ci.sh | 10 ++++++---- examples/common/metrics_foo_library/foo_library.cc | 6 ++++-- 2 files changed, 10 insertions(+), 6 deletions(-) diff --git a/ci/do_ci.sh b/ci/do_ci.sh index 12a6c80a08..2123911b10 100755 --- a/ci/do_ci.sh +++ b/ci/do_ci.sh @@ -305,12 +305,14 @@ elif [[ "$1" == "bazel.nortti" ]]; then bazel $BAZEL_STARTUP_OPTIONS test --cxxopt=-fno-rtti --build_tag_filters=-jaeger $BAZEL_TEST_OPTIONS_ASYNC -- //... -//exporters/prometheus/... -//exporters/jaeger/... exit 0 elif [[ "$1" == "bazel.asan" ]]; then - bazel $BAZEL_STARTUP_OPTIONS test --config=asan $BAZEL_TEST_OPTIONS_ASYNC //... - bazel $BAZEL_STARTUP_OPTIONS run --config=asan $BAZEL_TEST_OPTIONS_ASYNC //examples/metrics_simple:metrics_ostream_example + # bazel $BAZEL_STARTUP_OPTIONS test --config=asan $BAZEL_TEST_OPTIONS_ASYNC //... + bazel $BAZEL_STARTUP_OPTIONS run --config=asan $BAZEL_TEST_OPTIONS_ASYNC \ + //examples/metrics_simple:metrics_ostream_example > /dev/null exit 0 elif [[ "$1" == "bazel.tsan" ]]; then - bazel $BAZEL_STARTUP_OPTIONS test --config=tsan $BAZEL_TEST_OPTIONS_ASYNC //... - bazel $BAZEL_STARTUP_OPTIONS run --config=tsan $BAZEL_TEST_OPTIONS_ASYNC //examples/metrics_simple:metrics_ostream_example + # bazel $BAZEL_STARTUP_OPTIONS test --config=tsan $BAZEL_TEST_OPTIONS_ASYNC //... + bazel $BAZEL_STARTUP_OPTIONS run --config=tsan $BAZEL_TEST_OPTIONS_ASYNC \ + //examples/metrics_simple:metrics_ostream_example > /dev/null exit 0 elif [[ "$1" == "bazel.valgrind" ]]; then bazel $BAZEL_STARTUP_OPTIONS build $BAZEL_OPTIONS_ASYNC //... diff --git a/examples/common/metrics_foo_library/foo_library.cc b/examples/common/metrics_foo_library/foo_library.cc index 55edd9f01f..adb45910ce 100644 --- a/examples/common/metrics_foo_library/foo_library.cc +++ b/examples/common/metrics_foo_library/foo_library.cc @@ -18,6 +18,8 @@ namespace metrics_api = opentelemetry::metrics; namespace { +static nostd::shared_ptr double_observable_counter; + std::map get_random_attr() { static const std::vector> labels = {{"key1", "value1"}, @@ -71,8 +73,8 @@ void foo_library::observable_counter_example(const std::string &name) std::string counter_name = name + "_observable_counter"; auto provider = metrics_api::Provider::GetMeterProvider(); nostd::shared_ptr meter = provider->GetMeter(name, "1.2.0"); - auto counter = meter->CreateDoubleObservableCounter(counter_name); - counter->AddCallback(MeasurementFetcher::Fetcher, nullptr); + double_observable_counter = meter->CreateDoubleObservableCounter(counter_name); + double_observable_counter->AddCallback(MeasurementFetcher::Fetcher, nullptr); for (uint32_t i = 0; i < 20; ++i) { std::this_thread::sleep_for(std::chrono::milliseconds(500)); From 54290e27db3eb1a6f97db2abe6de6691f1f0dfb7 Mon Sep 17 00:00:00 2001 From: Oblivion Date: Sat, 22 Oct 2022 09:02:19 +0000 Subject: [PATCH 4/5] revert CI script --- ci/do_ci.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/ci/do_ci.sh b/ci/do_ci.sh index 2123911b10..791cc3b48a 100755 --- a/ci/do_ci.sh +++ b/ci/do_ci.sh @@ -305,12 +305,12 @@ elif [[ "$1" == "bazel.nortti" ]]; then bazel $BAZEL_STARTUP_OPTIONS test --cxxopt=-fno-rtti --build_tag_filters=-jaeger $BAZEL_TEST_OPTIONS_ASYNC -- //... -//exporters/prometheus/... -//exporters/jaeger/... exit 0 elif [[ "$1" == "bazel.asan" ]]; then - # bazel $BAZEL_STARTUP_OPTIONS test --config=asan $BAZEL_TEST_OPTIONS_ASYNC //... + bazel $BAZEL_STARTUP_OPTIONS test --config=asan $BAZEL_TEST_OPTIONS_ASYNC //... bazel $BAZEL_STARTUP_OPTIONS run --config=asan $BAZEL_TEST_OPTIONS_ASYNC \ //examples/metrics_simple:metrics_ostream_example > /dev/null exit 0 elif [[ "$1" == "bazel.tsan" ]]; then - # bazel $BAZEL_STARTUP_OPTIONS test --config=tsan $BAZEL_TEST_OPTIONS_ASYNC //... + bazel $BAZEL_STARTUP_OPTIONS test --config=tsan $BAZEL_TEST_OPTIONS_ASYNC //... bazel $BAZEL_STARTUP_OPTIONS run --config=tsan $BAZEL_TEST_OPTIONS_ASYNC \ //examples/metrics_simple:metrics_ostream_example > /dev/null exit 0 From ec9ecc22a06a8b6bb9f8d194351f788193102e8c Mon Sep 17 00:00:00 2001 From: Oblivion Date: Sat, 22 Oct 2022 09:44:04 +0000 Subject: [PATCH 5/5] fix CI --- examples/common/metrics_foo_library/foo_library.cc | 12 +++++------- 1 file changed, 5 insertions(+), 7 deletions(-) diff --git a/examples/common/metrics_foo_library/foo_library.cc b/examples/common/metrics_foo_library/foo_library.cc index adb45910ce..4b4ea98fd2 100644 --- a/examples/common/metrics_foo_library/foo_library.cc +++ b/examples/common/metrics_foo_library/foo_library.cc @@ -22,11 +22,11 @@ static nostd::shared_ptr double_observable_co std::map get_random_attr() { - static const std::vector> labels = {{"key1", "value1"}, - {"key2", "value2"}, - {"key3", "value3"}, - {"key4", "value4"}, - {"key5", "value5"}}; + const std::vector> labels = {{"key1", "value1"}, + {"key2", "value2"}, + {"key3", "value3"}, + {"key4", "value4"}, + {"key5", "value5"}}; return std::map{labels[rand() % (labels.size() - 1)], labels[rand() % (labels.size() - 1)]}; } @@ -36,8 +36,6 @@ class MeasurementFetcher public: static void Fetcher(opentelemetry::metrics::ObserverResult observer_result, void * /* state */) { - std::map labels = get_random_attr(); - auto labelkv = opentelemetry::common::KeyValueIterableView{labels}; if (nostd::holds_alternative< nostd::shared_ptr>>(observer_result)) {