]>
Commit | Line | Data |
---|---|---|
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 | ||
12 | using namespace opentelemetry::sdk::trace; | |
13 | using namespace opentelemetry::sdk::common; | |
14 | using opentelemetry::exporter::memory::InMemorySpanData; | |
15 | using opentelemetry::exporter::memory::InMemorySpanExporter; | |
16 | using opentelemetry::trace::SpanContext; | |
17 | ||
18 | TEST(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. | |
38 | class RecordShutdownExporter final : public SpanExporter | |
39 | { | |
40 | public: | |
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 | ||
61 | private: | |
62 | int *shutdown_counter_; | |
63 | }; | |
64 | ||
65 | TEST(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 | } |