2 * Copyright (c) 2018 Uber Technologies, Inc.
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
8 * http://www.apache.org/licenses/LICENSE-2.0
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
17 #include "jaegertracing/Tracer.h"
18 #include "jaegertracing/TracerFactory.h"
19 #include "jaegertracing/Constants.h"
20 #include "jaegertracing/testutils/EnvVariable.h"
21 #include <gtest/gtest.h>
23 namespace jaegertracing
{
24 #ifdef JAEGERTRACING_WITH_YAML_CPP
25 TEST(TracerFactory
, testInvalidConfig
)
27 const char* invalidConfigTestCases
[] = { "",
32 TracerFactory
tracerFactory(true);
33 for (auto&& invalidConfig
: invalidConfigTestCases
) {
34 std::string errorMessage
;
36 tracerFactory
.MakeTracer(invalidConfig
, errorMessage
);
37 ASSERT_FALSE(tracerMaybe
);
38 ASSERT_NE(errorMessage
, "");
42 TEST(TracerFactory
, testValidConfig
)
44 const char* config
= R
"(
46 "service_name
": "test
",
49 "type
": "probabilistic
",
54 "bufferFlushInterval
": 10,
56 "localAgentHostPort
": "127.0.0.1:6831"
59 "jaegerDebugHeader
": "debug
-id
",
60 "jaegerBaggageHeader
": "baggage
",
61 "TraceContextHeaderName
": "trace
-id
",
62 "traceBaggageHeaderPrefix
": "testctx
-"
64 "baggage_restrictions
": {
65 "denyBaggageOnInitializationFailure
": false,
66 "hostPort
": "127.0.0.1:5778",
70 TracerFactory
tracerFactory(true);
71 std::string errorMessage
;
72 auto tracerMaybe
= tracerFactory
.MakeTracer(config
, errorMessage
);
73 ASSERT_EQ(errorMessage
, "");
74 ASSERT_TRUE(tracerMaybe
);
77 TEST(TracerFactory
, testWithoutReadFromEnv
)
79 const char* config
= "";
80 testutils::EnvVariable::setEnv("JAEGER_SERVICE_NAME", "AService");
81 TracerFactory
tracerFactory(false);
82 std::string errorMessage
;
83 auto tracerMaybe
= tracerFactory
.MakeTracer(config
, errorMessage
);
84 ASSERT_FALSE(tracerMaybe
);
85 ASSERT_NE(errorMessage
, "");
87 testutils::EnvVariable::setEnv("JAEGER_SERVICE_NAME", "");
90 TEST(TracerFactory
, testWithReadFromEnv
)
92 const char* config
= "";
93 testutils::EnvVariable::setEnv("JAEGER_SERVICE_NAME", "AService");
94 TracerFactory
tracerFactory(true);
95 std::string errorMessage
;
96 auto tracerMaybe
= tracerFactory
.MakeTracer(config
, errorMessage
);
97 ASSERT_EQ(errorMessage
, "");
98 ASSERT_TRUE(tracerMaybe
);
100 auto tracer
= tracerMaybe
.value();
101 const auto jaegerTracer
= std::dynamic_pointer_cast
<jaegertracing::Tracer
>(tracer
);
102 ASSERT_EQ(std::string("AService"), jaegerTracer
->serviceName());
104 testutils::EnvVariable::setEnv("JAEGER_SERVICE_NAME", "");
107 TEST(TracerFactory
, testEnvTakesPrecedence
)
110 const char* config
= R
"(
112 "service_name
": "Ignored
"
114 testutils::EnvVariable::setEnv("JAEGER_SERVICE_NAME", "test");
115 TracerFactory
tracerFactory(true);
116 std::string errorMessage
;
117 auto tracerMaybe
= tracerFactory
.MakeTracer(config
, errorMessage
);
118 ASSERT_EQ(errorMessage
, "");
119 ASSERT_TRUE(tracerMaybe
);
121 auto tracer
= tracerMaybe
.value();
122 const auto jaegerTracer
= std::dynamic_pointer_cast
<jaegertracing::Tracer
>(tracer
);
123 ASSERT_EQ(std::string("test"), jaegerTracer
->serviceName());
125 testutils::EnvVariable::setEnv("JAEGER_SERVICE_NAME", "");
128 TEST(TracerFactory
, failsWithoutYAML
)
130 const char* config
= "";
131 TracerFactory
tracerFactory(true);
132 std::string errorMessage
;
133 auto tracerMaybe
= tracerFactory
.MakeTracer(config
, errorMessage
);
134 ASSERT_NE(errorMessage
, "");
135 ASSERT_FALSE(tracerMaybe
);
137 #endif // JAEGERTRACING_WITH_YAML_CPP
138 } // namespace jaegertracing