X-Git-Url: https://git.proxmox.com/?a=blobdiff_plain;f=ceph%2Fsrc%2Fjaegertracing%2Fopentracing-cpp%2Fmocktracer%2Finclude%2Fopentracing%2Fmocktracer%2Ftracer.h;fp=ceph%2Fsrc%2Fjaegertracing%2Fopentracing-cpp%2Fmocktracer%2Finclude%2Fopentracing%2Fmocktracer%2Ftracer.h;h=a6d1c5fbd94354f339d66c3f8ac94ea2487bc870;hb=f67539c23b11f3b8a2ecaeeddf7a403ae1c442a8;hp=0000000000000000000000000000000000000000;hpb=64a4c04e6850c6d9086e4c37f57c4eada541b05e;p=ceph.git diff --git a/ceph/src/jaegertracing/opentracing-cpp/mocktracer/include/opentracing/mocktracer/tracer.h b/ceph/src/jaegertracing/opentracing-cpp/mocktracer/include/opentracing/mocktracer/tracer.h new file mode 100644 index 000000000..a6d1c5fbd --- /dev/null +++ b/ceph/src/jaegertracing/opentracing-cpp/mocktracer/include/opentracing/mocktracer/tracer.h @@ -0,0 +1,86 @@ +#ifndef OPENTRACING_MOCKTRACER_TRACER_H +#define OPENTRACING_MOCKTRACER_TRACER_H + +#include +#include +#include +#include +#include +#include + +namespace opentracing { +BEGIN_OPENTRACING_ABI_NAMESPACE +namespace mocktracer { + +struct PropagationOptions { + // Specifies what key to use when injecting and extracting span context. + std::string propagation_key = "x-ot-span-context"; + + // If inject_error_code is non-zero, MockTracer::Inject fails with + // inject_error_code. + std::error_code inject_error_code; + + // If extract_error_code is non-zero, MockTracer::Extract fails with + // extract_error_code. + std::error_code extract_error_code; +}; + +struct MockTracerOptions { + // Recorder is sent spans when they are finished. If nullptr, all finished + // spans are dropped. + std::unique_ptr recorder; + + // PropagationOptions allows you to customize how the mocktracer's SpanContext + // is propagated. + PropagationOptions propagation_options; +}; + +// MockTracer provides implements the OpenTracing Tracer API. It provides +// convenient access to finished spans in such a way as to support testing. +class OPENTRACING_MOCK_TRACER_API MockTracer + : public Tracer, + public std::enable_shared_from_this { + public: + explicit MockTracer(MockTracerOptions&& options); + + std::unique_ptr StartSpanWithOptions( + string_view operation_name, const StartSpanOptions& options) const + noexcept override; + + void Close() noexcept override; + + const std::vector& spans() const noexcept { return spans_; } + + using Tracer::Extract; + using Tracer::Inject; + + expected Inject(const SpanContext& sc, + std::ostream& writer) const override; + + expected Inject(const SpanContext& sc, + const TextMapWriter& writer) const override; + + expected Inject(const SpanContext& sc, + const HTTPHeadersWriter& writer) const override; + + expected> Extract( + std::istream& reader) const override; + + expected> Extract( + const TextMapReader& reader) const override; + + expected> Extract( + const HTTPHeadersReader& reader) const override; + + private: + std::unique_ptr recorder_; + PropagationOptions propagation_options_; + std::mutex mutex_; + std::vector spans_; +}; + +} // namespace mocktracer +END_OPENTRACING_ABI_NAMESPACE +} // namespace opentracing + +#endif // OPENTRACING_MOCKTRACER_TRACER_H