Files
rippled/src/tests/libxrpl/telemetry/TelemetryConfig.cpp
2026-02-27 18:15:34 +00:00

112 lines
3.7 KiB
C++

#include <xrpl/basics/BasicConfig.h>
#include <xrpl/telemetry/Telemetry.h>
#include <gtest/gtest.h>
#include <chrono>
using namespace xrpl;
TEST(TelemetryConfig, setup_defaults)
{
telemetry::Telemetry::Setup s;
EXPECT_FALSE(s.enabled);
EXPECT_EQ(s.serviceName, "rippled");
EXPECT_TRUE(s.serviceVersion.empty());
EXPECT_TRUE(s.serviceInstanceId.empty());
EXPECT_EQ(s.exporterType, "otlp_http");
EXPECT_EQ(s.exporterEndpoint, "http://localhost:4318/v1/traces");
EXPECT_FALSE(s.useTls);
EXPECT_TRUE(s.tlsCertPath.empty());
EXPECT_DOUBLE_EQ(s.samplingRatio, 1.0);
EXPECT_EQ(s.batchSize, 512u);
EXPECT_EQ(s.batchDelay, std::chrono::milliseconds{5000});
EXPECT_EQ(s.maxQueueSize, 2048u);
EXPECT_EQ(s.networkId, 0u);
EXPECT_EQ(s.networkType, "mainnet");
EXPECT_TRUE(s.traceTransactions);
EXPECT_TRUE(s.traceConsensus);
EXPECT_TRUE(s.traceRpc);
EXPECT_FALSE(s.tracePeer);
EXPECT_TRUE(s.traceLedger);
}
TEST(TelemetryConfig, parse_empty_section)
{
Section section;
auto setup = telemetry::setup_Telemetry(section, "nHUtest123", "2.0.0");
EXPECT_FALSE(setup.enabled);
EXPECT_EQ(setup.serviceName, "rippled");
EXPECT_EQ(setup.serviceVersion, "2.0.0");
EXPECT_EQ(setup.serviceInstanceId, "nHUtest123");
EXPECT_EQ(setup.exporterType, "otlp_http");
EXPECT_DOUBLE_EQ(setup.samplingRatio, 1.0);
EXPECT_TRUE(setup.traceRpc);
EXPECT_TRUE(setup.traceTransactions);
EXPECT_TRUE(setup.traceConsensus);
EXPECT_FALSE(setup.tracePeer);
EXPECT_TRUE(setup.traceLedger);
}
TEST(TelemetryConfig, parse_full_section)
{
Section section;
section.set("enabled", "1");
section.set("service_name", "my-rippled");
section.set("service_instance_id", "custom-id");
section.set("exporter", "otlp_http");
section.set("endpoint", "http://collector:4318/v1/traces");
section.set("use_tls", "1");
section.set("tls_ca_cert", "/etc/ssl/ca.pem");
section.set("sampling_ratio", "0.5");
section.set("batch_size", "256");
section.set("batch_delay_ms", "3000");
section.set("max_queue_size", "4096");
section.set("trace_transactions", "0");
section.set("trace_consensus", "0");
section.set("trace_rpc", "1");
section.set("trace_peer", "1");
section.set("trace_ledger", "0");
auto setup = telemetry::setup_Telemetry(section, "nHUtest123", "2.0.0");
EXPECT_TRUE(setup.enabled);
EXPECT_EQ(setup.serviceName, "my-rippled");
EXPECT_EQ(setup.serviceInstanceId, "custom-id");
EXPECT_EQ(setup.exporterType, "otlp_http");
EXPECT_EQ(setup.exporterEndpoint, "http://collector:4318/v1/traces");
EXPECT_TRUE(setup.useTls);
EXPECT_EQ(setup.tlsCertPath, "/etc/ssl/ca.pem");
EXPECT_DOUBLE_EQ(setup.samplingRatio, 0.5);
EXPECT_EQ(setup.batchSize, 256u);
EXPECT_EQ(setup.batchDelay, std::chrono::milliseconds{3000});
EXPECT_EQ(setup.maxQueueSize, 4096u);
EXPECT_FALSE(setup.traceTransactions);
EXPECT_FALSE(setup.traceConsensus);
EXPECT_TRUE(setup.traceRpc);
EXPECT_TRUE(setup.tracePeer);
EXPECT_FALSE(setup.traceLedger);
}
TEST(TelemetryConfig, null_telemetry_factory)
{
telemetry::Telemetry::Setup setup;
setup.enabled = false;
beast::Journal::Sink& sink = beast::Journal::getNullSink();
beast::Journal j(sink);
auto tel = telemetry::make_Telemetry(setup, j);
EXPECT_TRUE(tel != nullptr);
EXPECT_FALSE(tel->isEnabled());
EXPECT_FALSE(tel->shouldTraceRpc());
EXPECT_FALSE(tel->shouldTraceTransactions());
EXPECT_FALSE(tel->shouldTraceConsensus());
EXPECT_FALSE(tel->shouldTracePeer());
EXPECT_FALSE(tel->shouldTraceLedger());
// start/stop should be no-ops without crashing
tel->start();
tel->stop();
}