]> git.proxmox.com Git - ceph.git/blob - ceph/src/jaegertracing/opentelemetry-cpp/api/test/logs/provider_test.cc
update ceph source to reef 18.1.2
[ceph.git] / ceph / src / jaegertracing / opentelemetry-cpp / api / test / logs / provider_test.cc
1 // Copyright The OpenTelemetry Authors
2 // SPDX-License-Identifier: Apache-2.0
3
4 #ifdef ENABLE_LOGS_PREVIEW
5
6 # include <gtest/gtest.h>
7 # include <array>
8
9 # include "opentelemetry/logs/provider.h"
10 # include "opentelemetry/nostd/shared_ptr.h"
11
12 using opentelemetry::logs::Logger;
13 using opentelemetry::logs::LoggerProvider;
14 using opentelemetry::logs::Provider;
15 using opentelemetry::nostd::shared_ptr;
16 namespace nostd = opentelemetry::nostd;
17
18 class TestProvider : public LoggerProvider
19 {
20 nostd::shared_ptr<Logger> GetLogger(nostd::string_view logger_name,
21 nostd::string_view options,
22 nostd::string_view library_name,
23 nostd::string_view library_version = "",
24 nostd::string_view schema_url = "") override
25 {
26 return shared_ptr<Logger>(nullptr);
27 }
28
29 nostd::shared_ptr<Logger> GetLogger(nostd::string_view logger_name,
30 nostd::span<nostd::string_view> args,
31 nostd::string_view library_name,
32 nostd::string_view library_version = "",
33 nostd::string_view schema_url = "") override
34 {
35 return shared_ptr<Logger>(nullptr);
36 }
37 };
38
39 TEST(Provider, GetLoggerProviderDefault)
40 {
41 auto tf = Provider::GetLoggerProvider();
42 EXPECT_NE(nullptr, tf);
43 }
44
45 TEST(Provider, SetLoggerProvider)
46 {
47 auto tf = shared_ptr<LoggerProvider>(new TestProvider());
48 Provider::SetLoggerProvider(tf);
49 ASSERT_EQ(tf, Provider::GetLoggerProvider());
50 }
51
52 TEST(Provider, MultipleLoggerProviders)
53 {
54 auto tf = shared_ptr<LoggerProvider>(new TestProvider());
55 Provider::SetLoggerProvider(tf);
56 auto tf2 = shared_ptr<LoggerProvider>(new TestProvider());
57 Provider::SetLoggerProvider(tf2);
58
59 ASSERT_NE(Provider::GetLoggerProvider(), tf);
60 }
61
62 TEST(Provider, GetLogger)
63 {
64 auto tf = shared_ptr<LoggerProvider>(new TestProvider());
65 // tests GetLogger(name, version, schema)
66 const std::string schema_url{"https://opentelemetry.io/schemas/1.2.0"};
67 auto logger = tf->GetLogger("logger1", "", "opentelelemtry_library", "", schema_url);
68 EXPECT_EQ(nullptr, logger);
69
70 // tests GetLogger(name, arguments)
71
72 std::array<nostd::string_view, 1> sv{"string"};
73 nostd::span<nostd::string_view> args{sv};
74 auto logger2 = tf->GetLogger("logger2", args, "opentelelemtry_library", "", schema_url);
75 EXPECT_EQ(nullptr, logger2);
76 }
77 #endif