]> git.proxmox.com Git - ceph.git/blob - ceph/src/jaegertracing/jaeger-client-cpp/src/jaegertracing/TracerFactoryTest.cpp
update source to Ceph Pacific 16.2.2
[ceph.git] / ceph / src / jaegertracing / jaeger-client-cpp / src / jaegertracing / TracerFactoryTest.cpp
1 /*
2 * Copyright (c) 2018 Uber Technologies, Inc.
3 *
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
7 *
8 * http://www.apache.org/licenses/LICENSE-2.0
9 *
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.
15 */
16
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>
22
23 namespace jaegertracing {
24 #ifdef JAEGERTRACING_WITH_YAML_CPP
25 TEST(TracerFactory, testInvalidConfig)
26 {
27 const char* invalidConfigTestCases[] = { "",
28 "abc: {",
29 R"({
30 "service_name": {}
31 })" };
32 TracerFactory tracerFactory(true);
33 for (auto&& invalidConfig : invalidConfigTestCases) {
34 std::string errorMessage;
35 auto tracerMaybe =
36 tracerFactory.MakeTracer(invalidConfig, errorMessage);
37 ASSERT_FALSE(tracerMaybe);
38 ASSERT_NE(errorMessage, "");
39 }
40 }
41
42 TEST(TracerFactory, testValidConfig)
43 {
44 const char* config = R"(
45 {
46 "service_name": "test",
47 "disabled": true,
48 "sampler": {
49 "type": "probabilistic",
50 "param": 0.001
51 },
52 "reporter": {
53 "queueSize": 100,
54 "bufferFlushInterval": 10,
55 "logSpans": false,
56 "localAgentHostPort": "127.0.0.1:6831"
57 },
58 "headers": {
59 "jaegerDebugHeader": "debug-id",
60 "jaegerBaggageHeader": "baggage",
61 "TraceContextHeaderName": "trace-id",
62 "traceBaggageHeaderPrefix": "testctx-"
63 },
64 "baggage_restrictions": {
65 "denyBaggageOnInitializationFailure": false,
66 "hostPort": "127.0.0.1:5778",
67 "refreshInterval": 60
68 }
69 })";
70 TracerFactory tracerFactory(true);
71 std::string errorMessage;
72 auto tracerMaybe = tracerFactory.MakeTracer(config, errorMessage);
73 ASSERT_EQ(errorMessage, "");
74 ASSERT_TRUE(tracerMaybe);
75 }
76
77 TEST(TracerFactory, testWithoutReadFromEnv)
78 {
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, "");
86
87 testutils::EnvVariable::setEnv("JAEGER_SERVICE_NAME", "");
88 }
89
90 TEST(TracerFactory, testWithReadFromEnv)
91 {
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);
99
100 auto tracer = tracerMaybe.value();
101 const auto jaegerTracer = std::dynamic_pointer_cast<jaegertracing::Tracer>(tracer);
102 ASSERT_EQ(std::string("AService"), jaegerTracer->serviceName());
103
104 testutils::EnvVariable::setEnv("JAEGER_SERVICE_NAME", "");
105 }
106
107 TEST(TracerFactory, testEnvTakesPrecedence)
108 {
109
110 const char* config = R"(
111 {
112 "service_name": "Ignored"
113 })";
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);
120
121 auto tracer = tracerMaybe.value();
122 const auto jaegerTracer = std::dynamic_pointer_cast<jaegertracing::Tracer>(tracer);
123 ASSERT_EQ(std::string("test"), jaegerTracer->serviceName());
124
125 testutils::EnvVariable::setEnv("JAEGER_SERVICE_NAME", "");
126 }
127 #else
128 TEST(TracerFactory, failsWithoutYAML)
129 {
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);
136 }
137 #endif // JAEGERTRACING_WITH_YAML_CPP
138 } // namespace jaegertracing