1 // Copyright The OpenTelemetry Authors
2 // SPDX-License-Identifier: Apache-2.0
4 #ifdef ENABLE_LOGS_PREVIEW
6 # include <gtest/gtest.h>
9 # include "opentelemetry/logs/provider.h"
10 # include "opentelemetry/nostd/shared_ptr.h"
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
;
18 class TestProvider
: public LoggerProvider
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
26 return shared_ptr
<Logger
>(nullptr);
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
35 return shared_ptr
<Logger
>(nullptr);
39 TEST(Provider
, GetLoggerProviderDefault
)
41 auto tf
= Provider::GetLoggerProvider();
42 EXPECT_NE(nullptr, tf
);
45 TEST(Provider
, SetLoggerProvider
)
47 auto tf
= shared_ptr
<LoggerProvider
>(new TestProvider());
48 Provider::SetLoggerProvider(tf
);
49 ASSERT_EQ(tf
, Provider::GetLoggerProvider());
52 TEST(Provider
, MultipleLoggerProviders
)
54 auto tf
= shared_ptr
<LoggerProvider
>(new TestProvider());
55 Provider::SetLoggerProvider(tf
);
56 auto tf2
= shared_ptr
<LoggerProvider
>(new TestProvider());
57 Provider::SetLoggerProvider(tf2
);
59 ASSERT_NE(Provider::GetLoggerProvider(), tf
);
62 TEST(Provider
, GetLogger
)
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
);
70 // tests GetLogger(name, arguments)
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
);