]> git.proxmox.com Git - ceph.git/blob - ceph/src/jaegertracing/opentracing-cpp/mocktracer/test/tracer_factory_test.cpp
buildsys: switch source download to quincy
[ceph.git] / ceph / src / jaegertracing / opentracing-cpp / mocktracer / test / tracer_factory_test.cpp
1 #include <opentracing/mocktracer/tracer_factory.h>
2 #include <cstdio>
3 #include <random>
4 #include <string>
5
6 #define CATCH_CONFIG_MAIN
7 #include <opentracing/catch2/catch.hpp>
8 using namespace opentracing;
9 using namespace mocktracer;
10
11 TEST_CASE("tracer_factory") {
12 MockTracerFactory tracer_factory;
13 std::string error_message;
14
15 SECTION("Creating a tracer from a nullptr yields an error.") {
16 const char* configuration = nullptr;
17 auto tracer_maybe = tracer_factory.MakeTracer(configuration, error_message);
18 REQUIRE(!tracer_maybe);
19 REQUIRE(!error_message.empty());
20 }
21
22 SECTION("Creating a tracer from an empty string yields an error.") {
23 const char* configuration = "";
24 auto tracer_maybe = tracer_factory.MakeTracer(configuration, error_message);
25 REQUIRE(!tracer_maybe);
26 REQUIRE(!error_message.empty());
27 }
28
29 SECTION("Creating a tracer from invalid JSON yields an error.") {
30 const char* configuration = "{ abc";
31 auto tracer_maybe = tracer_factory.MakeTracer(configuration, error_message);
32 REQUIRE(!tracer_maybe);
33 REQUIRE(!error_message.empty());
34 }
35
36 SECTION(
37 "Creating a tracer from valid JSON but an invalid configuration "
38 "yields an error.") {
39 const char* configuration = R"({ "abc": 123 })";
40 auto tracer_maybe = tracer_factory.MakeTracer(configuration, error_message);
41 REQUIRE(!tracer_maybe);
42 REQUIRE(!error_message.empty());
43 REQUIRE(tracer_maybe.error() == invalid_configuration_error);
44 }
45
46 SECTION("Creating a tracer with an invalid output_file yields an error.") {
47 const char* configuration = R"({ "output_file": "" })";
48 auto tracer_maybe = tracer_factory.MakeTracer(configuration, error_message);
49 REQUIRE(!tracer_maybe);
50 REQUIRE(!error_message.empty());
51 REQUIRE(tracer_maybe.error() == invalid_configuration_error);
52 }
53
54 SECTION("Creating a tracer with a valid config succeeds.") {
55 std::string span_filename{"spans."};
56 const auto random_id = std::random_device{}();
57 span_filename.append(std::to_string(random_id));
58 std::string configuration = R"({ "output_file": ")";
59 configuration.append(span_filename);
60 configuration.append(R"(" })");
61
62 auto tracer_maybe =
63 tracer_factory.MakeTracer(configuration.c_str(), error_message);
64 REQUIRE(tracer_maybe);
65
66 std::remove(span_filename.c_str());
67 }
68 }