fix(telemetry): add getMeter override to SpanGuardScope test mock

getMeter() became a pure virtual on this branch (metric gap-fill), which
made the TestTelemetry mock abstract and broke the scope-leak test build.
Mirror NullTelemetry: serve an inert meter from a process-wide noop
provider. The scope tests exercise only tracing, so the meter is unused.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
Pratik Mankawde
2026-07-20 15:26:33 +01:00
parent de49319b31
commit 545b35d440

View File

@@ -19,6 +19,9 @@
#include <opentelemetry/context/context.h>
#include <opentelemetry/exporters/memory/in_memory_span_data.h>
#include <opentelemetry/exporters/memory/in_memory_span_exporter_factory.h>
#include <opentelemetry/metrics/meter.h>
#include <opentelemetry/metrics/meter_provider.h>
#include <opentelemetry/metrics/noop.h>
#include <opentelemetry/nostd/shared_ptr.h>
#include <opentelemetry/sdk/resource/resource.h>
#include <opentelemetry/sdk/trace/samplers/always_on_factory.h>
@@ -141,6 +144,19 @@ public:
return provider_->GetTracer(std::string(name));
}
/**
* @return A meter from a noop provider; the scope tests exercise only
* tracing, so metrics instruments are inert.
*/
opentelemetry::nostd::shared_ptr<opentelemetry::metrics::Meter>
getMeter(std::string_view name) override
{
static auto noopProvider =
opentelemetry::nostd::shared_ptr<opentelemetry::metrics::MeterProvider>(
new opentelemetry::metrics::NoopMeterProvider());
return noopProvider->GetMeter(std::string(name), std::string(kMeterVersion));
}
opentelemetry::nostd::shared_ptr<opentelemetry::trace::Span>
startSpan(std::string_view name, opentelemetry::trace::SpanKind kind) override
{