]> git.proxmox.com Git - ceph.git/blame - ceph/src/jaegertracing/opentelemetry-cpp/sdk/test/trace/simple_processor_test.cc
update ceph source to reef 18.1.2
[ceph.git] / ceph / src / jaegertracing / opentelemetry-cpp / sdk / test / trace / simple_processor_test.cc
CommitLineData
1e59de90
TL
1// Copyright The OpenTelemetry Authors
2// SPDX-License-Identifier: Apache-2.0
3
4#include "opentelemetry/sdk/trace/simple_processor.h"
5#include "opentelemetry/exporters/memory/in_memory_span_exporter.h"
6#include "opentelemetry/nostd/span.h"
7#include "opentelemetry/sdk/trace/exporter.h"
8#include "opentelemetry/sdk/trace/span_data.h"
9
10#include <gtest/gtest.h>
11
12using namespace opentelemetry::sdk::trace;
13using namespace opentelemetry::sdk::common;
14using opentelemetry::exporter::memory::InMemorySpanData;
15using opentelemetry::exporter::memory::InMemorySpanExporter;
16using opentelemetry::trace::SpanContext;
17
18TEST(SimpleProcessor, ToInMemorySpanExporter)
19{
20 std::unique_ptr<InMemorySpanExporter> exporter(new InMemorySpanExporter());
21 std::shared_ptr<InMemorySpanData> span_data = exporter->GetData();
22 SimpleSpanProcessor processor(std::move(exporter));
23
24 auto recordable = processor.MakeRecordable();
25
26 processor.OnStart(*recordable, SpanContext::GetInvalid());
27
28 ASSERT_EQ(0, span_data->GetSpans().size());
29
30 processor.OnEnd(std::move(recordable));
31
32 ASSERT_EQ(1, span_data->GetSpans().size());
33
34 EXPECT_TRUE(processor.Shutdown());
35}
36
37// An exporter that does nothing but record (and give back ) the # of times Shutdown was called.
38class RecordShutdownExporter final : public SpanExporter
39{
40public:
41 RecordShutdownExporter(int *shutdown_counter) : shutdown_counter_(shutdown_counter) {}
42
43 std::unique_ptr<Recordable> MakeRecordable() noexcept override
44 {
45 return std::unique_ptr<Recordable>(new SpanData());
46 }
47
48 ExportResult Export(
49 const opentelemetry::nostd::span<std::unique_ptr<Recordable>> &recordables) noexcept override
50 {
51 return ExportResult::kSuccess;
52 }
53
54 bool Shutdown(
55 std::chrono::microseconds timeout = std::chrono::microseconds::max()) noexcept override
56 {
57 *shutdown_counter_ += 1;
58 return true;
59 }
60
61private:
62 int *shutdown_counter_;
63};
64
65TEST(SimpleSpanProcessor, ShutdownCalledOnce)
66{
67 int shutdowns = 0;
68 std::unique_ptr<RecordShutdownExporter> exporter(new RecordShutdownExporter(&shutdowns));
69 SimpleSpanProcessor processor(std::move(exporter));
70 EXPECT_EQ(0, shutdowns);
71 processor.Shutdown();
72 EXPECT_EQ(1, shutdowns);
73 processor.Shutdown();
74 EXPECT_EQ(1, shutdowns);
75}